[macOS] Simplify main thread initialization
https://bugs.webkit.org/show_bug.cgi?id=203001

Reviewed by Geoff Garen.

Source/WebCore:

* bridge/objc/WebScriptObject.mm:
(+[WebScriptObject initialize]):
* platform/cocoa/SharedBufferCocoa.mm:
(+[WebCoreSharedBufferData initialize]):

Source/WebKitLegacy/mac:

* History/WebBackForwardList.mm:
(+[WebBackForwardList initialize]):
* History/WebHistoryItem.mm:
(+[WebHistoryItem initialize]):
* Misc/WebCache.mm:
(+[WebCache initialize]):
* Misc/WebElementDictionary.mm:
(+[WebElementDictionary initialize]):
* Misc/WebIconDatabase.mm:
* Misc/WebStringTruncator.mm:
(+[WebStringTruncator initialize]):
* Plugins/Hosted/WebHostedNetscapePluginView.mm:
(+[WebHostedNetscapePluginView initialize]):
* Plugins/WebBaseNetscapePluginView.mm:
* Plugins/WebBasePluginPackage.mm:
(+[WebBasePluginPackage initialize]):
* Plugins/WebNetscapePluginView.mm:
(+[WebNetscapePluginView initialize]):
* WebCoreSupport/WebEditorClient.mm:
(+[WebUndoStep initialize]):
* WebCoreSupport/WebFrameLoaderClient.mm:
(+[WebFramePolicyListener initialize]):
* WebView/WebArchive.mm:
(+[WebArchivePrivate initialize]):
* WebView/WebDataSource.mm:
(+[WebDataSource initialize]):
* WebView/WebHTMLView.mm:
(+[WebHTMLViewPrivate initialize]):
(+[WebHTMLView initialize]):
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
* WebView/WebResource.mm:
(+[WebResourcePrivate initialize]):
* WebView/WebTextIterator.mm:
(+[WebTextIteratorPrivate initialize]):
* WebView/WebView.mm:
(+[WebView initialize]):
* WebView/WebViewData.mm:
(+[WebViewPrivate initialize]):

Source/WTF:

Simplify main thread initialization on macOS by always using pthread main as main thread.
The complexity is now isolated to the USE(WEB_THREAD) code path.

This patch also adds a debug assertion in WTF::initializeWebThreadPlatform() to make sure
it gets called on the actual main thread. In release, it will log a fault message indicating
it was called on the wrong thread.

* wtf/MainThread.cpp:
* wtf/MainThread.h:
* wtf/RefCounted.h:
(WTF::RefCountedBase::RefCountedBase):
(WTF::RefCountedBase::applyRefDerefThreadingCheck const):
* wtf/cocoa/MainThreadCocoa.mm:
(WTF::initializeMainThreadPlatform):
(WTF::scheduleDispatchFunctionsOnMainThread):
(WTF::initializeWebThreadPlatform):
(WTF::canAccessThreadLocalDataForThread):
(WTF::isMainThread):
* wtf/generic/MainThreadGeneric.cpp:
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringImpl::createCFString):
* wtf/win/MainThreadWin.cpp:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251164 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog
index 7f2ab31..004754c 100644
--- a/Source/WTF/ChangeLog
+++ b/Source/WTF/ChangeLog
@@ -1,3 +1,33 @@
+2019-10-15  Chris Dumez  <cdumez@apple.com>
+
+        [macOS] Simplify main thread initialization
+        https://bugs.webkit.org/show_bug.cgi?id=203001
+
+        Reviewed by Geoff Garen.
+
+        Simplify main thread initialization on macOS by always using pthread main as main thread.
+        The complexity is now isolated to the USE(WEB_THREAD) code path.
+
+        This patch also adds a debug assertion in WTF::initializeWebThreadPlatform() to make sure
+        it gets called on the actual main thread. In release, it will log a fault message indicating
+        it was called on the wrong thread.
+
+        * wtf/MainThread.cpp:
+        * wtf/MainThread.h:
+        * wtf/RefCounted.h:
+        (WTF::RefCountedBase::RefCountedBase):
+        (WTF::RefCountedBase::applyRefDerefThreadingCheck const):
+        * wtf/cocoa/MainThreadCocoa.mm:
+        (WTF::initializeMainThreadPlatform):
+        (WTF::scheduleDispatchFunctionsOnMainThread):
+        (WTF::initializeWebThreadPlatform):
+        (WTF::canAccessThreadLocalDataForThread):
+        (WTF::isMainThread):
+        * wtf/generic/MainThreadGeneric.cpp:
+        * wtf/text/cf/StringImplCF.cpp:
+        (WTF::StringImpl::createCFString):
+        * wtf/win/MainThreadWin.cpp:
+
 2019-10-14  Tim Horton  <timothy_horton@apple.com>
 
         Unify sources for bindings more densely
