diff --git a/lldb/include/lldb/Host/macosx/HostThreadMacOSX.h b/lldb/include/lldb/Host/macosx/HostThreadMacOSX.h index 4e41119d97c6a..0299be3874085 100644 --- a/lldb/include/lldb/Host/macosx/HostThreadMacOSX.h +++ b/lldb/include/lldb/Host/macosx/HostThreadMacOSX.h @@ -17,8 +17,7 @@ class HostThreadMacOSX : public HostThreadPosix { friend class ThreadLauncher; public: - HostThreadMacOSX(); - HostThreadMacOSX(lldb::thread_t thread); + using HostThreadPosix::HostThreadPosix; protected: static lldb::thread_result_t ThreadCreateTrampoline(lldb::thread_arg_t arg); diff --git a/lldb/source/Host/macosx/objcxx/HostThreadMacOSX.mm b/lldb/source/Host/macosx/objcxx/HostThreadMacOSX.mm index 4f7e7ab248ad6..b24fe187b1a55 100644 --- a/lldb/source/Host/macosx/objcxx/HostThreadMacOSX.mm +++ b/lldb/source/Host/macosx/objcxx/HostThreadMacOSX.mm @@ -7,62 +7,14 @@ //===----------------------------------------------------------------------===// #include "lldb/Host/macosx/HostThreadMacOSX.h" -#include "lldb/Host/Host.h" - #include #include -#include - using namespace lldb_private; - -static pthread_once_t g_thread_create_once = PTHREAD_ONCE_INIT; -static pthread_key_t g_thread_create_key = 0; - -namespace { -class MacOSXDarwinThread { -public: - MacOSXDarwinThread() { m_pool = [[NSAutoreleasePool alloc] init]; } - - ~MacOSXDarwinThread() { - if (m_pool) { - [m_pool drain]; - m_pool = nil; - } - } - - static void PThreadDestructor(void *v) { - if (v) - delete static_cast(v); - ::pthread_setspecific(g_thread_create_key, NULL); - } - -protected: - NSAutoreleasePool *m_pool = nil; - -private: - MacOSXDarwinThread(const MacOSXDarwinThread &) = delete; - const MacOSXDarwinThread &operator=(const MacOSXDarwinThread &) = delete; -}; -} // namespace - -static void InitThreadCreated() { - ::pthread_key_create(&g_thread_create_key, - MacOSXDarwinThread::PThreadDestructor); -} - -HostThreadMacOSX::HostThreadMacOSX() : HostThreadPosix() {} - -HostThreadMacOSX::HostThreadMacOSX(lldb::thread_t thread) - : HostThreadPosix(thread) {} - lldb::thread_result_t HostThreadMacOSX::ThreadCreateTrampoline(lldb::thread_arg_t arg) { - ::pthread_once(&g_thread_create_once, InitThreadCreated); - if (g_thread_create_key) { - ::pthread_setspecific(g_thread_create_key, new MacOSXDarwinThread()); + @autoreleasepool { + return HostThreadPosix::ThreadCreateTrampoline(arg); } - - return HostThreadPosix::ThreadCreateTrampoline(arg); }