X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/9dae56ea45a0f5f8136a5c93d6f3a7f99399ca73..14957cd040308e3eeec43d26bae5d76da13fcd85:/runtime/InitializeThreading.cpp?ds=inline diff --git a/runtime/InitializeThreading.cpp b/runtime/InitializeThreading.cpp index cda9fb1..27611b7 100644 --- a/runtime/InitializeThreading.cpp +++ b/runtime/InitializeThreading.cpp @@ -29,36 +29,42 @@ #include "config.h" #include "InitializeThreading.h" -#include "JSImmediate.h" -#include "Collector.h" -#include "DateMath.h" +#include "Heap.h" #include "dtoa.h" #include "Identifier.h" #include "JSGlobalObject.h" #include "UString.h" +#include #include +#include using namespace WTF; namespace JSC { -#if PLATFORM(DARWIN) && ENABLE(JSC_MULTIPLE_THREADS) +#if OS(DARWIN) && ENABLE(JSC_MULTIPLE_THREADS) static pthread_once_t initializeThreadingKeyOnce = PTHREAD_ONCE_INIT; #endif static void initializeThreadingOnce() { + // StringImpl::empty() does not construct its static string in a threadsafe fashion, + // so ensure it has been initialized from here. + StringImpl::empty(); + WTF::initializeThreading(); - initializeUString(); + wtfThreadData(); + JSGlobalData::storeVPtrs(); #if ENABLE(JSC_MULTIPLE_THREADS) s_dtoaP5Mutex = new Mutex; - initDateMath(); + initializeDates(); + RegisterFile::initializeThreading(); #endif } void initializeThreading() { -#if PLATFORM(DARWIN) && ENABLE(JSC_MULTIPLE_THREADS) +#if OS(DARWIN) && ENABLE(JSC_MULTIPLE_THREADS) pthread_once(&initializeThreadingKeyOnce, initializeThreadingOnce); #else static bool initializedThreading = false;