#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 <wtf/DateMath.h>
#include <wtf/Threading.h>
+#include <wtf/WTFThreadData.h>
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;