Ignore:
Timestamp:
May 2, 2008, 3:29:47 AM (17 years ago)
Author:
[email protected]
Message:

Reviewed by Darin.

Make JavaScriptGlue and JavaScriptCore API functions implicitly call initializeThreading
for the sake of non-WebKit clients.

JavaScriptCore:

  • API/JSBase.cpp: (JSGarbageCollect):
  • API/JSContextRef.cpp: (JSGlobalContextCreate): These are the JavaScriptCore API bottlenecks. There are a few other JSStringRef and JSClassRef functions that can be called earlier, but they do not do anything that requires initializeThreading.
  • kjs/InitializeThreading.cpp: (KJS::doInitializeThreading): (KJS::initializeThreading): On Darwin, make the initialization happen under pthread_once, since there is no guarantee that non-WebKit clients won't try to call this function re-entrantly.
  • kjs/InitializeThreading.h:
  • wtf/Threading.h: Spell out initializeThreading contract.
  • wtf/ThreadingPthreads.cpp: (WTF::isMainThread): Make sure that results are correct on Darwin, even if threading was initialized from a secondary thread.

JavaScriptGlue:

  • JavaScriptGlue.cpp: (JSRunCreate): (JSCollect): (JSCreateJSArrayFromCFArray): (JSLockInterpreter): These are all possible JavaScriptGlue entry points.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/ThreadingPthreads.cpp

    r31939 r32808  
    4040Mutex* atomicallyInitializedStaticMutex;
    4141
    42 static ThreadIdentifier mainThreadIdentifier;
     42static ThreadIdentifier mainThreadIdentifier; // More precisely, the thread that was the first to call initializeThreading().
    4343
    4444static Mutex& threadMapMutex()
     
    151151bool isMainThread()
    152152{
     153#if PLATFORM(DARWIN)
     154    return pthread_main_np();
     155#else
    153156    return currentThread() == mainThreadIdentifier;
     157#endif
    154158}
    155159
Note: See TracChangeset for help on using the changeset viewer.