Ignore:
Timestamp:
Apr 26, 2010, 3:38:55 PM (15 years ago)
Author:
[email protected]
Message:

Fix for https://bugs.webkit.org/show_bug.cgi?id=38097
Disentangle initializing the main thread from initializing threading

Reviewed by Maciej Stachowiak.

JavaScriptCore:

This is the first step in getting rid of the WEB_THREAD #define and
paving the way to allowing mac both WebKit and WebKit2 to use the same
WebCore.

  • JavaScriptCore.exp: Export initializeMainThread and initializeMainThreadToProcessMainThread.
  • JavaScriptCore.xcodeproj/project.pbxproj: Sort files.
  • wtf/MainThread.cpp:

(WTF::mainThreadInitializationMutex):
(WTF::mainThreadFunctionQueueMutex):
(WTF::initializeMainThread):
(WTF::deprecatedInitializeMainThread):

  • wtf/MainThread.h:

Added Mac only initializeMainThreadToProcessMainThread which sets up callOnMainThread
and isMainThead calls to assume that WebCore's main thread is also the
process's main thread. Since it is possible that both initializeMainThread
and initializeMainThreadToProcessMainThread could be called, the first one called
wins (either will work).

  • wtf/Threading.h: Moved to top of file.
  • wtf/ThreadingPthreads.cpp:

(WTF::initializeThreading): Remove call to initializeMainThread.

  • wtf/ThreadingWin.cpp:

(WTF::initializeThreading): Ditto.

  • wtf/gtk/ThreadingGtk.cpp:

(WTF::initializeThreading): Ditto.

  • wtf/mac/MainThreadMac.mm:

(WTF::initializeMainThreadPlatform):
(WTF::initializeMainThreadToProcessMainThread):
(WTF::scheduleDispatchFunctionsOnMainThread):
(WTF::isMainThread):
Add runtime switch between the old behavior of using the system's main
thread and a stored pointer to the main thread. Tiger always uses the
system's main thread.

  • wtf/qt/ThreadingQt.cpp:

(WTF::initializeThreading): Remove call to initializeMainThread.

  • wtf/win/MainThreadWin.cpp:

(WTF::initializeMainThreadPlatform): Add call to initializeCurrentThreadInternal
removed from initializeThreading.

WebCore:

  • WebCore.xcodeproj/project.pbxproj: Sort files.
  • accessibility/mac/AccessibilityObjectWrapper.mm: Remove unnessary

+initialize method. The AccessibilityObjectWrapper has no data members
that need to be derefed, so it does not need to be finalized on the main
thread.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initializeThreading): Add call to initializeMainThread.

  • bindings/objc/WebScriptObject.mm:

(+[WebScriptObject initialize]): Add call to initializeMainThreadToProcessMainThread.

  • bindings/v8/ScriptController.cpp:

(WebCore::ScriptController::initializeThreading): Add call to initializeMainThread.

  • platform/mac/SharedBufferMac.mm:

(+[WebCoreSharedBufferData initialize]): Add call to initializeMainThreadToProcessMainThread.

WebKit/chromium:

  • src/WebKit.cpp:

(WebKit::initialize): Add call to initializeMainThread.

  • src/WebViewImpl.cpp:

(WebKit::WebViewImpl::WebViewImpl): Ditto.

WebKit/gtk:

  • webkit/webkitprivate.cpp:

(webkit_init): Add call to initializeMainThread.

WebKit/mac:

Calls initializeMainThreadToProcessMainThread since there is no way to ensure
that the initialize method will be called on the main thread.

  • Carbon/CarbonWindowAdapter.mm:

(+[CarbonWindowAdapter initialize]): Add call to initializeMainThreadToProcessMainThread.

  • History/WebBackForwardList.mm:

(+[WebBackForwardList initialize]): Ditto.

  • History/WebHistoryItem.mm:

(+[WebHistoryItem initialize]): Ditto.

  • Misc/WebElementDictionary.mm:

(+[WebElementDictionary initialize]): Ditto.

  • Misc/WebIconDatabase.mm:

(+[WebIconDatabase initialize]): Ditto.

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(+[WebHostedNetscapePluginView initialize]): Ditto.

  • Plugins/WebBaseNetscapePluginView.mm:

(+[WebBaseNetscapePluginView initialize]): Ditto.

  • Plugins/WebBasePluginPackage.mm:

(+[WebBasePluginPackage initialize]): Ditto.

  • Plugins/WebNetscapePluginView.mm:

(+[WebNetscapePluginView initialize]): Ditto.

  • WebCoreSupport/WebEditorClient.mm:

(+[WebEditCommand initialize]): Ditto.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(+[WebFramePolicyListener initialize]): Ditto.

  • WebView/WebArchive.mm:

(+[WebArchivePrivate initialize]): Ditto.

  • WebView/WebDataSource.mm:

(+[WebDataSourcePrivate initialize]): Ditto.

  • WebView/WebHTMLView.mm:

(+[WebHTMLViewPrivate initialize]): Ditto.
(+[WebHTMLView initialize]): Ditto.

  • WebView/WebResource.mm:

(+[WebResourcePrivate initialize]): Ditto.

  • WebView/WebTextIterator.mm:

(+[WebTextIteratorPrivate initialize]): Ditto.

  • WebView/WebView.mm:
  • WebView/WebViewData.mm: Ditto.

(+[WebViewPrivate initialize]): Ditto.

WebKit/qt:

  • Api/qwebpage.cpp:

(QWebPagePrivate::QWebPagePrivate): Add call to initializeMainThread.

WebKit/win:

  • WebKitClassFactory.cpp:

(WebKitClassFactory::WebKitClassFactory): Add call to initializeMainThread.

  • WebView.cpp:

(WebView::WebView): Ditto.

WebKit/wx:

  • WebView.cpp:

(wxWebView::Create): Add call to initializeMainThread.

WebKit2:

  • UIProcess/Launcher/mac/WebProcessLauncher.mm:

(WebKit::webThreadBody): Add call to initializeMainThread.

  • UIProcess/Launcher/win/WebProcessLauncher.cpp:

(WebKit::webThreadBody): Ditto.

  • WebProcess/Launching/mac/WebProcessMain.mm:

(main): Ditto.

  • WebProcess/win/WebProcessMain.cpp:

(WebKit::WebProcessMain): Ditto.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r58206 r58266  
    13461346                        isa = PBXGroup;
    13471347                        children = (
    1348                                 511FC4CA117EE2A800425272 /* MD5.h */,
    1349                                 511FC4C7117EE23D00425272 /* MD5.cpp */,
    13501348                                06D358A00DAAD9C4003B174E /* mac */,
    13511349                                8656573E115BE35200291F40 /* text */,
     
    13551353                                65E217B808E7EECC0023E5F6 /* Assertions.cpp */,
    13561354                                65E217B708E7EECC0023E5F6 /* Assertions.h */,
     1355                                BC5F7BBB11823B590052C02C /* Atomics.h */,
    13571356                                E1A596370DE3E1C300C17E37 /* AVLTree.h */,
    13581357                                A7A1F7AA0F252B3C00E184E2 /* ByteArray.cpp */,
     
    13741373                                657EEBBF094E445E008C9C7B /* HashCountedSet.h */,
    13751374                                65DFC92A08EA173A00F7300B /* HashFunctions.h */,
    1376                                 BC5F7BBB11823B590052C02C /* Atomics.h */,
    1377                                 BC5F7BBC11823B590052C02C /* ThreadingPrimitives.h */,
    1378                                 BC5F7BBD11823B590052C02C /* ThreadSafeShared.h */,
    13791375                                652246A40C8D7A0E007BDAF7 /* HashIterators.h */,
    13801376                                65DFC92B08EA173A00F7300B /* HashMap.h */,
     
    13901386                                5DBD18AF0C5401A700C15EAE /* MallocZoneSupport.h */,
    13911387                                BCF6553B0A2048DE0038A194 /* MathExtras.h */,
     1388                                511FC4C7117EE23D00425272 /* MD5.cpp */,
     1389                                511FC4CA117EE2A800425272 /* MD5.h */,
    13921390                                E1EE798B0D6CA53D00FEA3BA /* MessageQueue.h */,
    13931391                                9303F5690991190000AD71B8 /* Noncopyable.h */,
     
    14241422                                5D6A566A0F05995500266145 /* Threading.cpp */,
    14251423                                E1EE79220D6C95CD00FEA3BA /* Threading.h */,
     1424                                BC5F7BBC11823B590052C02C /* ThreadingPrimitives.h */,
    14261425                                E1EE793C0D6C9B9200FEA3BA /* ThreadingPthreads.cpp */,
     1426                                BC5F7BBD11823B590052C02C /* ThreadSafeShared.h */,
    14271427                                E1B7C8BD0DA3A3360074B0DC /* ThreadSpecific.h */,
    14281428                                0B330C260F38C62300692DE3 /* TypeTraits.cpp */,
Note: See TracChangeset for help on using the changeset viewer.