diff --git a/Source/WTF/wtf/MainThread.cpp b/Source/WTF/wtf/MainThread.cpp
index 9e9943d..bc8cfc7 100644
--- a/Source/WTF/wtf/MainThread.cpp
+++ b/Source/WTF/wtf/MainThread.cpp
@@ -61,26 +61,6 @@
     });
 }
 
-#if PLATFORM(COCOA)
-#if !USE(WEB_THREAD)
-void initializeMainThreadToProcessMainThread()
-{
-    std::call_once(initializeKey, [] {
-        initializeThreading();
-        initializeMainThreadToProcessMainThreadPlatform();
-    });
-}
-#else
-void initializeWebThread()
-{
-    static std::once_flag initializeKey;
-    std::call_once(initializeKey, [] {
-        initializeWebThreadPlatform();
-    });
-}
-#endif // !USE(WEB_THREAD)
-#endif // PLATFORM(COCOA)
-
 #if !USE(WEB_THREAD)
 bool canAccessThreadLocalDataForThread(Thread& thread)
 {
diff --git a/Source/WTF/wtf/MainThread.h b/Source/WTF/wtf/MainThread.h
index 785aefb..9c3f79f 100644
--- a/Source/WTF/wtf/MainThread.h
+++ b/Source/WTF/wtf/MainThread.h
@@ -53,8 +53,6 @@
 WTF_EXPORT_PRIVATE void setMainThreadCallbacksPaused(bool paused);
 
 WTF_EXPORT_PRIVATE bool isMainThread();
-WTF_EXPORT_PRIVATE bool isMainThreadIfInitialized();
-WTF_EXPORT_PRIVATE bool isMainThreadInitialized();
 
 WTF_EXPORT_PRIVATE bool canAccessThreadLocalDataForThread(Thread&);
 
@@ -67,7 +65,6 @@
 WTF_EXPORT_PRIVATE bool isUIThread();
 WTF_EXPORT_PRIVATE void initializeWebThread();
 WTF_EXPORT_PRIVATE void initializeApplicationUIThread();
-void initializeWebThreadPlatform();
 #else
 inline bool isWebThread() { return isMainThread(); }
 inline bool isUIThread() { return isMainThread(); }
@@ -80,16 +77,6 @@
 void scheduleDispatchFunctionsOnMainThread();
 void dispatchFunctionsFromMainThread();
 
-#if OS(DARWIN) && !USE(GLIB)
-#if !USE(WEB_THREAD)
-// This version of initializeMainThread sets up the main thread as corresponding
-// to the process's main thread, and not necessarily the thread that calls this
-// function. It should only be used as a legacy aid for Mac WebKit.
-WTF_EXPORT_PRIVATE void initializeMainThreadToProcessMainThread();
-#endif // !USE(WEB_THREAD)
-void initializeMainThreadToProcessMainThreadPlatform();
-#endif
-
 } // namespace WTF
 
 using WTF::callOnMainThread;
diff --git a/Source/WTF/wtf/RefCounted.h b/Source/WTF/wtf/RefCounted.h
index fca5ccd..9416e37 100644
--- a/Source/WTF/wtf/RefCounted.h
+++ b/Source/WTF/wtf/RefCounted.h
@@ -91,8 +91,7 @@
     RefCountedBase()
         : m_refCount(1)
 #if !ASSERT_DISABLED
