diff options
Diffstat (limited to 'source/Host/macosx/HostThreadMacOSX.mm')
-rw-r--r-- | source/Host/macosx/HostThreadMacOSX.mm | 94 |
1 files changed, 31 insertions, 63 deletions
diff --git a/source/Host/macosx/HostThreadMacOSX.mm b/source/Host/macosx/HostThreadMacOSX.mm index c84a78efd9e6..c5051cdf30d7 100644 --- a/source/Host/macosx/HostThreadMacOSX.mm +++ b/source/Host/macosx/HostThreadMacOSX.mm @@ -13,90 +13,58 @@ #include <CoreFoundation/CoreFoundation.h> #include <Foundation/Foundation.h> -#include <objc/objc-auto.h> #include <pthread.h> using namespace lldb_private; -namespace -{ +namespace { pthread_once_t g_thread_create_once = PTHREAD_ONCE_INIT; pthread_key_t g_thread_create_key = 0; -class MacOSXDarwinThread -{ - public: - MacOSXDarwinThread() - : m_pool(nil) - { - // Register our thread with the collector if garbage collection is enabled. - if (objc_collectingEnabled()) - { -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5 - // On Leopard and earlier there is no way objc_registerThreadWithCollector - // function, so we do it manually. - auto_zone_register_thread(auto_zone()); -#else - // On SnowLeopard and later we just call the thread registration function. - objc_registerThreadWithCollector(); -#endif - } - else - { - m_pool = [[NSAutoreleasePool alloc] init]; - } - } +class MacOSXDarwinThread { +public: + MacOSXDarwinThread() : m_pool(nil) { + m_pool = [[NSAutoreleasePool alloc] init]; + } - ~MacOSXDarwinThread() - { - if (m_pool) - { - [m_pool drain]; - m_pool = nil; - } + ~MacOSXDarwinThread() { + if (m_pool) { + [m_pool drain]; + m_pool = nil; } + } - static void - PThreadDestructor(void *v) - { - if (v) - delete static_cast<MacOSXDarwinThread *>(v); - ::pthread_setspecific(g_thread_create_key, NULL); - } + static void PThreadDestructor(void *v) { + if (v) + delete static_cast<MacOSXDarwinThread *>(v); + ::pthread_setspecific(g_thread_create_key, NULL); + } - protected: - NSAutoreleasePool *m_pool; +protected: + NSAutoreleasePool *m_pool; - private: - DISALLOW_COPY_AND_ASSIGN(MacOSXDarwinThread); +private: + DISALLOW_COPY_AND_ASSIGN(MacOSXDarwinThread); }; -void -InitThreadCreated() -{ - ::pthread_key_create(&g_thread_create_key, MacOSXDarwinThread::PThreadDestructor); +void InitThreadCreated() { + ::pthread_key_create(&g_thread_create_key, + MacOSXDarwinThread::PThreadDestructor); } } // namespace -HostThreadMacOSX::HostThreadMacOSX() - : HostThreadPosix() -{ -} +HostThreadMacOSX::HostThreadMacOSX() : HostThreadPosix() {} HostThreadMacOSX::HostThreadMacOSX(lldb::thread_t thread) - : HostThreadPosix(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()); - } +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()); + } - return HostThreadPosix::ThreadCreateTrampoline(arg); + return HostThreadPosix::ThreadCreateTrampoline(arg); } |