diff options
Diffstat (limited to 'Source/JavaScriptCore/wtf/ThreadingPthreads.cpp')
-rw-r--r-- | Source/JavaScriptCore/wtf/ThreadingPthreads.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/ThreadingPthreads.cpp b/Source/JavaScriptCore/wtf/ThreadingPthreads.cpp index aa63f33..0ffcfe2 100644 --- a/Source/JavaScriptCore/wtf/ThreadingPthreads.cpp +++ b/Source/JavaScriptCore/wtf/ThreadingPthreads.cpp @@ -55,6 +55,10 @@ #include <wtf/PassOwnPtr.h> #endif +#if OS(MAC_OS_X) && !defined(BUILDING_ON_LEOPARD) +#include <objc/objc-auto.h> +#endif + namespace WTF { typedef HashMap<ThreadIdentifier, pthread_t> ThreadMap; @@ -190,6 +194,12 @@ void initializeCurrentThreadInternal(const char* threadName) UNUSED_PARAM(threadName); #endif +#if OS(MAC_OS_X) && !defined(BUILDING_ON_LEOPARD) + // All threads that potentially use APIs above the BSD layer must be registered with the Objective-C + // garbage collector in case API implementations use garbage-collected memory. + objc_registerThreadWithCollector(); +#endif + ThreadIdentifier id = identifierByPthreadHandle(pthread_self()); ASSERT(id); ThreadIdentifierData::initialize(id); |