-        , m_isOwnedByMainThread(isMainThreadIfInitialized())
-        , m_areThreadingChecksEnabled(isMainThreadInitialized())
+        , m_isOwnedByMainThread(isMainThread())
 #endif
 #if CHECK_REF_COUNTED_LIFECYCLE
         , m_deletionHasBegun(false)
@@ -106,7 +105,7 @@
 #if !ASSERT_DISABLED
         if (hasOneRef()) {
             // Likely an ownership transfer across threads that may be safe.
-            m_isOwnedByMainThread = isMainThreadIfInitialized();
+            m_isOwnedByMainThread = isMainThread();
         } else if (areThreadingChecksEnabledGlobally && m_areThreadingChecksEnabled) {
             // If you hit this assertion, it means that the RefCounted object was ref/deref'd
             // from both the main thread and another in a way that is likely concurrent and unsafe.
diff --git a/Source/WTF/wtf/cocoa/MainThreadCocoa.mm b/Source/WTF/wtf/cocoa/MainThreadCocoa.mm
index 58b6f91..27eb00d 100644
--- a/Source/WTF/wtf/cocoa/MainThreadCocoa.mm
+++ b/Source/WTF/wtf/cocoa/MainThreadCocoa.mm
@@ -56,49 +56,38 @@
 
 @end
 
+#define LOG_CHANNEL_PREFIX Log
+
 namespace WTF {
 
+#if RELEASE_LOG_DISABLED
+WTFLogChannel LogThreading = { WTFLogChannelState::On, "Threading", WTFLogLevel::Error };
+#else
+WTFLogChannel LogThreading = { WTFLogChannelState::On, "Threading", WTFLogLevel::Error, LOG_CHANNEL_WEBKIT_SUBSYSTEM, OS_LOG_DEFAULT };
+#endif
+
+
 static JSWTFMainThreadCaller* staticMainThreadCaller;
 static bool isTimerPosted; // This is only accessed on the main thread.
-static bool mainThreadEstablishedAsPthreadMain { false };
+
+#if USE(WEB_THREAD)
+// When the Web thread is enabled, we consider it to be the main thread, not pthread main.
 static pthread_t mainThreadPthread { nullptr };
 static NSThread* mainThreadNSThread { nullptr };
 
-#if USE(WEB_THREAD)
 static Thread* sApplicationUIThread;
 static Thread* sWebThread;
 #endif
 
 void initializeMainThreadPlatform()
 {
-    ASSERT(!staticMainThreadCaller);
-    staticMainThreadCaller = [[JSWTFMainThreadCaller alloc] init];
-
-#if !USE(WEB_THREAD)
-    mainThreadEstablishedAsPthreadMain = false;
-    mainThreadPthread = pthread_self();
-    mainThreadNSThread = [NSThread currentThread];
-#else
-    mainThreadEstablishedAsPthreadMain = true;
-    ASSERT(!mainThreadPthread);
-    ASSERT(!mainThreadNSThread);
-#endif
-}
-
-#if !USE(WEB_THREAD)
-void initializeMainThreadToProcessMainThreadPlatform()
-{
     if (!pthread_main_np())
-        NSLog(@"WebKit Threading Violation - initial use of WebKit from a secondary thread.");
+        RELEASE_LOG_FAULT(Threading, "WebKit Threading Violation - initial use of WebKit from a secondary thread.");
+    ASSERT(pthread_main_np());
 
     ASSERT(!staticMainThreadCaller);
     staticMainThreadCaller = [[JSWTFMainThreadCaller alloc] init];
-
-    mainThreadEstablishedAsPthreadMain = true;
-    mainThreadPthread = 0;
-    mainThreadNSThread = nil;
 }
-#endif // !USE(WEB_THREAD)
 
 static void timerFired(CFRunLoopTimerRef timer, void*)
 {
@@ -124,20 +113,25 @@
 void scheduleDispatchFunctionsOnMainThread()
 {
     ASSERT(staticMainThreadCaller);
-
+    
+#if USE(WEB_THREAD)
     if (isWebThread()) {
         postTimer();
         return;
     }
-    
-    if (mainThreadEstablishedAsPthreadMain) {
-        ASSERT(!mainThreadNSThread);
-        [staticMainThreadCaller performSelectorOnMainThread:@selector(call) withObject:nil waitUntilDone:NO];
+
+    if (mainThreadPthread) {
+        [staticMainThreadCaller performSelector:@selector(call) onThread:mainThreadNSThread withObject:nil waitUntilDone:NO];
         return;
     }
+#else
+    if (isMainThread()) {
+        postTimer();
+        return;
+    }
+#endif
 
-    ASSERT(mainThreadNSThread);
-    [staticMainThreadCaller performSelector:@selector(call) onThread:mainThreadNSThread withObject:nil waitUntilDone:NO];
+    [staticMainThreadCaller performSelectorOnMainThread:@selector(call) withObject:nil waitUntilDone:NO];
 }
 
 void dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded(void (^block)())
@@ -166,6 +160,7 @@
 }
 
 #if USE(WEB_THREAD)
+
 static bool webThreadIsUninitializedOrLockedOrDisabled()
 {
     return !WebCoreWebThreadIsLockedOrDisabled || WebCoreWebThreadIsLockedOrDisabled();
@@ -176,16 +171,6 @@
     return (isWebThread() || pthread_main_np()) && webThreadIsUninitializedOrLockedOrDisabled();
 }
 
-bool isMainThreadIfInitialized()
-{
-    return isMainThread();
-}
-
-bool isMainThreadInitialized()
-{
-    return true;
-}
-
 bool isUIThread()
 {
     return pthread_main_np();
@@ -203,15 +188,15 @@
     sApplicationUIThread = &Thread::current();
 }
 
-void initializeWebThreadPlatform()
+void initializeWebThread()
 {
-    ASSERT(!pthread_main_np());
-
-    mainThreadEstablishedAsPthreadMain = false;
-    mainThreadPthread = pthread_self();
-    mainThreadNSThread = [NSThread currentThread];
-
-    sWebThread = &Thread::current();
+    static std::once_flag initializeKey;
+    std::call_once(initializeKey, [] {
+        ASSERT(!pthread_main_np());
+        mainThreadPthread = pthread_self();
+        mainThreadNSThread = [NSThread currentThread];
+        sWebThread = &Thread::current();
+    });
 }
 
 bool canAccessThreadLocalDataForThread(Thread& thread)
@@ -225,28 +210,12 @@
 
     return false;
 }
+
 #else
+
 bool isMainThread()
 {
-    if (mainThreadEstablishedAsPthreadMain) {
-        ASSERT(!mainThreadPthread);
-        return pthread_main_np();
-    }
-
-    ASSERT(mainThreadPthread);
-    return pthread_equal(pthread_self(), mainThreadPthread);
-}
-
-bool isMainThreadIfInitialized()
-{
-    if (mainThreadEstablishedAsPthreadMain)
-        return pthread_main_np();
-    return pthread_equal(pthread_self(), mainThreadPthread);
-}
-
-bool isMainThreadInitialized()
-{
-    return mainThreadEstablishedAsPthreadMain || mainThreadPthread;
+    return pthread_main_np();
 }
 
 #endif // USE(WEB_THREAD)
diff --git a/Source/WTF/wtf/generic/MainThreadGeneric.cpp b/Source/WTF/wtf/generic/MainThreadGeneric.cpp
index 88bf18f..64060c4 100644
--- a/Source/WTF/wtf/generic/MainThreadGeneric.cpp
+++ b/Source/WTF/wtf/generic/MainThreadGeneric.cpp
@@ -89,16 +89,6 @@
 #endif
 }
 
-bool isMainThreadIfInitialized()
-{
-    return isMainThread();
-}
-
-bool isMainThreadInitialized()
-{
-    return true;
-}
-
 void scheduleDispatchFunctionsOnMainThread()
 {
     // Use a RunLoop::Timer instead of RunLoop::dispatch() to be able to use a different priority and
diff --git a/Source/WTF/wtf/text/cf/StringImplCF.cpp b/Source/WTF/wtf/text/cf/StringImplCF.cpp
index c3003ab..53f4983 100644
--- a/Source/WTF/wtf/text/cf/StringImplCF.cpp
+++ b/Source/WTF/wtf/text/cf/StringImplCF.cpp
@@ -122,7 +122,7 @@
 
 RetainPtr<CFStringRef> StringImpl::createCFString()
 {
-    if (!m_length || !isMainThreadIfInitialized()) {
+    if (!m_length || !isMainThread()) {
         if (is8Bit())
             return adoptCF(CFStringCreateWithBytes(0, reinterpret_cast<const UInt8*>(characters8()), m_length, kCFStringEncodingISOLatin1, false));
         return adoptCF(CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(characters16()), m_length));
diff --git a/Source/WTF/wtf/win/MainThreadWin.cpp b/Source/WTF/wtf/win/MainThreadWin.cpp
index 26cc1f5..dff947e 100644
--- a/Source/WTF/wtf/win/MainThreadWin.cpp
+++ b/Source/WTF/wtf/win/MainThreadWin.cpp
@@ -77,16 +77,6 @@
     return mainThread == Thread::currentID();
 }
 
-bool isMainThreadIfInitialized()
-{
-    return isMainThread();
-}
-
-bool isMainThreadInitialized()
-{
-    return true;
-}
-
 void scheduleDispatchFunctionsOnMainThread()
 {
     ASSERT(threadingWindowHandle);
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 21166b7..9205e66 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2019-10-15  Chris Dumez  <cdumez@apple.com>
+
+        [macOS] Simplify main thread initialization
+        https://bugs.webkit.org/show_bug.cgi?id=203001
+
+        Reviewed by Geoff Garen.
+
+        * bridge/objc/WebScriptObject.mm:
+        (+[WebScriptObject initialize]):
+        * platform/cocoa/SharedBufferCocoa.mm:
+        (+[WebCoreSharedBufferData initialize]):
+
 2019-10-15  Peng Liu  <peng.liu6@apple.com>
 
         [Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture() / Document.exitPictureInPicture()
diff --git a/Source/WebCore/bridge/objc/WebScriptObject.mm b/Source/WebCore/bridge/objc/WebScriptObject.mm
index 6a2fa80..0508eea 100644
--- a/Source/WebCore/bridge/objc/WebScriptObject.mm
+++ b/Source/WebCore/bridge/objc/WebScriptObject.mm
@@ -167,7 +167,7 @@
 {
 #if !USE(WEB_THREAD)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
+    WTF::initializeMainThread();
 #endif
 }
 
diff --git a/Source/WebCore/platform/cocoa/SharedBufferCocoa.mm b/Source/WebCore/platform/cocoa/SharedBufferCocoa.mm
index 478d190..faeb8f5 100644
--- a/Source/WebCore/platform/cocoa/SharedBufferCocoa.mm
+++ b/Source/WebCore/platform/cocoa/SharedBufferCocoa.mm
@@ -45,7 +45,7 @@
 {
 #if !USE(WEB_THREAD)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
+    WTF::initializeMainThread();
 #endif // !USE(WEB_THREAD)
 }
 
diff --git a/Source/WebKitLegacy/mac/ChangeLog b/Source/WebKitLegacy/mac/ChangeLog
index 898a14f..9ef9a70 100644
--- a/Source/WebKitLegacy/mac/ChangeLog
+++ b/Source/WebKitLegacy/mac/ChangeLog
@@ -1,3 +1,50 @@
+2019-10-15  Chris Dumez  <cdumez@apple.com>
+
+        [macOS] Simplify main thread initialization
+        https://bugs.webkit.org/show_bug.cgi?id=203001
+
+        Reviewed by Geoff Garen.
+
+        * History/WebBackForwardList.mm:
+        (+[WebBackForwardList initialize]):
+        * History/WebHistoryItem.mm:
+        (+[WebHistoryItem initialize]):
+        * Misc/WebCache.mm:
+        (+[WebCache initialize]):
+        * Misc/WebElementDictionary.mm:
+        (+[WebElementDictionary initialize]):
+        * Misc/WebIconDatabase.mm:
+        * Misc/WebStringTruncator.mm:
+        (+[WebStringTruncator initialize]):
+        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
+        (+[WebHostedNetscapePluginView initialize]):
+        * Plugins/WebBaseNetscapePluginView.mm:
+        * Plugins/WebBasePluginPackage.mm:
+        (+[WebBasePluginPackage initialize]):
+        * Plugins/WebNetscapePluginView.mm:
+        (+[WebNetscapePluginView initialize]):
+        * WebCoreSupport/WebEditorClient.mm:
+        (+[WebUndoStep initialize]):
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (+[WebFramePolicyListener initialize]):
+        * WebView/WebArchive.mm:
+        (+[WebArchivePrivate initialize]):
+        * WebView/WebDataSource.mm:
+        (+[WebDataSource initialize]):
+        * WebView/WebHTMLView.mm:
+        (+[WebHTMLViewPrivate initialize]):
+        (+[WebHTMLView initialize]):
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        * WebView/WebResource.mm:
+        (+[WebResourcePrivate initialize]):
+        * WebView/WebTextIterator.mm:
+        (+[WebTextIteratorPrivate initialize]):
+        * WebView/WebView.mm:
+        (+[WebView initialize]):
+        * WebView/WebViewData.mm:
+        (+[WebViewPrivate initialize]):
+
 2019-10-15  Peng Liu  <peng.liu6@apple.com>
 
         [Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture() / Document.exitPictureInPicture()
diff --git a/Source/WebKitLegacy/mac/History/WebBackForwardList.mm b/Source/WebKitLegacy/mac/History/WebBackForwardList.mm
index 8ebbc40..df62da9 100644
--- a/Source/WebKitLegacy/mac/History/WebBackForwardList.mm
+++ b/Source/WebKitLegacy/mac/History/WebBackForwardList.mm
@@ -98,7 +98,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/History/WebHistoryItem.mm b/Source/WebKitLegacy/mac/History/WebHistoryItem.mm
index 86f9d3d..c7c027b 100644
--- a/Source/WebKitLegacy/mac/History/WebHistoryItem.mm
+++ b/Source/WebKitLegacy/mac/History/WebHistoryItem.mm
@@ -125,7 +125,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/Misc/WebCache.mm b/Source/WebKitLegacy/mac/Misc/WebCache.mm
index 5019423..b50b21c 100644
--- a/Source/WebKitLegacy/mac/Misc/WebCache.mm
+++ b/Source/WebKitLegacy/mac/Misc/WebCache.mm
@@ -65,7 +65,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/Misc/WebElementDictionary.mm b/Source/WebKitLegacy/mac/Misc/WebElementDictionary.mm
index f7c23be..bd23641 100644
--- a/Source/WebKitLegacy/mac/Misc/WebElementDictionary.mm
+++ b/Source/WebKitLegacy/mac/Misc/WebElementDictionary.mm
@@ -68,7 +68,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/Misc/WebIconDatabase.mm b/Source/WebKitLegacy/mac/Misc/WebIconDatabase.mm
index 6a1e78a..b1ee658 100644
--- a/Source/WebKitLegacy/mac/Misc/WebIconDatabase.mm
+++ b/Source/WebKitLegacy/mac/Misc/WebIconDatabase.mm
@@ -98,7 +98,6 @@
 + (void)initialize
 {
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 }
 
diff --git a/Source/WebKitLegacy/mac/Misc/WebStringTruncator.mm b/Source/WebKitLegacy/mac/Misc/WebStringTruncator.mm
index 2685579..8d81e01 100644
--- a/Source/WebKitLegacy/mac/Misc/WebStringTruncator.mm
+++ b/Source/WebKitLegacy/mac/Misc/WebStringTruncator.mm
@@ -51,7 +51,7 @@
 + (void)initialize
 {
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
+    WTF::initializeMainThread();
 }
 
 + (NSString *)centerTruncateString:(NSString *)string toWidth:(float)maxWidth
diff --git a/Source/WebKitLegacy/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm b/Source/WebKitLegacy/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
index ee19c56..63801e1 100644
--- a/Source/WebKitLegacy/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
+++ b/Source/WebKitLegacy/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
@@ -107,7 +107,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
     sendUserChangeNotifications();
diff --git a/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm b/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm
index c16c6c2..4f899ed 100644
--- a/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm
+++ b/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm
@@ -71,7 +71,6 @@
 + (void)initialize
 {
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
     WebKit::sendUserChangeNotifications();
 }
diff --git a/Source/WebKitLegacy/mac/Plugins/WebBasePluginPackage.mm b/Source/WebKitLegacy/mac/Plugins/WebBasePluginPackage.mm
index 2c38e07..71e4365 100644
--- a/Source/WebKitLegacy/mac/Plugins/WebBasePluginPackage.mm
+++ b/Source/WebKitLegacy/mac/Plugins/WebBasePluginPackage.mm
@@ -61,7 +61,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginView.mm b/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginView.mm
index 160663e..ddd9ecf 100644
--- a/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginView.mm
+++ b/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginView.mm
@@ -163,7 +163,6 @@
 + (void)initialize
 {
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
     sendUserChangeNotifications();
 }
diff --git a/Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm b/Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm
index 51c6ab4..13c8def 100644
--- a/Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm
+++ b/Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm
@@ -136,7 +136,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm b/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
index 460c9a2..2e35375 100644
--- a/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
+++ b/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
@@ -2351,7 +2351,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/WebView/WebArchive.mm b/Source/WebKitLegacy/mac/WebView/WebArchive.mm
index 0f5b1ad..0da70bb 100644
--- a/Source/WebKitLegacy/mac/WebView/WebArchive.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebArchive.mm
@@ -69,7 +69,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/WebView/WebDataSource.mm b/Source/WebKitLegacy/mac/WebView/WebDataSource.mm
index 9bbcfff..1029c1d 100644
--- a/Source/WebKitLegacy/mac/WebView/WebDataSource.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebDataSource.mm
@@ -153,7 +153,6 @@
     if (self == [WebDataSource class]) {
 #if !PLATFORM(IOS_FAMILY)
         JSC::initializeThreading();
-        WTF::initializeMainThreadToProcessMainThread();
         RunLoop::initializeMainRunLoop();
 #endif
     }
diff --git a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm
index 347826a..bc774d7 100644
--- a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm
@@ -1033,7 +1033,6 @@
     // And some of this work is likely redundant since +[WebHTMLView initialize] is guaranteed to run first.
 
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 
     if (!oldSetCursorForMouseLocationIMP) {
@@ -2584,7 +2583,6 @@
     [NSApp registerServicesMenuSendTypes:[[self class] _selectionPasteboardTypes] returnTypes:[[self class] _insertablePasteboardTypes]];
 
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 }
 
diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
index 9934890..811b3a5 100644
--- a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
@@ -387,7 +387,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
     bool attachmentElementEnabled = MacApplication::isAppleMail();
 #else
diff --git a/Source/WebKitLegacy/mac/WebView/WebResource.mm b/Source/WebKitLegacy/mac/WebView/WebResource.mm
index 66fa6f8..826a438 100644
--- a/Source/WebKitLegacy/mac/WebView/WebResource.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebResource.mm
@@ -68,7 +68,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/WebView/WebTextIterator.mm b/Source/WebKitLegacy/mac/WebView/WebTextIterator.mm
index e363b85..476b871 100644
--- a/Source/WebKitLegacy/mac/WebView/WebTextIterator.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebTextIterator.mm
@@ -47,7 +47,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }
diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm
index 559ed84..830d216 100644
--- a/Source/WebKitLegacy/mac/WebView/WebView.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebView.mm
@@ -5417,7 +5417,6 @@
 
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 
diff --git a/Source/WebKitLegacy/mac/WebView/WebViewData.mm b/Source/WebKitLegacy/mac/WebView/WebViewData.mm
index 8238a4e..c3fcc30 100644
--- a/Source/WebKitLegacy/mac/WebView/WebViewData.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebViewData.mm
@@ -168,7 +168,6 @@
 {
 #if !PLATFORM(IOS_FAMILY)
     JSC::initializeThreading();
-    WTF::initializeMainThreadToProcessMainThread();
     RunLoop::initializeMainRunLoop();
 #endif
 }