<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[188642] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/188642">188642</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2015-08-19 11:18:19 -0700 (Wed, 19 Aug 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
https://bugs.webkit.org/show_bug.cgi?id=148140
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
* inspector/remote/RemoteInspector.h:
* inspector/remote/RemoteInspector.mm:
(Inspector::RemoteInspector::registerDebuggable):
(Inspector::RemoteInspector::unregisterDebuggable):
(Inspector::RemoteInspector::updateDebuggable):
(Inspector::RemoteInspector::updateDebuggableAutomaticInspectCandidate):
(Inspector::RemoteInspector::sendMessageToRemoteFrontend):
(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::setupCompleted):
(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::stop):
(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
(Inspector::RemoteInspector::setParentProcessInformation):
(Inspector::RemoteInspector::xpcConnectionReceivedMessage):
(Inspector::RemoteInspector::xpcConnectionFailed):
(Inspector::RemoteInspector::pushListingSoon):
(Inspector::RemoteInspector::receivedIndicateMessage):
(Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):
* inspector/remote/RemoteInspectorXPCConnection.h:
* inspector/remote/RemoteInspectorXPCConnection.mm:
(Inspector::RemoteInspectorXPCConnection::close):
(Inspector::RemoteInspectorXPCConnection::closeFromMessage):
(Inspector::RemoteInspectorXPCConnection::deserializeMessage):
(Inspector::RemoteInspectorXPCConnection::handleEvent):
Source/WebCore:
No new tests because no new behavior.
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::process):
(WebCore::AudioBufferSourceNode::setBuffer):
* Modules/webaudio/AudioBufferSourceNode.h:
* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::insertEvent):
(WebCore::AudioParamTimeline::cancelScheduledValues):
(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForTimeRange):
* Modules/webaudio/AudioParamTimeline.h:
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::process):
(WebCore::ConvolverNode::reset):
(WebCore::ConvolverNode::setBuffer):
* Modules/webaudio/ConvolverNode.h:
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::process):
* Modules/webaudio/MediaElementAudioSourceNode.h:
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::setFormat):
(WebCore::MediaStreamAudioSourceNode::process):
* Modules/webaudio/MediaStreamAudioSourceNode.h:
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::process):
(WebCore::OscillatorNode::setPeriodicWave):
* Modules/webaudio/OscillatorNode.h:
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::process):
(WebCore::PannerNode::setPanningModel):
* Modules/webaudio/PannerNode.h:
* Modules/webaudio/WaveShaperProcessor.cpp:
(WebCore::WaveShaperProcessor::setCurve):
(WebCore::WaveShaperProcessor::setOversample):
(WebCore::WaveShaperProcessor::process):
* Modules/webaudio/WaveShaperProcessor.h:
* Modules/webdatabase/Database.cpp:
(WebCore::retrieveTextResultFromDatabase):
(WebCore::guidToVersionMap):
(WebCore::Database::Database):
(WebCore::Database::performOpenAndVerify):
(WebCore::Database::closeDatabase):
(WebCore::Database::getCachedVersion):
(WebCore::Database::setCachedVersion):
(WebCore::guidMutex): Deleted.
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::existingDatabaseContextFor):
(WebCore::DatabaseManager::registerDatabaseContext):
(WebCore::DatabaseManager::unregisterDatabaseContext):
(WebCore::DatabaseManager::didConstructDatabaseContext):
(WebCore::DatabaseManager::didDestructDatabaseContext):
(WebCore::DatabaseManager::addProposedDatabase):
(WebCore::DatabaseManager::removeProposedDatabase):
(WebCore::DatabaseManager::fullPathForDatabase):
(WebCore::DatabaseManager::detailsForNameAndOrigin):
* Modules/webdatabase/DatabaseManager.h:
* bindings/objc/DOMInternal.mm:
(getDOMWrapper):
(addDOMWrapper):
(removeDOMWrapper):
(wrapperCacheLock): Deleted.
* crypto/CryptoAlgorithmRegistry.cpp:
(WebCore::CryptoAlgorithmRegistry::singleton):
(WebCore::CryptoAlgorithmRegistry::CryptoAlgorithmRegistry):
(WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
(WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
(WebCore::CryptoAlgorithmRegistry::create):
(WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
(WebCore::registryMutex): Deleted.
* inspector/WorkerDebuggerAgent.cpp:
(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::interruptAndDispatchInspectorCommands):
* page/WheelEventTestTrigger.cpp:
(WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
(WebCore::WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestTrigger::deferTestsForReason):
(WebCore::WheelEventTestTrigger::removeTestDeferralForReason):
(WebCore::WheelEventTestTrigger::triggerTestTimerFired):
* page/WheelEventTestTrigger.h:
* page/scrolling/ScrollingThread.cpp:
(WebCore::ScrollingThread::dispatch):
(WebCore::ScrollingThread::createThreadIfNeeded):
(WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread):
* page/scrolling/ScrollingThread.h:
* page/scrolling/mac/ScrollingThreadMac.mm:
(WebCore::ScrollingThread::initializeRunLoop):
* platform/audio/ReverbConvolver.cpp:
(WebCore::ReverbConvolver::~ReverbConvolver):
(WebCore::ReverbConvolver::backgroundThreadEntry):
(WebCore::ReverbConvolver::process):
(WebCore::ReverbConvolver::reset):
* platform/audio/ReverbConvolver.h:
* platform/ios/wak/WebCoreThreadRun.cpp:
* platform/mac/Language.mm:
(WebCore::preferredLanguages):
(+[WebLanguageChangeObserver languagePreferencesDidChange:]):
(WebCore::platformUserPreferredLanguages):
(WebCore::preferredLanguagesMutex): Deleted.
* platform/network/cf/LoaderRunLoopCF.cpp:
(WebCore::emptyPerform):
(WebCore::runLoaderThread):
(WebCore::loaderRunLoop):
(WebCore::loaderRunLoopMutex): Deleted.
(WebCore::loaderRunLoopConditionVariable): Deleted.
* platform/network/cf/SocketStreamHandleCFNet.cpp:
(WebCore::callOnMainThreadAndWait):
* platform/network/curl/SocketStreamHandle.h:
* platform/network/curl/SocketStreamHandleCurl.cpp:
(WebCore::SocketStreamHandle::platformSend):
(WebCore::SocketStreamHandle::sendData):
* platform/sql/SQLiteDatabaseTracker.cpp:
(WebCore::SQLiteDatabaseTracker::setClient):
(WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::transactionInProgressMutex): Deleted.
* platform/text/TextBreakIterator.cpp:
(WebCore::compareAndSwapNonSharedCharacterBreakIterator):
* platform/text/TextEncodingRegistry.cpp:
(WebCore::newTextCodec):
(WebCore::atomicCanonicalTextEncodingName):
(WebCore::dumpTextEncodingNameMap):
(WebCore::encodingRegistryMutex): Deleted.
* workers/WorkerThread.cpp:
(WebCore::workerThreads):
(WebCore::WorkerThread::workerThreadCount):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::~WorkerThread):
(WebCore::WorkerThread::releaseFastMallocFreeMemoryInAllThreads):
(WebCore::threadSetMutex): Deleted.
Source/WebKit2:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverse):
* Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::SyncMessageState::dispatchMessages):
(IPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::installIncomingSyncMessageCallback):
(IPC::Connection::uninstallIncomingSyncMessageCallback):
(IPC::Connection::hasIncomingSyncMessage):
(IPC::Connection::connectionDidClose):
(IPC::Connection::sendOutgoingMessages):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::dispatchOneMessage):
* Platform/IPC/Connection.h:
* Shared/BlockingResponseMap.h:
(BlockingResponseMap::waitForResponse):
(BlockingResponseMap::didReceiveResponse):
(BlockingResponseMap::cancel):
* UIProcess/Plugins/gtk/PluginInfoCache.cpp:
(WebKit::PluginInfoCache::saveToFile):
(WebKit::PluginInfoCache::updatePluginInfo):
* UIProcess/Plugins/gtk/PluginInfoCache.h:
* UIProcess/mac/WKPrintingView.h:
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(prepareDataForPrintingOnSecondaryThread):
(-[WKPrintingView knowsPageRange:]):
Source/WTF:
Also beef up Condition by giving it a StaticCondition variant.
* wtf/Condition.h:
(WTF::ConditionBase::notifyAll):
(WTF::ConditionBase::waitForSecondsImpl):
(WTF::ConditionBase::absoluteFromRelative):
(WTF::Condition::Condition):
(WTF::Condition::notifyAll): Deleted.
(WTF::Condition::waitForSecondsImpl): Deleted.
(WTF::Condition::absoluteFromRelative): Deleted.
* wtf/CryptographicallyRandomNumber.cpp:
* wtf/HashTable.cpp:
(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):
(WTF::hashTableStatsMutex): Deleted.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
(WTF::KeyTraits>::invalidateIterators):
(WTF::addIterator):
(WTF::removeIterator):
* wtf/Lock.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
(WTF::cancelCallOnMainThread):
(WTF::mainThreadFunctionQueueMutex): Deleted.
* wtf/StackStats.cpp:
(WTF::StackStats::PerThreadStats::PerThreadStats):
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
(WTF::StackStats::initialize): Deleted.
* wtf/StackStats.h:
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::initialize): Deleted.
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::callOnMainThread):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
(WTF::atomicallyInitializedStaticMutex): Deleted.
* wtf/text/StringView.cpp:
(WTF::StringView::UnderlyingString::UnderlyingString):
(WTF::underlyingStrings):
(WTF::StringView::invalidate):
(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):
(WTF::underlyingStringsMutex): Deleted.
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::Collator::Collator):
(WTF::Collator::~Collator):
(WTF::cachedCollatorMutex): Deleted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorh">trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorremoteRemoteInspectormm">trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorXPCConnectionh">trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorXPCConnectionmm">trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfConditionh">trunk/Source/WTF/wtf/Condition.h</a></li>
<li><a href="#trunkSourceWTFwtfCryptographicallyRandomNumbercpp">trunk/Source/WTF/wtf/CryptographicallyRandomNumber.cpp</a></li>
<li><a href="#trunkSourceWTFwtfHashTablecpp">trunk/Source/WTF/wtf/HashTable.cpp</a></li>
<li><a href="#trunkSourceWTFwtfHashTableh">trunk/Source/WTF/wtf/HashTable.h</a></li>
<li><a href="#trunkSourceWTFwtfLockh">trunk/Source/WTF/wtf/Lock.h</a></li>
<li><a href="#trunkSourceWTFwtfMainThreadcpp">trunk/Source/WTF/wtf/MainThread.cpp</a></li>
<li><a href="#trunkSourceWTFwtfStackStatscpp">trunk/Source/WTF/wtf/StackStats.cpp</a></li>
<li><a href="#trunkSourceWTFwtfStackStatsh">trunk/Source/WTF/wtf/StackStats.h</a></li>
<li><a href="#trunkSourceWTFwtfThreadingPthreadscpp">trunk/Source/WTF/wtf/ThreadingPthreads.cpp</a></li>
<li><a href="#trunkSourceWTFwtfmacDeprecatedSymbolsUsedBySafarimm">trunk/Source/WTF/wtf/mac/DeprecatedSymbolsUsedBySafari.mm</a></li>
<li><a href="#trunkSourceWTFwtftextStringViewcpp">trunk/Source/WTF/wtf/text/StringView.cpp</a></li>
<li><a href="#trunkSourceWTFwtfunicodeicuCollatorICUcpp">trunk/Source/WTF/wtf/unicode/icu/CollatorICU.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodecpp">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeh">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioParamTimelinecpp">trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioParamTimelineh">trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioConvolverNodecpp">trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioConvolverNodeh">trunk/Source/WebCore/Modules/webaudio/ConvolverNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaElementAudioSourceNodecpp">trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaElementAudioSourceNodeh">trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceNodecpp">trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceNodeh">trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioOscillatorNodecpp">trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioOscillatorNodeh">trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioPannerNodecpp">trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioPannerNodeh">trunk/Source/WebCore/Modules/webaudio/PannerNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioWaveShaperProcessorcpp">trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioWaveShaperProcessorh">trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabasecpp">trunk/Source/WebCore/Modules/webdatabase/Database.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabaseManagercpp">trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebdatabaseDatabaseManagerh">trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h</a></li>
<li><a href="#trunkSourceWebCorebindingsobjcDOMInternalmm">trunk/Source/WebCore/bindings/objc/DOMInternal.mm</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmRegistrycpp">trunk/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp">trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCorepageWheelEventTestTriggercpp">trunk/Source/WebCore/page/WheelEventTestTrigger.cpp</a></li>
<li><a href="#trunkSourceWebCorepageWheelEventTestTriggerh">trunk/Source/WebCore/page/WheelEventTestTrigger.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingThreadcpp">trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingThreadh">trunk/Source/WebCore/page/scrolling/ScrollingThread.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingThreadMacmm">trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformaudioReverbConvolvercpp">trunk/Source/WebCore/platform/audio/ReverbConvolver.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformaudioReverbConvolverh">trunk/Source/WebCore/platform/audio/ReverbConvolver.h</a></li>
<li><a href="#trunkSourceWebCoreplatformioswakWebCoreThreadRuncpp">trunk/Source/WebCore/platform/ios/wak/WebCoreThreadRun.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacLanguagemm">trunk/Source/WebCore/platform/mac/Language.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfLoaderRunLoopCFcpp">trunk/Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfSocketStreamHandleCFNetcpp">trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlSocketStreamHandleh">trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlSocketStreamHandleCurlcpp">trunk/Source/WebCore/platform/network/curl/SocketStreamHandleCurl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformsqlSQLiteDatabaseTrackercpp">trunk/Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextBreakIteratorcpp">trunk/Source/WebCore/platform/text/TextBreakIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextEncodingRegistrycpp">trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerThreadcpp">trunk/Source/WebCore/workers/WorkerThread.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCacheStoragecpp">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp</a></li>
<li><a href="#trunkSourceWebKit2PlatformIPCConnectioncpp">trunk/Source/WebKit2/Platform/IPC/Connection.cpp</a></li>
<li><a href="#trunkSourceWebKit2PlatformIPCConnectionh">trunk/Source/WebKit2/Platform/IPC/Connection.h</a></li>
<li><a href="#trunkSourceWebKit2SharedBlockingResponseMaph">trunk/Source/WebKit2/Shared/BlockingResponseMap.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPluginsgtkPluginInfoCachecpp">trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPluginsgtkPluginInfoCacheh">trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWKPrintingViewh">trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWKPrintingViewmm">trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,3 +1,35 @@
</span><ins>+2015-08-18 Filip Pizlo <fpizlo@apple.com>
+
+ Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
+ https://bugs.webkit.org/show_bug.cgi?id=148140
+
+ Reviewed by Geoffrey Garen.
+
+ * inspector/remote/RemoteInspector.h:
+ * inspector/remote/RemoteInspector.mm:
+ (Inspector::RemoteInspector::registerDebuggable):
+ (Inspector::RemoteInspector::unregisterDebuggable):
+ (Inspector::RemoteInspector::updateDebuggable):
+ (Inspector::RemoteInspector::updateDebuggableAutomaticInspectCandidate):
+ (Inspector::RemoteInspector::sendMessageToRemoteFrontend):
+ (Inspector::RemoteInspector::setupFailed):
+ (Inspector::RemoteInspector::setupCompleted):
+ (Inspector::RemoteInspector::start):
+ (Inspector::RemoteInspector::stop):
+ (Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
+ (Inspector::RemoteInspector::setParentProcessInformation):
+ (Inspector::RemoteInspector::xpcConnectionReceivedMessage):
+ (Inspector::RemoteInspector::xpcConnectionFailed):
+ (Inspector::RemoteInspector::pushListingSoon):
+ (Inspector::RemoteInspector::receivedIndicateMessage):
+ (Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):
+ * inspector/remote/RemoteInspectorXPCConnection.h:
+ * inspector/remote/RemoteInspectorXPCConnection.mm:
+ (Inspector::RemoteInspectorXPCConnection::close):
+ (Inspector::RemoteInspectorXPCConnection::closeFromMessage):
+ (Inspector::RemoteInspectorXPCConnection::deserializeMessage):
+ (Inspector::RemoteInspectorXPCConnection::handleEvent):
+
</ins><span class="cx"> 2015-08-18 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Links for rules in <style> are incorrect, do not account for <style> offset in the document
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #import "RemoteInspectorXPCConnection.h"
</span><span class="cx"> #import <wtf/Forward.h>
</span><span class="cx"> #import <wtf/HashMap.h>
</span><ins>+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/RetainPtr.h>
</span><span class="cx">
</span><span class="cx"> OBJC_CLASS NSDictionary;
</span><span class="lines">@@ -108,7 +109,7 @@
</span><span class="cx"> // Any debuggable can send messages over the XPC connection.
</span><span class="cx"> // So lock access to all maps and state as they can change
</span><span class="cx"> // from any thread.
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx">
</span><span class="cx"> HashMap<unsigned, std::pair<RemoteInspectorDebuggable*, RemoteInspectorDebuggableInfo>> m_debuggableMap;
</span><span class="cx"> HashMap<unsigned, RefPtr<RemoteInspectorDebuggableConnection>> m_connectionMap;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorremoteRemoteInspectormm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::registerDebuggable(RemoteInspectorDebuggable* debuggable)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> unsigned identifier = nextAvailableIdentifier();
</span><span class="cx"> debuggable->setIdentifier(identifier);
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::unregisterDebuggable(RemoteInspectorDebuggable* debuggable)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> unsigned identifier = debuggable->identifier();
</span><span class="cx"> if (!identifier)
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::updateDebuggable(RemoteInspectorDebuggable* debuggable)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> unsigned identifier = debuggable->identifier();
</span><span class="cx"> if (!identifier)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> void RemoteInspector::updateDebuggableAutomaticInspectCandidate(RemoteInspectorDebuggable* debuggable)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> unsigned identifier = debuggable->identifier();
</span><span class="cx"> if (!identifier)
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx">
</span><span class="cx"> // In case debuggers fail to respond, or we cannot connect to webinspectord, automatically continue after a short period of time.
</span><span class="cx"> dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.8 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_automaticInspectionCandidateIdentifier == identifier) {
</span><span class="cx"> LOG_ERROR("Skipping Automatic Inspection Candidate with pageId(%u) because we failed to receive a response in time.", m_automaticInspectionCandidateIdentifier);
</span><span class="cx"> m_automaticInspectionPaused = false;
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx"> debuggable->pauseWaitingForAutomaticInspection();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(m_automaticInspectionCandidateIdentifier);
</span><span class="cx"> m_automaticInspectionCandidateIdentifier = 0;
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::sendMessageToRemoteFrontend(unsigned identifier, const String& message)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (!m_xpcConnection)
</span><span class="cx"> return;
</span><span class="lines">@@ -265,7 +265,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::setupFailed(unsigned identifier)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_connectionMap.remove(identifier);
</span><span class="cx">
</span><span class="lines">@@ -279,7 +279,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::setupCompleted(unsigned identifier)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (identifier == m_automaticInspectionCandidateIdentifier)
</span><span class="cx"> m_automaticInspectionPaused = false;
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::start()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (m_enabled)
</span><span class="cx"> return;
</span><span class="lines">@@ -315,7 +315,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::stop()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> stopInternal(StopSource::API);
</span><span class="cx"> }
</span><span class="lines">@@ -355,7 +355,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::setupXPCConnectionIfNeeded()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (m_xpcConnection)
</span><span class="cx"> return;
</span><span class="lines">@@ -380,7 +380,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::setParentProcessInformation(pid_t pid, RetainPtr<CFDataRef> auditData)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (m_parentProcessIdentifier || m_parentProcessAuditData)
</span><span class="cx"> return;
</span><span class="lines">@@ -396,7 +396,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::xpcConnectionReceivedMessage(RemoteInspectorXPCConnection*, NSString *messageName, NSDictionary *userInfo)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if ([messageName isEqualToString:WIRPermissionDenied]) {
</span><span class="cx"> stopInternal(StopSource::XPCMessage);
</span><span class="lines">@@ -427,7 +427,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspector::xpcConnectionFailed(RemoteInspectorXPCConnection* connection)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(connection == m_xpcConnection);
</span><span class="cx"> if (connection != m_xpcConnection)
</span><span class="lines">@@ -522,7 +522,7 @@
</span><span class="cx">
</span><span class="cx"> m_pushScheduled = true;
</span><span class="cx"> dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_pushScheduled)
</span><span class="cx"> pushListingNow();
</span><span class="cx"> });
</span><span class="lines">@@ -649,7 +649,7 @@
</span><span class="cx"> callOnWebThreadOrDispatchAsyncOnMainThread(^{
</span><span class="cx"> RemoteInspectorDebuggable* debuggable = nullptr;
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> auto it = m_debuggableMap.find(identifier);
</span><span class="cx"> if (it == m_debuggableMap.end())
</span><span class="lines">@@ -672,7 +672,7 @@
</span><span class="cx"> // Wait a bit for the information, but give up after a second.
</span><span class="cx"> m_shouldSendParentProcessInformation = true;
</span><span class="cx"> dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_shouldSendParentProcessInformation)
</span><span class="cx"> stopInternal(StopSource::XPCMessage);
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorXPCConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #define RemoteInspectorXPCConnection_h
</span><span class="cx">
</span><span class="cx"> #import <dispatch/dispatch.h>
</span><del>-#import <mutex>
</del><ins>+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/ThreadSafeRefCounted.h>
</span><span class="cx"> #import <wtf/spi/darwin/XPCSPI.h>
</span><span class="cx">
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">
</span><span class="cx"> // We handle XPC events on the queue, but a client may call close() on any queue.
</span><span class="cx"> // We make sure that m_client is thread safe and immediately cleared in close().
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx">
</span><span class="cx"> xpc_connection_t m_connection;
</span><span class="cx"> dispatch_queue_t m_queue;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorremoteRemoteInspectorXPCConnectionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,7 +29,9 @@
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="cx">
</span><span class="cx"> #import <Foundation/Foundation.h>
</span><ins>+#import <mutex>
</ins><span class="cx"> #import <wtf/Assertions.h>
</span><ins>+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/Ref.h>
</span><span class="cx"> #import <wtf/RetainPtr.h>
</span><span class="cx"> #import <wtf/spi/darwin/XPCSPI.h>
</span><span class="lines">@@ -79,7 +81,7 @@
</span><span class="cx">
</span><span class="cx"> void RemoteInspectorXPCConnection::close()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> closeFromMessage();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -89,7 +91,7 @@
</span><span class="cx"> m_client = nullptr;
</span><span class="cx">
</span><span class="cx"> dispatch_async(m_queue, ^{
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> // This will trigger one last XPC_ERROR_CONNECTION_INVALID event on the queue and deref us.
</span><span class="cx"> closeOnQueue();
</span><span class="cx"> });
</span><span class="lines">@@ -116,7 +118,7 @@
</span><span class="cx">
</span><span class="cx"> xpc_object_t xpcDictionary = xpc_dictionary_get_value(object, RemoteInspectorXPCConnectionSerializedMessageKey);
</span><span class="cx"> if (!xpcDictionary || xpc_get_type(xpcDictionary) != XPC_TYPE_DICTIONARY) {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->xpcConnectionUnhandledMessage(this, object);
</span><span class="cx"> return nil;
</span><span class="lines">@@ -131,7 +133,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (xpc_get_type(object) == XPC_TYPE_ERROR) {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->xpcConnectionFailed(this);
</span><span class="cx">
</span><span class="lines">@@ -154,7 +156,7 @@
</span><span class="cx">
</span><span class="cx"> NSString *message = [dataDictionary objectForKey:RemoteInspectorXPCConnectionMessageNameKey];
</span><span class="cx"> NSDictionary *userInfo = [dataDictionary objectForKey:RemoteInspectorXPCConnectionUserInfoKey];
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_client)
</span><span class="cx"> m_client->xpcConnectionReceivedMessage(this, message, userInfo);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/ChangeLog        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,3 +1,68 @@
</span><ins>+2015-08-18 Filip Pizlo <fpizlo@apple.com>
+
+ Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
+ https://bugs.webkit.org/show_bug.cgi?id=148140
+
+ Reviewed by Geoffrey Garen.
+
+ Also beef up Condition by giving it a StaticCondition variant.
+
+ * wtf/Condition.h:
+ (WTF::ConditionBase::notifyAll):
+ (WTF::ConditionBase::waitForSecondsImpl):
+ (WTF::ConditionBase::absoluteFromRelative):
+ (WTF::Condition::Condition):
+ (WTF::Condition::notifyAll): Deleted.
+ (WTF::Condition::waitForSecondsImpl): Deleted.
+ (WTF::Condition::absoluteFromRelative): Deleted.
+ * wtf/CryptographicallyRandomNumber.cpp:
+ * wtf/HashTable.cpp:
+ (WTF::HashTableStats::recordCollisionAtCount):
+ (WTF::HashTableStats::dumpStats):
+ (WTF::hashTableStatsMutex): Deleted.
+ * wtf/HashTable.h:
+ (WTF::KeyTraits>::HashTable):
+ (WTF::KeyTraits>::invalidateIterators):
+ (WTF::addIterator):
+ (WTF::removeIterator):
+ * wtf/Lock.h:
+ * wtf/MainThread.cpp:
+ (WTF::functionQueue):
+ (WTF::dispatchFunctionsFromMainThread):
+ (WTF::callOnMainThread):
+ (WTF::cancelCallOnMainThread):
+ (WTF::mainThreadFunctionQueueMutex): Deleted.
+ * wtf/StackStats.cpp:
+ (WTF::StackStats::PerThreadStats::PerThreadStats):
+ (WTF::StackStats::CheckPoint::CheckPoint):
+ (WTF::StackStats::CheckPoint::~CheckPoint):
+ (WTF::StackStats::probe):
+ (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
+ (WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
+ (WTF::StackStats::initialize): Deleted.
+ * wtf/StackStats.h:
+ (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
+ (WTF::StackStats::probe):
+ (WTF::StackStats::initialize): Deleted.
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::initializeThreading):
+ * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
+ (WTF::callOnMainThread):
+ (WTF::lockAtomicallyInitializedStaticMutex):
+ (WTF::unlockAtomicallyInitializedStaticMutex):
+ (WTF::atomicallyInitializedStaticMutex): Deleted.
+ * wtf/text/StringView.cpp:
+ (WTF::StringView::UnderlyingString::UnderlyingString):
+ (WTF::underlyingStrings):
+ (WTF::StringView::invalidate):
+ (WTF::StringView::adoptUnderlyingString):
+ (WTF::StringView::setUnderlyingString):
+ (WTF::underlyingStringsMutex): Deleted.
+ * wtf/unicode/icu/CollatorICU.cpp:
+ (WTF::Collator::Collator):
+ (WTF::Collator::~Collator):
+ (WTF::cachedCollatorMutex): Deleted.
+
</ins><span class="cx"> 2015-08-18 Zan Dobersek <zdobersek@igalia.com>
</span><span class="cx">
</span><span class="cx"> [GLib] GMainLoopSource should receive the std::function<> objects through rvalue references
</span></span></pre></div>
<a id="trunkSourceWTFwtfConditionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/Condition.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Condition.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/Condition.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -28,21 +28,26 @@
</span><span class="cx">
</span><span class="cx"> #include <chrono>
</span><span class="cx"> #include <functional>
</span><del>-#include <mutex>
</del><span class="cx"> #include <wtf/CurrentTime.h>
</span><ins>+#include <wtf/Noncopyable.h>
</ins><span class="cx"> #include <wtf/ParkingLot.h>
</span><span class="cx">
</span><span class="cx"> namespace WTF {
</span><span class="cx">
</span><del>-class Condition {
-public:
</del><ins>+// This is a condition variable that is suitable for use with any lock-like object, including
+// our own WTF::Lock. It features standard wait()/notifyOne()/notifyAll() methods in addition to
+// a variety of wait-with-timeout methods. This includes methods that use WTF's own notion of
+// time, like wall-clock time (i.e. currentTime()) and monotonic time (i.e.
+// monotonicallyIncreasingTime()). This is a very efficient condition variable. It only requires
+// one byte of memory. notifyOne() and notifyAll() require just a load and branch for the fast
+// case where no thread is waiting. This condition variable, when used with WTF::Lock, can
+// outperform a system condition variable and lock by up to 58x.
+
+// This is a struct without a constructor or destructor so that it can be statically initialized.
+// Use Lock in instance variables.
+struct ConditionBase {
</ins><span class="cx"> typedef ParkingLot::Clock Clock;
</span><span class="cx">
</span><del>- Condition()
- {
- m_hasWaiters.store(false);
- }
-
</del><span class="cx"> // Wait on a parking queue while releasing the given lock. It will unlock the lock just before
</span><span class="cx"> // parking, and relock it upon wakeup. Returns true if we woke up due to some call to
</span><span class="cx"> // notifyOne() or notifyAll(). Returns false if we woke up due to a timeout. Note that this form
</span><span class="lines">@@ -172,7 +177,7 @@
</span><span class="cx"> ParkingLot::unparkAll(&m_hasWaiters);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-private:
</del><ins>+protected:
</ins><span class="cx"> template<typename LockType>
</span><span class="cx"> bool waitForSecondsImpl(LockType& lock, double relativeTimeoutSeconds)
</span><span class="cx"> {
</span><span class="lines">@@ -224,11 +229,23 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Atomic<bool> m_hasWaiters;
</span><ins>+};
+
+class Condition : public ConditionBase {
+ WTF_MAKE_NONCOPYABLE(Condition);
+public:
+ Condition()
+ {
+ m_hasWaiters.store(false);
+ }
</ins><span class="cx"> };
</span><span class="cx">
</span><ins>+typedef ConditionBase StaticCondition;
+
</ins><span class="cx"> } // namespace WTF
</span><span class="cx">
</span><span class="cx"> using WTF::Condition;
</span><ins>+using WTF::StaticCondition;
</ins><span class="cx">
</span><span class="cx"> #endif // WTF_Condition_h
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtfCryptographicallyRandomNumbercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CryptographicallyRandomNumber.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CryptographicallyRandomNumber.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/CryptographicallyRandomNumber.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include "NeverDestroyed.h"
</span><span class="cx"> #include "OSRandomSource.h"
</span><span class="cx"> #include <mutex>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx">
</span><span class="cx"> namespace WTF {
</span><span class="cx">
</span><span class="lines">@@ -64,7 +65,7 @@
</span><span class="cx">
</span><span class="cx"> ARC4Stream m_stream;
</span><span class="cx"> int m_count;
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> ARC4Stream::ARC4Stream()
</span><span class="lines">@@ -136,7 +137,7 @@
</span><span class="cx">
</span><span class="cx"> uint32_t ARC4RandomNumberGenerator::randomNumber()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_count -= 4;
</span><span class="cx"> stirIfNeeded();
</span><span class="lines">@@ -145,7 +146,7 @@
</span><span class="cx">
</span><span class="cx"> void ARC4RandomNumberGenerator::randomValues(void* buffer, size_t length)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> unsigned char* result = reinterpret_cast<unsigned char*>(buffer);
</span><span class="cx"> stirIfNeeded();
</span></span></pre></div>
<a id="trunkSourceWTFwtfHashTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/HashTable.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/HashTable.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/HashTable.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -36,20 +36,11 @@
</span><span class="cx"> unsigned HashTableStats::collisionGraph[4096];
</span><span class="cx"> unsigned HashTableStats::maxCollisions;
</span><span class="cx">
</span><del>-static std::mutex& hashTableStatsMutex()
-{
- static std::once_flag onceFlag;
- static std::mutex* mutex;
- std::call_once(onceFlag, []{
- mutex = std::make_unique<std::mutex>().release();
- });
</del><ins>+static StaticLock hashTableStatsMutex;
</ins><span class="cx">
</span><del>- return *mutex;
-}
-
</del><span class="cx"> void HashTableStats::recordCollisionAtCount(unsigned count)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(hashTableStatsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(hashTableStatsMutex);
</ins><span class="cx">
</span><span class="cx"> if (count > maxCollisions)
</span><span class="cx"> maxCollisions = count;
</span><span class="lines">@@ -59,7 +50,7 @@
</span><span class="cx">
</span><span class="cx"> void HashTableStats::dumpStats()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(hashTableStatsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(hashTableStatsMutex);
</ins><span class="cx">
</span><span class="cx"> dataLogF("\nWTF::HashTable statistics\n\n");
</span><span class="cx"> dataLogF("%u accesses\n", numAccesses.load());
</span></span></pre></div>
<a id="trunkSourceWTFwtfHashTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/HashTable.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/HashTable.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/HashTable.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> * Copyright (C) 2008 David Levin <levin@chromium.org>
</span><span class="cx"> *
</span><span class="cx"> * This library is free software; you can redistribute it and/or
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include <wtf/Assertions.h>
</span><span class="cx"> #include <wtf/FastMalloc.h>
</span><span class="cx"> #include <wtf/HashTraits.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/MathExtras.h>
</span><span class="cx"> #include <wtf/StdLibExtras.h>
</span><span class="cx"> #include <wtf/ValueCheck.h>
</span><span class="lines">@@ -486,7 +487,7 @@
</span><span class="cx"> // All access to m_iterators should be guarded with m_mutex.
</span><span class="cx"> mutable const_iterator* m_iterators;
</span><span class="cx"> // Use std::unique_ptr so HashTable can still be memmove'd or memcpy'ed.
</span><del>- mutable std::unique_ptr<std::mutex> m_mutex;
</del><ins>+ mutable std::unique_ptr<Lock> m_mutex;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if DUMP_HASHTABLE_STATS_PER_TABLE
</span><span class="lines">@@ -542,7 +543,7 @@
</span><span class="cx"> , m_deletedCount(0)
</span><span class="cx"> #if CHECK_HASHTABLE_ITERATORS
</span><span class="cx"> , m_iterators(0)
</span><del>- , m_mutex(std::make_unique<std::mutex>())
</del><ins>+ , m_mutex(std::make_unique<Lock>())
</ins><span class="cx"> #endif
</span><span class="cx"> #if DUMP_HASHTABLE_STATS_PER_TABLE
</span><span class="cx"> , m_stats(std::make_unique<Stats>())
</span><span class="lines">@@ -1218,7 +1219,7 @@
</span><span class="cx"> , m_deletedCount(0)
</span><span class="cx"> #if CHECK_HASHTABLE_ITERATORS
</span><span class="cx"> , m_iterators(nullptr)
</span><del>- , m_mutex(std::make_unique<std::mutex>())
</del><ins>+ , m_mutex(std::make_unique<Lock>())
</ins><span class="cx"> #endif
</span><span class="cx"> #if DUMP_HASHTABLE_STATS_PER_TABLE
</span><span class="cx"> , m_stats(std::make_unique<Stats>(*other.m_stats))
</span><span class="lines">@@ -1276,7 +1277,7 @@
</span><span class="cx"> inline HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable(HashTable&& other)
</span><span class="cx"> #if CHECK_HASHTABLE_ITERATORS
</span><span class="cx"> : m_iterators(nullptr)
</span><del>- , m_mutex(std::make_unique<std::mutex>())
</del><ins>+ , m_mutex(std::make_unique<Lock>())
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx"> other.invalidateIterators();
</span><span class="lines">@@ -1356,7 +1357,7 @@
</span><span class="cx"> template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
</span><span class="cx"> void HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::invalidateIterators()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(*m_mutex);
</ins><span class="cx"> const_iterator* next;
</span><span class="cx"> for (const_iterator* p = m_iterators; p; p = next) {
</span><span class="cx"> next = p->m_next;
</span><span class="lines">@@ -1378,7 +1379,7 @@
</span><span class="cx"> if (!table) {
</span><span class="cx"> it->m_next = 0;
</span><span class="cx"> } else {
</span><del>- std::lock_guard<std::mutex> lock(*table->m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(*table->m_mutex);
</ins><span class="cx"> ASSERT(table->m_iterators != it);
</span><span class="cx"> it->m_next = table->m_iterators;
</span><span class="cx"> table->m_iterators = it;
</span><span class="lines">@@ -1397,7 +1398,7 @@
</span><span class="cx"> ASSERT(!it->m_next);
</span><span class="cx"> ASSERT(!it->m_previous);
</span><span class="cx"> } else {
</span><del>- std::lock_guard<std::mutex> lock(*it->m_table->m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(*it->m_table->m_mutex);
</ins><span class="cx"> if (it->m_next) {
</span><span class="cx"> ASSERT(it->m_next->m_previous == it);
</span><span class="cx"> it->m_next->m_previous = it->m_previous;
</span></span></pre></div>
<a id="trunkSourceWTFwtfLockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/Lock.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Lock.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/Lock.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -125,9 +125,9 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WTF
</span><span class="cx">
</span><del>-using WTF::StaticLock;
</del><span class="cx"> using WTF::Lock;
</span><span class="cx"> using WTF::LockHolder;
</span><ins>+using WTF::StaticLock;
</ins><span class="cx">
</span><span class="cx"> #endif // WTF_Lock_h
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtfMainThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/MainThread.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/MainThread.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/MainThread.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2007, 2008, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include "StdLibExtras.h"
</span><span class="cx"> #include "Threading.h"
</span><span class="cx"> #include <mutex>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/ThreadSpecific.h>
</span><span class="cx">
</span><span class="lines">@@ -69,12 +70,7 @@
</span><span class="cx"> static ThreadIdentifier mainThreadIdentifier;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-static std::mutex& mainThreadFunctionQueueMutex()
-{
- static NeverDestroyed<std::mutex> mutex;
-
- return mutex;
-}
</del><ins>+static StaticLock mainThreadFunctionQueueMutex;
</ins><span class="cx">
</span><span class="cx"> static FunctionQueue& functionQueue()
</span><span class="cx"> {
</span><span class="lines">@@ -94,7 +90,6 @@
</span><span class="cx">
</span><span class="cx"> mainThreadIdentifier = currentThread();
</span><span class="cx">
</span><del>- mainThreadFunctionQueueMutex();
</del><span class="cx"> initializeMainThreadPlatform();
</span><span class="cx"> initializeGCThreads();
</span><span class="cx"> }
</span><span class="lines">@@ -105,7 +100,6 @@
</span><span class="cx">
</span><span class="cx"> static void initializeMainThreadOnce()
</span><span class="cx"> {
</span><del>- mainThreadFunctionQueueMutex();
</del><span class="cx"> initializeMainThreadPlatform();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -117,7 +111,6 @@
</span><span class="cx"> #if !USE(WEB_THREAD)
</span><span class="cx"> static void initializeMainThreadToProcessMainThreadOnce()
</span><span class="cx"> {
</span><del>- mainThreadFunctionQueueMutex();
</del><span class="cx"> initializeMainThreadToProcessMainThreadPlatform();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -156,7 +149,7 @@
</span><span class="cx"> FunctionWithContext invocation;
</span><span class="cx"> while (true) {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(mainThreadFunctionQueueMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(mainThreadFunctionQueueMutex);
</ins><span class="cx"> if (!functionQueue().size())
</span><span class="cx"> break;
</span><span class="cx"> invocation = functionQueue().takeFirst();
</span><span class="lines">@@ -180,7 +173,7 @@
</span><span class="cx"> ASSERT(function);
</span><span class="cx"> bool needToSchedule = false;
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(mainThreadFunctionQueueMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(mainThreadFunctionQueueMutex);
</ins><span class="cx"> needToSchedule = functionQueue().size() == 0;
</span><span class="cx"> functionQueue().append(FunctionWithContext(function, context));
</span><span class="cx"> }
</span><span class="lines">@@ -192,7 +185,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(function);
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(mainThreadFunctionQueueMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(mainThreadFunctionQueueMutex);
</ins><span class="cx">
</span><span class="cx"> FunctionWithContextFinder pred(FunctionWithContext(function, context));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtfStackStatscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/StackStats.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/StackStats.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/StackStats.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> namespace WTF {
</span><span class="cx">
</span><span class="cx"> // CheckPoint management:
</span><del>-std::mutex* StackStats::s_sharedMutex = 0;
</del><ins>+StaticLock StackStats::s_sharedMutex;
</ins><span class="cx"> StackStats::CheckPoint* StackStats::s_topCheckPoint = 0;
</span><span class="cx"> StackStats::LayoutCheckPoint* StackStats::s_firstLayoutCheckPoint = 0;
</span><span class="cx"> StackStats::LayoutCheckPoint* StackStats::s_topLayoutCheckPoint = 0;
</span><span class="lines">@@ -57,13 +57,6 @@
</span><span class="cx"> int StackStats::s_maxLayoutReentryDepth = 0;
</span><span class="cx">
</span><span class="cx">
</span><del>-// Initializes locks and the log. Should only be called once.
-void StackStats::initialize()
-{
- s_sharedMutex = std::make_unique<std::mutex>().release();
- dataLogF(" === LOG new stack stats ========\n");
-}
-
</del><span class="cx"> StackStats::PerThreadStats::PerThreadStats()
</span><span class="cx"> {
</span><span class="cx"> const StackBounds& stack = wtfThreadData().stack();
</span><span class="lines">@@ -76,7 +69,7 @@
</span><span class="cx">
</span><span class="cx"> StackStats::CheckPoint::CheckPoint()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*StackStats::s_sharedMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(StackStats::s_sharedMutex);
</ins><span class="cx"> WTFThreadData* threadData = const_cast<WTFThreadData*>(&wtfThreadData());
</span><span class="cx"> StackStats::PerThreadStats& t = threadData->stackStats();
</span><span class="cx"> const StackBounds& stack = threadData->stack();
</span><span class="lines">@@ -134,7 +127,7 @@
</span><span class="cx">
</span><span class="cx"> StackStats::CheckPoint::~CheckPoint()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*StackStats::s_sharedMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(StackStats::s_sharedMutex);
</ins><span class="cx"> WTFThreadData* threadData = const_cast<WTFThreadData*>(&wtfThreadData());
</span><span class="cx"> StackStats::PerThreadStats& t = threadData->stackStats();
</span><span class="cx">
</span><span class="lines">@@ -165,7 +158,7 @@
</span><span class="cx">
</span><span class="cx"> void StackStats::probe()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*StackStats::s_sharedMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(StackStats::s_sharedMutex);
</ins><span class="cx"> WTFThreadData* threadData = const_cast<WTFThreadData*>(&wtfThreadData());
</span><span class="cx"> StackStats::PerThreadStats& t = threadData->stackStats();
</span><span class="cx"> const StackBounds& stack = threadData->stack();
</span><span class="lines">@@ -226,7 +219,7 @@
</span><span class="cx"> // probe first, we can avoid re-entering the lock.
</span><span class="cx"> StackStats::probe();
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(*StackStats::s_sharedMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(StackStats::s_sharedMutex);
</ins><span class="cx"> WTFThreadData* threadData = const_cast<WTFThreadData*>(&wtfThreadData());
</span><span class="cx"> StackStats::PerThreadStats& t = threadData->stackStats();
</span><span class="cx"> const StackBounds& stack = threadData->stack();
</span><span class="lines">@@ -295,7 +288,7 @@
</span><span class="cx">
</span><span class="cx"> StackStats::LayoutCheckPoint::~LayoutCheckPoint()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*StackStats::s_sharedMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(StackStats::s_sharedMutex);
</ins><span class="cx">
</span><span class="cx"> // Pop to the previous layout checkpoint:
</span><span class="cx"> StackStats::s_topLayoutCheckPoint = m_prev;
</span></span></pre></div>
<a id="trunkSourceWTFwtfStackStatsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/StackStats.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/StackStats.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/StackStats.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #include "ExportMacros.h"
</span><span class="cx"> #include <mutex>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> // Define this flag to enable Stack stats collection. This feature is useful
</span><span class="lines">@@ -67,7 +68,6 @@
</span><span class="cx"> LayoutCheckPoint() { }
</span><span class="cx"> };
</span><span class="cx">
</span><del>- static void initialize() { }
</del><span class="cx"> static void probe() { }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -109,9 +109,6 @@
</span><span class="cx"> int m_depth;
</span><span class="cx"> };
</span><span class="cx">
</span><del>- // Initializes locks and the log file. Should only be called once.
- static void initialize();
-
</del><span class="cx"> // Used for probing the stack at places where we suspect to be high
</span><span class="cx"> // points of stack usage but are NOT check points where stack recursion
</span><span class="cx"> // is checked.
</span><span class="lines">@@ -124,7 +121,7 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> // CheckPoint management:
</span><del>- static std::mutex* s_sharedMutex;
</del><ins>+ static StaticLock s_sharedMutex;
</ins><span class="cx"> static CheckPoint* s_topCheckPoint;
</span><span class="cx"> static LayoutCheckPoint* s_firstLayoutCheckPoint;
</span><span class="cx"> static LayoutCheckPoint* s_topLayoutCheckPoint;
</span></span></pre></div>
<a id="trunkSourceWTFwtfThreadingPthreadscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/ThreadingPthreads.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/ThreadingPthreads.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/ThreadingPthreads.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> #include "dtoa/cached-powers.h"
</span><span class="cx"> #include "HashMap.h"
</span><span class="cx"> #include "RandomNumberSeed.h"
</span><del>-#include "StackStats.h"
</del><span class="cx"> #include "StdLibExtras.h"
</span><span class="cx"> #include "ThreadFunctionInvocation.h"
</span><span class="cx"> #include "ThreadIdentifierDataPthreads.h"
</span><span class="lines">@@ -124,7 +123,6 @@
</span><span class="cx"> threadMapMutex();
</span><span class="cx"> initializeRandomNumberGenerator();
</span><span class="cx"> ThreadIdentifierData::initializeOnce();
</span><del>- StackStats::initialize();
</del><span class="cx"> wtfThreadData();
</span><span class="cx"> initializeDates();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWTFwtfmacDeprecatedSymbolsUsedBySafarimm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/mac/DeprecatedSymbolsUsedBySafari.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/mac/DeprecatedSymbolsUsedBySafari.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/mac/DeprecatedSymbolsUsedBySafari.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include "NeverDestroyed.h"
</span><span class="cx"> #include "StdLibExtras.h"
</span><span class="cx"> #include <mutex>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx">
</span><span class="cx"> // This file contains deprecated symbols that the last released version of Safari uses.
</span><span class="cx"> // Once Safari stops using them, we should remove them.
</span><span class="lines">@@ -45,25 +46,16 @@
</span><span class="cx"> callOnMainThread(std::function<void ()>(function));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static std::mutex& atomicallyInitializedStaticMutex()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
- std::call_once(onceFlag, []{
- mutex.construct();
- });
</del><ins>+static StaticLock atomicallyInitializedStaticMutex;
</ins><span class="cx">
</span><del>- return mutex;
-}
-
</del><span class="cx"> void lockAtomicallyInitializedStaticMutex()
</span><span class="cx"> {
</span><del>- atomicallyInitializedStaticMutex().lock();
</del><ins>+ atomicallyInitializedStaticMutex.lock();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void unlockAtomicallyInitializedStaticMutex()
</span><span class="cx"> {
</span><del>- atomicallyInitializedStaticMutex().unlock();
</del><ins>+ atomicallyInitializedStaticMutex.unlock();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WTF
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringView.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringView.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/text/StringView.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx">
</span><span class="cx"> #include <mutex>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/unicode/UTF8.h>
</span><span class="cx">
</span><span class="lines">@@ -117,11 +118,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static std::mutex& underlyingStringsMutex()
-{
- static NeverDestroyed<std::mutex> mutex;
- return mutex;
-}
</del><ins>+static StaticLock underlyingStringsMutex;
</ins><span class="cx">
</span><span class="cx"> static HashMap<const StringImpl*, StringView::UnderlyingString*>& underlyingStrings()
</span><span class="cx"> {
</span><span class="lines">@@ -133,7 +130,7 @@
</span><span class="cx"> {
</span><span class="cx"> UnderlyingString* underlyingString;
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(underlyingStringsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(underlyingStringsMutex);
</ins><span class="cx"> underlyingString = underlyingStrings().take(&stringToBeDestroyed);
</span><span class="cx"> if (!underlyingString)
</span><span class="cx"> return;
</span><span class="lines">@@ -152,7 +149,7 @@
</span><span class="cx"> if (m_underlyingString) {
</span><span class="cx"> if (!--m_underlyingString->refCount) {
</span><span class="cx"> if (m_underlyingString->isValid) {
</span><del>- std::lock_guard<std::mutex> lock(underlyingStringsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(underlyingStringsMutex);
</ins><span class="cx"> underlyingStrings().remove(&m_underlyingString->string);
</span><span class="cx"> }
</span><span class="cx"> delete m_underlyingString;
</span><span class="lines">@@ -167,7 +164,7 @@
</span><span class="cx"> if (!string)
</span><span class="cx"> underlyingString = nullptr;
</span><span class="cx"> else {
</span><del>- std::lock_guard<std::mutex> lock(underlyingStringsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(underlyingStringsMutex);
</ins><span class="cx"> auto result = underlyingStrings().add(string, nullptr);
</span><span class="cx"> if (result.isNewEntry)
</span><span class="cx"> result.iterator->value = new UnderlyingString(*string);
</span></span></pre></div>
<a id="trunkSourceWTFwtfunicodeicuCollatorICUcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/unicode/icu/CollatorICU.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/unicode/icu/CollatorICU.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WTF/wtf/unicode/icu/CollatorICU.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx">
</span><span class="cx"> #include <mutex>
</span><span class="cx"> #include <unicode/ucol.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/StringExtras.h>
</span><span class="cx"> #include <wtf/text/StringView.h>
</span><span class="lines">@@ -50,18 +51,8 @@
</span><span class="cx"> static char* cachedCollatorLocale;
</span><span class="cx"> static bool cachedCollatorShouldSortLowercaseFirst;
</span><span class="cx">
</span><del>-static std::mutex& cachedCollatorMutex()
-{
- static std::once_flag onceFlag;
</del><ins>+static StaticLock cachedCollatorMutex;
</ins><span class="cx">
</span><del>- static LazyNeverDestroyed<std::mutex> mutex;
- std::call_once(onceFlag, []{
- mutex.construct();
- });
-
- return mutex;
-}
-
</del><span class="cx"> #if !(OS(DARWIN) && USE(CF))
</span><span class="cx">
</span><span class="cx"> static inline const char* resolveDefaultLocale(const char* locale)
</span><span class="lines">@@ -117,7 +108,7 @@
</span><span class="cx"> UErrorCode status = U_ZERO_ERROR;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(cachedCollatorMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(cachedCollatorMutex);
</ins><span class="cx"> if (cachedCollator && localesMatch(cachedCollatorLocale, locale) && cachedCollatorShouldSortLowercaseFirst == shouldSortLowercaseFirst) {
</span><span class="cx"> m_collator = cachedCollator;
</span><span class="cx"> m_locale = cachedCollatorLocale;
</span><span class="lines">@@ -147,7 +138,7 @@
</span><span class="cx">
</span><span class="cx"> Collator::~Collator()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(cachedCollatorMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(cachedCollatorMutex);
</ins><span class="cx"> if (cachedCollator) {
</span><span class="cx"> ucol_close(cachedCollator);
</span><span class="cx"> fastFree(cachedCollatorLocale);
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/ChangeLog        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,3 +1,142 @@
</span><ins>+2015-08-18 Filip Pizlo <fpizlo@apple.com>
+
+ Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
+ https://bugs.webkit.org/show_bug.cgi?id=148140
+
+ Reviewed by Geoffrey Garen.
+
+ No new tests because no new behavior.
+
+ * Modules/webaudio/AudioBufferSourceNode.cpp:
+ (WebCore::AudioBufferSourceNode::process):
+ (WebCore::AudioBufferSourceNode::setBuffer):
+ * Modules/webaudio/AudioBufferSourceNode.h:
+ * Modules/webaudio/AudioParamTimeline.cpp:
+ (WebCore::AudioParamTimeline::insertEvent):
+ (WebCore::AudioParamTimeline::cancelScheduledValues):
+ (WebCore::AudioParamTimeline::valueForContextTime):
+ (WebCore::AudioParamTimeline::valuesForTimeRange):
+ * Modules/webaudio/AudioParamTimeline.h:
+ * Modules/webaudio/ConvolverNode.cpp:
+ (WebCore::ConvolverNode::process):
+ (WebCore::ConvolverNode::reset):
+ (WebCore::ConvolverNode::setBuffer):
+ * Modules/webaudio/ConvolverNode.h:
+ * Modules/webaudio/MediaElementAudioSourceNode.cpp:
+ (WebCore::MediaElementAudioSourceNode::process):
+ * Modules/webaudio/MediaElementAudioSourceNode.h:
+ * Modules/webaudio/MediaStreamAudioSourceNode.cpp:
+ (WebCore::MediaStreamAudioSourceNode::setFormat):
+ (WebCore::MediaStreamAudioSourceNode::process):
+ * Modules/webaudio/MediaStreamAudioSourceNode.h:
+ * Modules/webaudio/OscillatorNode.cpp:
+ (WebCore::OscillatorNode::process):
+ (WebCore::OscillatorNode::setPeriodicWave):
+ * Modules/webaudio/OscillatorNode.h:
+ * Modules/webaudio/PannerNode.cpp:
+ (WebCore::PannerNode::process):
+ (WebCore::PannerNode::setPanningModel):
+ * Modules/webaudio/PannerNode.h:
+ * Modules/webaudio/WaveShaperProcessor.cpp:
+ (WebCore::WaveShaperProcessor::setCurve):
+ (WebCore::WaveShaperProcessor::setOversample):
+ (WebCore::WaveShaperProcessor::process):
+ * Modules/webaudio/WaveShaperProcessor.h:
+ * Modules/webdatabase/Database.cpp:
+ (WebCore::retrieveTextResultFromDatabase):
+ (WebCore::guidToVersionMap):
+ (WebCore::Database::Database):
+ (WebCore::Database::performOpenAndVerify):
+ (WebCore::Database::closeDatabase):
+ (WebCore::Database::getCachedVersion):
+ (WebCore::Database::setCachedVersion):
+ (WebCore::guidMutex): Deleted.
+ * Modules/webdatabase/DatabaseManager.cpp:
+ (WebCore::DatabaseManager::existingDatabaseContextFor):
+ (WebCore::DatabaseManager::registerDatabaseContext):
+ (WebCore::DatabaseManager::unregisterDatabaseContext):
+ (WebCore::DatabaseManager::didConstructDatabaseContext):
+ (WebCore::DatabaseManager::didDestructDatabaseContext):
+ (WebCore::DatabaseManager::addProposedDatabase):
+ (WebCore::DatabaseManager::removeProposedDatabase):
+ (WebCore::DatabaseManager::fullPathForDatabase):
+ (WebCore::DatabaseManager::detailsForNameAndOrigin):
+ * Modules/webdatabase/DatabaseManager.h:
+ * bindings/objc/DOMInternal.mm:
+ (getDOMWrapper):
+ (addDOMWrapper):
+ (removeDOMWrapper):
+ (wrapperCacheLock): Deleted.
+ * crypto/CryptoAlgorithmRegistry.cpp:
+ (WebCore::CryptoAlgorithmRegistry::singleton):
+ (WebCore::CryptoAlgorithmRegistry::CryptoAlgorithmRegistry):
+ (WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
+ (WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
+ (WebCore::CryptoAlgorithmRegistry::create):
+ (WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
+ (WebCore::registryMutex): Deleted.
+ * inspector/WorkerDebuggerAgent.cpp:
+ (WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
+ (WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
+ (WebCore::WorkerDebuggerAgent::interruptAndDispatchInspectorCommands):
+ * page/WheelEventTestTrigger.cpp:
+ (WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
+ (WebCore::WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer):
+ (WebCore::WheelEventTestTrigger::deferTestsForReason):
+ (WebCore::WheelEventTestTrigger::removeTestDeferralForReason):
+ (WebCore::WheelEventTestTrigger::triggerTestTimerFired):
+ * page/WheelEventTestTrigger.h:
+ * page/scrolling/ScrollingThread.cpp:
+ (WebCore::ScrollingThread::dispatch):
+ (WebCore::ScrollingThread::createThreadIfNeeded):
+ (WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread):
+ * page/scrolling/ScrollingThread.h:
+ * page/scrolling/mac/ScrollingThreadMac.mm:
+ (WebCore::ScrollingThread::initializeRunLoop):
+ * platform/audio/ReverbConvolver.cpp:
+ (WebCore::ReverbConvolver::~ReverbConvolver):
+ (WebCore::ReverbConvolver::backgroundThreadEntry):
+ (WebCore::ReverbConvolver::process):
+ (WebCore::ReverbConvolver::reset):
+ * platform/audio/ReverbConvolver.h:
+ * platform/ios/wak/WebCoreThreadRun.cpp:
+ * platform/mac/Language.mm:
+ (WebCore::preferredLanguages):
+ (+[WebLanguageChangeObserver languagePreferencesDidChange:]):
+ (WebCore::platformUserPreferredLanguages):
+ (WebCore::preferredLanguagesMutex): Deleted.
+ * platform/network/cf/LoaderRunLoopCF.cpp:
+ (WebCore::emptyPerform):
+ (WebCore::runLoaderThread):
+ (WebCore::loaderRunLoop):
+ (WebCore::loaderRunLoopMutex): Deleted.
+ (WebCore::loaderRunLoopConditionVariable): Deleted.
+ * platform/network/cf/SocketStreamHandleCFNet.cpp:
+ (WebCore::callOnMainThreadAndWait):
+ * platform/network/curl/SocketStreamHandle.h:
+ * platform/network/curl/SocketStreamHandleCurl.cpp:
+ (WebCore::SocketStreamHandle::platformSend):
+ (WebCore::SocketStreamHandle::sendData):
+ * platform/sql/SQLiteDatabaseTracker.cpp:
+ (WebCore::SQLiteDatabaseTracker::setClient):
+ (WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
+ (WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
+ (WebCore::SQLiteDatabaseTracker::transactionInProgressMutex): Deleted.
+ * platform/text/TextBreakIterator.cpp:
+ (WebCore::compareAndSwapNonSharedCharacterBreakIterator):
+ * platform/text/TextEncodingRegistry.cpp:
+ (WebCore::newTextCodec):
+ (WebCore::atomicCanonicalTextEncodingName):
+ (WebCore::dumpTextEncodingNameMap):
+ (WebCore::encodingRegistryMutex): Deleted.
+ * workers/WorkerThread.cpp:
+ (WebCore::workerThreads):
+ (WebCore::WorkerThread::workerThreadCount):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::~WorkerThread):
+ (WebCore::WorkerThread::releaseFastMallocFreeMemoryInAllThreads):
+ (WebCore::threadSetMutex): Deleted.
+
</ins><span class="cx"> 2015-08-18 Wenson Hsieh <wenson_hsieh@apple.com>
</span><span class="cx">
</span><span class="cx"> Scroll snapping should trigger when receiving a momentum end wheel event
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // The audio thread can't block on this lock, so we use std::try_to_lock instead.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // Too bad - the try_lock() failed. We must be in the middle of changing buffers and were already outputting silence anyway.
</span><span class="cx"> outputBus->zero();
</span><span class="lines">@@ -416,7 +416,7 @@
</span><span class="cx"> AudioContext::AutoLocker contextLocker(*context());
</span><span class="cx">
</span><span class="cx"> // This synchronizes with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx">
</span><span class="cx"> if (buffer) {
</span><span class="cx"> // Do any necesssary re-configuration to the buffer's number of channels.
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include "ExceptionCode.h"
</span><span class="cx"> #include "PannerNode.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx">
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx"> PannerNode* m_pannerNode;
</span><span class="cx">
</span><span class="cx"> // This synchronizes process() with setBuffer() which can cause dynamic channel count changes.
</span><del>- mutable std::mutex m_processMutex;
</del><ins>+ mutable Lock m_processMutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioParamTimelinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> if (!isValid)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(m_eventsMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_eventsMutex);
</ins><span class="cx">
</span><span class="cx"> unsigned i = 0;
</span><span class="cx"> float insertTime = event.time();
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">
</span><span class="cx"> void AudioParamTimeline::cancelScheduledValues(float startTime)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_eventsMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_eventsMutex);
</ins><span class="cx">
</span><span class="cx"> // Remove all events starting at startTime.
</span><span class="cx"> for (unsigned i = 0; i < m_events.size(); ++i) {
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> ASSERT(context);
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::unique_lock<std::mutex> lock(m_eventsMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_eventsMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock() || !context || !m_events.size() || context->currentTime() < m_events[0].time()) {
</span><span class="cx"> hasValue = false;
</span><span class="cx"> return defaultValue;
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> float AudioParamTimeline::valuesForTimeRange(double startTime, double endTime, float defaultValue, float* values, unsigned numberOfValues, double sampleRate, double controlRate)
</span><span class="cx"> {
</span><span class="cx"> // We can't contend the lock in the realtime audio thread.
</span><del>- std::unique_lock<std::mutex> lock(m_eventsMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_eventsMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> if (values) {
</span><span class="cx"> for (unsigned i = 0; i < numberOfValues; ++i)
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioParamTimelineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> #define AudioParamTimeline_h
</span><span class="cx">
</span><span class="cx"> #include "AudioContext.h"
</span><del>-#include <mutex>
</del><span class="cx"> #include <runtime/Float32Array.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">
</span><span class="cx"> Vector<ParamEvent> m_events;
</span><span class="cx">
</span><del>- std::mutex m_eventsMutex;
</del><ins>+ Lock m_eventsMutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioConvolverNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/ConvolverNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> ASSERT(outputBus);
</span><span class="cx">
</span><span class="cx"> // Synchronize with possible dynamic changes to the impulse response.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // Too bad - the try_lock() failed. We must be in the middle of setting a new impulse response.
</span><span class="cx"> outputBus->zero();
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">
</span><span class="cx"> void ConvolverNode::reset()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx"> if (m_reverb)
</span><span class="cx"> m_reverb->reset();
</span><span class="cx"> }
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> // Synchronize with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx"> m_reverb = WTF::move(reverb);
</span><span class="cx"> m_buffer = buffer;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioConvolverNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ConvolverNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ConvolverNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/ConvolverNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx">
</span><span class="cx"> #include "AudioNode.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> RefPtr<AudioBuffer> m_buffer;
</span><span class="cx">
</span><span class="cx"> // This synchronizes dynamic changes to the convolution impulse response with process().
</span><del>- mutable std::mutex m_processMutex;
</del><ins>+ mutable Lock m_processMutex;
</ins><span class="cx">
</span><span class="cx"> // Normalize the impulse response or not. Must default to true.
</span><span class="cx"> bool m_normalize;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaElementAudioSourceNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> // Use a std::try_to_lock to avoid contention in the real-time audio thread.
</span><span class="cx"> // If we fail to acquire the lock then the HTMLMediaElement must be in the middle of
</span><span class="cx"> // reconfiguring its playback engine, so we output silence in this case.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // We failed to acquire the lock.
</span><span class="cx"> outputBus->zero();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaElementAudioSourceNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include "HTMLMediaElement.h"
</span><span class="cx"> #include "MultiChannelResampler.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> virtual bool propagatesSilence() const override { return false; }
</span><span class="cx">
</span><span class="cx"> RefPtr<HTMLMediaElement> m_mediaElement;
</span><del>- std::mutex m_processMutex;
</del><ins>+ Lock m_processMutex;
</ins><span class="cx">
</span><span class="cx"> unsigned m_sourceNumberOfChannels;
</span><span class="cx"> double m_sourceSampleRate;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Synchronize with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx">
</span><span class="cx"> m_sourceNumberOfChannels = numberOfChannels;
</span><span class="cx">
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> // Use std::try_to_lock to avoid contention in the real-time audio thread.
</span><span class="cx"> // If we fail to acquire the lock then the MediaStream must be in the middle of
</span><span class="cx"> // a format change, so we output silence in this case.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // We failed to acquire the lock.
</span><span class="cx"> outputBus->zero();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include "AudioSourceProvider.h"
</span><span class="cx"> #include "AudioSourceProviderClient.h"
</span><span class="cx"> #include "MediaStream.h"
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> RefPtr<MediaStreamTrack> m_audioTrack;
</span><span class="cx"> AudioSourceProvider* m_audioSourceProvider;
</span><span class="cx">
</span><del>- std::mutex m_processMutex;
</del><ins>+ Lock m_processMutex;
</ins><span class="cx">
</span><span class="cx"> unsigned m_sourceNumberOfChannels;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioOscillatorNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // The audio thread can't block on this lock, so we use std::try_to_lock instead.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // Too bad - the try_lock() failed. We must be in the middle of changing wave-tables.
</span><span class="cx"> outputBus->zero();
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx"> ASSERT(isMainThread());
</span><span class="cx">
</span><span class="cx"> // This synchronizes with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx"> m_periodicWave = periodicWave;
</span><span class="cx"> m_type = CUSTOM;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioOscillatorNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #include "AudioBus.h"
</span><span class="cx"> #include "AudioParam.h"
</span><span class="cx"> #include "AudioScheduledSourceNode.h"
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx">
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> double m_virtualReadIndex;
</span><span class="cx">
</span><span class="cx"> // This synchronizes process().
</span><del>- mutable std::mutex m_processMutex;
</del><ins>+ mutable Lock m_processMutex;
</ins><span class="cx">
</span><span class="cx"> // Stores sample-accurate values calculated according to frequency and detune.
</span><span class="cx"> AudioFloatArray m_phaseIncrements;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioPannerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/PannerNode.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // The audio thread can't block on this lock, so we use std::try_to_lock instead.
</span><del>- std::unique_lock<std::mutex> lock(m_pannerMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_pannerMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // Too bad - The try_lock() failed. We must be in the middle of changing the panner.
</span><span class="cx"> destination->zero();
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> case HRTF:
</span><span class="cx"> if (!m_panner.get() || model != m_panningModel) {
</span><span class="cx"> // This synchronizes with process().
</span><del>- std::lock_guard<std::mutex> lock(m_pannerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_pannerMutex);
</ins><span class="cx">
</span><span class="cx"> m_panner = Panner::create(model, sampleRate(), m_hrtfDatabaseLoader.get());
</span><span class="cx"> m_panningModel = model;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioPannerNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/PannerNode.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/PannerNode.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/PannerNode.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #include "HRTFDatabaseLoader.h"
</span><span class="cx"> #include "Panner.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> unsigned m_connectionCount;
</span><span class="cx">
</span><span class="cx"> // Synchronize process() and setPanningModel() which can change the panner.
</span><del>- mutable std::mutex m_pannerMutex;
</del><ins>+ mutable Lock m_pannerMutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioWaveShaperProcessorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> void WaveShaperProcessor::setCurve(Float32Array* curve)
</span><span class="cx"> {
</span><span class="cx"> // This synchronizes with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx">
</span><span class="cx"> m_curve = curve;
</span><span class="cx"> }
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> void WaveShaperProcessor::setOversample(OverSampleType oversample)
</span><span class="cx"> {
</span><span class="cx"> // This synchronizes with process().
</span><del>- std::lock_guard<std::mutex> lock(m_processMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_processMutex);
</ins><span class="cx">
</span><span class="cx"> m_oversample = oversample;
</span><span class="cx">
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // The audio thread can't block on this lock, so we use std::try_to_lock instead.
</span><del>- std::unique_lock<std::mutex> lock(m_processMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_processMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock()) {
</span><span class="cx"> // Too bad - the try_lock() failed. We must be in the middle of a setCurve() call.
</span><span class="cx"> destination->zero();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioWaveShaperProcessorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,8 +29,8 @@
</span><span class="cx"> #include "AudioDSPKernelProcessor.h"
</span><span class="cx"> #include "AudioNode.h"
</span><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><span class="cx"> #include <runtime/Float32Array.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> OverSampleType m_oversample;
</span><span class="cx">
</span><span class="cx"> // This synchronizes process() with setCurve().
</span><del>- mutable std::mutex m_processMutex;
</del><ins>+ mutable Lock m_processMutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/Database.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -157,18 +157,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // FIXME: move all guid-related functions to a DatabaseVersionTracker class.
</span><del>-static std::mutex& guidMutex()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
</del><ins>+static StaticLock guidMutex;
</ins><span class="cx">
</span><del>- std::call_once(onceFlag, [] {
- mutex.construct();
- });
-
- return mutex;
-}
-
</del><span class="cx"> typedef HashMap<DatabaseGuid, String> GuidVersionMap;
</span><span class="cx"> static GuidVersionMap& guidToVersionMap()
</span><span class="cx"> {
</span><span class="lines">@@ -233,7 +223,7 @@
</span><span class="cx"> m_name = emptyString();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> locker(guidMutex());
</del><ins>+ std::lock_guard<StaticLock> locker(guidMutex);
</ins><span class="cx">
</span><span class="cx"> m_guid = guidForOriginAndName(securityOrigin()->toString(), name);
</span><span class="cx"> std::unique_ptr<HashSet<Database*>>& hashSet = guidToDatabaseMap().add(m_guid, nullptr).iterator->value;
</span><span class="lines">@@ -370,7 +360,7 @@
</span><span class="cx">
</span><span class="cx"> String currentVersion;
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> locker(guidMutex());
</del><ins>+ std::lock_guard<StaticLock> locker(guidMutex);
</ins><span class="cx">
</span><span class="cx"> auto entry = guidToVersionMap().find(m_guid);
</span><span class="cx"> if (entry != guidToVersionMap().end()) {
</span><span class="lines">@@ -465,7 +455,7 @@
</span><span class="cx"> // See comment at the top this file regarding calling removeOpenDatabase().
</span><span class="cx"> DatabaseTracker::tracker().removeOpenDatabase(this);
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> locker(guidMutex());
</del><ins>+ std::lock_guard<StaticLock> locker(guidMutex);
</ins><span class="cx">
</span><span class="cx"> auto it = guidToDatabaseMap().find(m_guid);
</span><span class="cx"> ASSERT(it != guidToDatabaseMap().end());
</span><span class="lines">@@ -524,7 +514,7 @@
</span><span class="cx">
</span><span class="cx"> String Database::getCachedVersion() const
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> locker(guidMutex());
</del><ins>+ std::lock_guard<StaticLock> locker(guidMutex);
</ins><span class="cx">
</span><span class="cx"> return guidToVersionMap().get(m_guid).isolatedCopy();
</span><span class="cx"> }
</span><span class="lines">@@ -532,7 +522,7 @@
</span><span class="cx"> void Database::setCachedVersion(const String& actualVersion)
</span><span class="cx"> {
</span><span class="cx"> // Update the in memory database version map.
</span><del>- std::lock_guard<std::mutex> locker(guidMutex());
</del><ins>+ std::lock_guard<StaticLock> locker(guidMutex);
</ins><span class="cx">
</span><span class="cx"> updateGuidVersionMap(m_guid, actualVersion);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabaseManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<DatabaseContext> DatabaseManager::existingDatabaseContextFor(ScriptExecutionContext* context)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(m_databaseContextRegisteredCount >= 0);
</span><span class="cx"> ASSERT(m_databaseContextInstanceCount >= 0);
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx">
</span><span class="cx"> void DatabaseManager::registerDatabaseContext(DatabaseContext* databaseContext)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> ScriptExecutionContext* context = databaseContext->scriptExecutionContext();
</span><span class="cx"> m_contextMap.set(context, databaseContext);
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">
</span><span class="cx"> void DatabaseManager::unregisterDatabaseContext(DatabaseContext* databaseContext)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> ScriptExecutionContext* context = databaseContext->scriptExecutionContext();
</span><span class="cx"> ASSERT(m_contextMap.get(context));
</span><span class="lines">@@ -162,14 +162,14 @@
</span><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx"> void DatabaseManager::didConstructDatabaseContext()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_databaseContextInstanceCount++;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void DatabaseManager::didDestructDatabaseContext()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_databaseContextInstanceCount--;
</span><span class="cx"> ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount);
</span><span class="lines">@@ -258,14 +258,14 @@
</span><span class="cx">
</span><span class="cx"> void DatabaseManager::addProposedDatabase(ProposedDatabase* proposedDb)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_proposedDatabases.add(proposedDb);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void DatabaseManager::removeProposedDatabase(ProposedDatabase* proposedDb)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> m_proposedDatabases.remove(proposedDb);
</span><span class="cx"> }
</span><span class="lines">@@ -320,7 +320,7 @@
</span><span class="cx"> String DatabaseManager::fullPathForDatabase(SecurityOrigin* origin, const String& name, bool createIfDoesNotExist)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> for (auto* proposedDatabase : m_proposedDatabases) {
</span><span class="cx"> if (proposedDatabase->details().name() == name && proposedDatabase->origin()->equal(origin))
</span><span class="lines">@@ -349,7 +349,7 @@
</span><span class="cx"> DatabaseDetails DatabaseManager::detailsForNameAndOrigin(const String& name, SecurityOrigin* origin)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> for (auto* proposedDatabase : m_proposedDatabases) {
</span><span class="cx"> if (proposedDatabase->details().name() == name && proposedDatabase->origin()->equal(origin)) {
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabaseManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,10 +29,10 @@
</span><span class="cx"> #include "DatabaseBasicTypes.h"
</span><span class="cx"> #include "DatabaseDetails.h"
</span><span class="cx"> #include "DatabaseError.h"
</span><del>-#include <mutex>
</del><span class="cx"> #include <wtf/Assertions.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/PassRefPtr.h>
</span><span class="cx"> #include <wtf/Threading.h>
</span><span class="cx">
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx"> HashSet<ProposedDatabase*> m_proposedDatabases;
</span><span class="cx">
</span><span class="cx"> // This mutex protects m_contextMap, and m_proposedDatabases.
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsobjcDOMInternalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/objc/DOMInternal.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/objc/DOMInternal.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/bindings/objc/DOMInternal.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #import "ScriptController.h"
</span><span class="cx"> #import "WebScriptObjectPrivate.h"
</span><span class="cx"> #import "runtime_root.h"
</span><ins>+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/NeverDestroyed.h>
</span><span class="cx"> #import <wtf/spi/cocoa/NSMapTableSPI.h>
</span><span class="cx">
</span><span class="lines">@@ -46,16 +47,7 @@
</span><span class="cx"> static NSMapTable* DOMWrapperCache;
</span><span class="cx">
</span><span class="cx"> #ifdef NEEDS_WRAPPER_CACHE_LOCK
</span><del>-static std::mutex& wrapperCacheLock()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
-
- std::call_once(onceFlag, [] {
- mutex.construct();
- });
- return mutex;
-}
</del><ins>+static StaticLock wrapperCacheLock;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if COMPILER(CLANG)
</span><span class="lines">@@ -78,7 +70,7 @@
</span><span class="cx"> NSObject* getDOMWrapper(DOMObjectInternal* impl)
</span><span class="cx"> {
</span><span class="cx"> #ifdef NEEDS_WRAPPER_CACHE_LOCK
</span><del>- std::lock_guard<std::mutex> lock(wrapperCacheLock());
</del><ins>+ std::lock_guard<StaticLock> lock(wrapperCacheLock);
</ins><span class="cx"> #endif
</span><span class="cx"> if (!DOMWrapperCache)
</span><span class="cx"> return nil;
</span><span class="lines">@@ -88,7 +80,7 @@
</span><span class="cx"> void addDOMWrapper(NSObject* wrapper, DOMObjectInternal* impl)
</span><span class="cx"> {
</span><span class="cx"> #ifdef NEEDS_WRAPPER_CACHE_LOCK
</span><del>- std::lock_guard<std::mutex> lock(wrapperCacheLock());
</del><ins>+ std::lock_guard<StaticLock> lock(wrapperCacheLock);
</ins><span class="cx"> #endif
</span><span class="cx"> if (!DOMWrapperCache)
</span><span class="cx"> DOMWrapperCache = createWrapperCache();
</span><span class="lines">@@ -98,7 +90,7 @@
</span><span class="cx"> void removeDOMWrapper(DOMObjectInternal* impl)
</span><span class="cx"> {
</span><span class="cx"> #ifdef NEEDS_WRAPPER_CACHE_LOCK
</span><del>- std::lock_guard<std::mutex> lock(wrapperCacheLock());
</del><ins>+ std::lock_guard<StaticLock> lock(wrapperCacheLock);
</ins><span class="cx"> #endif
</span><span class="cx"> if (!DOMWrapperCache)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><span class="cx"> #include "CryptoAlgorithm.h"
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -41,18 +41,8 @@
</span><span class="cx"> return registry;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static std::mutex& registryMutex()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
</del><ins>+static StaticLock registryMutex;
</ins><span class="cx">
</span><del>- std::call_once(onceFlag, []{
- mutex.construct();
- });
-
- return mutex;
-}
-
</del><span class="cx"> CryptoAlgorithmRegistry::CryptoAlgorithmRegistry()
</span><span class="cx"> {
</span><span class="cx"> platformRegisterAlgorithms();
</span><span class="lines">@@ -63,7 +53,7 @@
</span><span class="cx"> if (name.isEmpty())
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(registryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(registryMutex);
</ins><span class="cx">
</span><span class="cx"> auto iter = m_nameToIdentifierMap.find(name.isolatedCopy());
</span><span class="cx"> if (iter == m_nameToIdentifierMap.end())
</span><span class="lines">@@ -75,14 +65,14 @@
</span><span class="cx">
</span><span class="cx"> String CryptoAlgorithmRegistry::nameForIdentifier(CryptoAlgorithmIdentifier identifier)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(registryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(registryMutex);
</ins><span class="cx">
</span><span class="cx"> return m_identifierToNameMap.get(static_cast<unsigned>(identifier)).isolatedCopy();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<CryptoAlgorithm> CryptoAlgorithmRegistry::create(CryptoAlgorithmIdentifier identifier)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(registryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(registryMutex);
</ins><span class="cx">
</span><span class="cx"> auto iter = m_identifierToConstructorMap.find(static_cast<unsigned>(identifier));
</span><span class="cx"> if (iter == m_identifierToConstructorMap.end())
</span><span class="lines">@@ -93,7 +83,7 @@
</span><span class="cx">
</span><span class="cx"> void CryptoAlgorithmRegistry::registerAlgorithm(const String& name, CryptoAlgorithmIdentifier identifier, CryptoAlgorithmConstructor constructor)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(registryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(registryMutex);
</ins><span class="cx">
</span><span class="cx"> bool added = m_nameToIdentifierMap.add(name, identifier).isNewEntry;
</span><span class="cx"> ASSERT_UNUSED(added, added);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> #include <inspector/InjectedScript.h>
</span><span class="cx"> #include <inspector/InjectedScriptManager.h>
</span><span class="cx"> #include <inspector/ScriptDebugServer.h>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/MessageQueue.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="lines">@@ -46,18 +46,8 @@
</span><span class="cx">
</span><span class="cx"> namespace {
</span><span class="cx">
</span><del>-std::mutex& workerDebuggerAgentsMutex()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
</del><ins>+StaticLock workerDebuggerAgentsMutex;
</ins><span class="cx">
</span><del>- std::call_once(onceFlag, []{
- mutex.construct();
- });
-
- return mutex;
-}
-
</del><span class="cx"> typedef HashMap<WorkerThread*, WorkerDebuggerAgent*> WorkerDebuggerAgents;
</span><span class="cx">
</span><span class="cx"> WorkerDebuggerAgents& workerDebuggerAgents()
</span><span class="lines">@@ -95,13 +85,13 @@
</span><span class="cx"> , m_scriptDebugServer(inspectedWorkerGlobalScope, WorkerDebuggerAgent::debuggerTaskMode)
</span><span class="cx"> , m_inspectedWorkerGlobalScope(inspectedWorkerGlobalScope)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(workerDebuggerAgentsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(workerDebuggerAgentsMutex);
</ins><span class="cx"> workerDebuggerAgents().set(&inspectedWorkerGlobalScope->thread(), this);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WorkerDebuggerAgent::~WorkerDebuggerAgent()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(workerDebuggerAgentsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(workerDebuggerAgentsMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(workerDebuggerAgents().contains(&m_inspectedWorkerGlobalScope->thread()));
</span><span class="cx"> workerDebuggerAgents().remove(&m_inspectedWorkerGlobalScope->thread());
</span><span class="lines">@@ -109,7 +99,7 @@
</span><span class="cx">
</span><span class="cx"> void WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(WorkerThread* thread)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(workerDebuggerAgentsMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(workerDebuggerAgentsMutex);
</ins><span class="cx">
</span><span class="cx"> if (WorkerDebuggerAgent* agent = workerDebuggerAgents().get(thread))
</span><span class="cx"> agent->m_scriptDebugServer.interruptAndRunTask(std::make_unique<RunInspectorCommandsTask>(thread, agent->m_inspectedWorkerGlobalScope));
</span></span></pre></div>
<a id="trunkSourceWebCorepageWheelEventTestTriggercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/WheelEventTestTrigger.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/WheelEventTestTrigger.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/page/WheelEventTestTrigger.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">
</span><span class="cx"> void WheelEventTestTrigger::clearAllTestDeferrals()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_testTriggerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_testTriggerMutex);
</ins><span class="cx"> m_deferTestTriggerReasons.clear();
</span><span class="cx"> m_testNotificationCallback = std::function<void()>();
</span><span class="cx"> m_testTriggerTimer.stop();
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> void WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer(std::function<void()> functionCallback)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_testTriggerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_testTriggerMutex);
</ins><span class="cx"> m_testNotificationCallback = WTF::move(functionCallback);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">
</span><span class="cx"> void WheelEventTestTrigger::deferTestsForReason(ScrollableAreaIdentifier identifier, DeferTestTriggerReason reason)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_testTriggerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_testTriggerMutex);
</ins><span class="cx"> auto it = m_deferTestTriggerReasons.find(identifier);
</span><span class="cx"> if (it == m_deferTestTriggerReasons.end())
</span><span class="cx"> it = m_deferTestTriggerReasons.add(identifier, std::set<DeferTestTriggerReason>()).iterator;
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx">
</span><span class="cx"> void WheelEventTestTrigger::removeTestDeferralForReason(ScrollableAreaIdentifier identifier, DeferTestTriggerReason reason)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_testTriggerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_testTriggerMutex);
</ins><span class="cx"> auto it = m_deferTestTriggerReasons.find(identifier);
</span><span class="cx"> if (it == m_deferTestTriggerReasons.end())
</span><span class="cx"> return;
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> std::function<void()> functionCallback;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_testTriggerMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_testTriggerMutex);
</ins><span class="cx"> if (!m_deferTestTriggerReasons.isEmpty()) {
</span><span class="cx"> #if !LOG_DISABLED
</span><span class="cx"> if (isLogChannelEnabled("WheelEventTestTriggers"))
</span></span></pre></div>
<a id="trunkSourceWebCorepageWheelEventTestTriggerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/WheelEventTestTrigger.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/WheelEventTestTrigger.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/page/WheelEventTestTrigger.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx"> #ifndef WheelEventTestTrigger_h
</span><span class="cx"> #define WheelEventTestTrigger_h
</span><span class="cx">
</span><del>-#include <mutex>
</del><span class="cx"> #include <set>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx"> #include <wtf/RunLoop.h>
</span><span class="cx"> #include <wtf/ThreadSafeRefCounted.h>
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> private:
</span><span class="cx"> std::function<void()> m_testNotificationCallback;
</span><span class="cx"> RunLoop::Timer<WheelEventTestTrigger> m_testTriggerTimer;
</span><del>- mutable std::mutex m_testTriggerMutex;
</del><ins>+ mutable Lock m_testTriggerMutex;
</ins><span class="cx"> WTF::HashMap<ScrollableAreaIdentifier, std::set<DeferTestTriggerReason>> m_deferTestTriggerReasons;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/page/scrolling/ScrollingThread.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(ASYNC_SCROLLING)
</span><span class="cx">
</span><ins>+#include <mutex>
</ins><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="lines">@@ -50,7 +51,7 @@
</span><span class="cx"> scrollingThread.createThreadIfNeeded();
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(singleton().m_functionsMutex);
</del><ins>+ std::lock_guard<Lock> lock(singleton().m_functionsMutex);
</ins><span class="cx"> scrollingThread.m_functions.append(function);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -78,7 +79,7 @@
</span><span class="cx">
</span><span class="cx"> // Wait for the thread to initialize the run loop.
</span><span class="cx"> {
</span><del>- std::unique_lock<std::mutex> lock(m_initializeRunLoopMutex);
</del><ins>+ std::unique_lock<Lock> lock(m_initializeRunLoopMutex);
</ins><span class="cx">
</span><span class="cx"> m_threadIdentifier = createThread(threadCallback, this, "WebCore: Scrolling");
</span><span class="cx">
</span><span class="lines">@@ -106,7 +107,7 @@
</span><span class="cx"> Vector<std::function<void ()>> functions;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_functionsMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_functionsMutex);
</ins><span class="cx"> functions = WTF::move(m_functions);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingThread.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingThread.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/page/scrolling/ScrollingThread.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,9 +28,10 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(ASYNC_SCROLLING)
</span><span class="cx">
</span><del>-#include <condition_variable>
</del><span class="cx"> #include <functional>
</span><ins>+#include <wtf/Condition.h>
</ins><span class="cx"> #include <wtf/Forward.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/Noncopyable.h>
</span><span class="cx"> #include <wtf/Threading.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -74,10 +75,10 @@
</span><span class="cx">
</span><span class="cx"> ThreadIdentifier m_threadIdentifier;
</span><span class="cx">
</span><del>- std::condition_variable m_initializeRunLoopConditionVariable;
- std::mutex m_initializeRunLoopMutex;
</del><ins>+ Condition m_initializeRunLoopConditionVariable;
+ Lock m_initializeRunLoopMutex;
</ins><span class="cx">
</span><del>- std::mutex m_functionsMutex;
</del><ins>+ Lock m_functionsMutex;
</ins><span class="cx"> Vector<std::function<void ()>> m_functions;
</span><span class="cx">
</span><span class="cx"> #if PLATFORM(COCOA)
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingThreadMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingThreadMac.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -28,13 +28,15 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(ASYNC_SCROLLING)
</span><span class="cx">
</span><ins>+#include <mutex>
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> void ScrollingThread::initializeRunLoop()
</span><span class="cx"> {
</span><span class="cx"> // Initialize the run loop.
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_initializeRunLoopMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_initializeRunLoopMutex);
</ins><span class="cx">
</span><span class="cx"> m_threadRunLoop = CFRunLoopGetCurrent();
</span><span class="cx">
</span><span class="lines">@@ -42,7 +44,7 @@
</span><span class="cx"> m_threadRunLoopSource = adoptCF(CFRunLoopSourceCreate(0, 0, &context));
</span><span class="cx"> CFRunLoopAddSource(CFRunLoopGetCurrent(), m_threadRunLoopSource.get(), kCFRunLoopDefaultMode);
</span><span class="cx">
</span><del>- m_initializeRunLoopConditionVariable.notify_all();
</del><ins>+ m_initializeRunLoopConditionVariable.notifyAll();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ASSERT(isCurrentThread());
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformaudioReverbConvolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/audio/ReverbConvolver.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/audio/ReverbConvolver.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/audio/ReverbConvolver.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx">
</span><span class="cx"> #include "VectorMath.h"
</span><span class="cx"> #include "AudioBus.h"
</span><ins>+#include <mutex>
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -140,9 +141,9 @@
</span><span class="cx">
</span><span class="cx"> // Wake up thread so it can return
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_backgroundThreadMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_backgroundThreadMutex);
</ins><span class="cx"> m_moreInputBuffered = true;
</span><del>- m_backgroundThreadConditionVariable.notify_one();
</del><ins>+ m_backgroundThreadConditionVariable.notifyOne();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> waitForThreadCompletion(m_backgroundThread);
</span><span class="lines">@@ -155,7 +156,7 @@
</span><span class="cx"> // Wait for realtime thread to give us more input
</span><span class="cx"> m_moreInputBuffered = false;
</span><span class="cx"> {
</span><del>- std::unique_lock<std::mutex> lock(m_backgroundThreadMutex);
</del><ins>+ std::unique_lock<Lock> lock(m_backgroundThreadMutex);
</ins><span class="cx">
</span><span class="cx"> m_backgroundThreadConditionVariable.wait(lock, [this] { return m_moreInputBuffered || m_wantsToExit; });
</span><span class="cx"> }
</span><span class="lines">@@ -209,12 +210,12 @@
</span><span class="cx"> // signal from time to time, since we'll get to it the next time we're called. We're called repeatedly
</span><span class="cx"> // and frequently (around every 3ms). The background thread is processing well into the future and has a considerable amount of
</span><span class="cx"> // leeway here...
</span><del>- std::unique_lock<std::mutex> lock(m_backgroundThreadMutex, std::try_to_lock);
</del><ins>+ std::unique_lock<Lock> lock(m_backgroundThreadMutex, std::try_to_lock);
</ins><span class="cx"> if (!lock.owns_lock())
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> m_moreInputBuffered = true;
</span><del>- m_backgroundThreadConditionVariable.notify_one();
</del><ins>+ m_backgroundThreadConditionVariable.notifyOne();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ReverbConvolver::reset()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformaudioReverbConvolverh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/audio/ReverbConvolver.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/audio/ReverbConvolver.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/audio/ReverbConvolver.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx"> * Copyright (C) 2010 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -35,9 +36,9 @@
</span><span class="cx"> #include "ReverbAccumulationBuffer.h"
</span><span class="cx"> #include "ReverbConvolverStage.h"
</span><span class="cx"> #include "ReverbInputBuffer.h"
</span><del>-#include <condition_variable>
</del><span class="cx"> #include <memory>
</span><del>-#include <mutex>
</del><ins>+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/Threading.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -88,8 +89,8 @@
</span><span class="cx"> ThreadIdentifier m_backgroundThread;
</span><span class="cx"> bool m_wantsToExit;
</span><span class="cx"> bool m_moreInputBuffered;
</span><del>- mutable std::mutex m_backgroundThreadMutex;
- mutable std::condition_variable m_backgroundThreadConditionVariable;
</del><ins>+ mutable Lock m_backgroundThreadMutex;
+ mutable Condition m_backgroundThreadConditionVariable;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformioswakWebCoreThreadRuncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ios/wak/WebCoreThreadRun.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ios/wak/WebCoreThreadRun.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/ios/wak/WebCoreThreadRun.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2010 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2010, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -30,7 +30,9 @@
</span><span class="cx">
</span><span class="cx"> #include "WebCoreThread.h"
</span><span class="cx"> #include "WebCoreThreadInternal.h"
</span><del>-#include <condition_variable>
</del><ins>+#include <mutex>
+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx">
</span><span class="cx"> namespace {
</span><span class="lines">@@ -44,23 +46,23 @@
</span><span class="cx">
</span><span class="cx"> void waitForCompletion()
</span><span class="cx"> {
</span><del>- std::unique_lock<std::mutex> lock(m_stateMutex);
</del><ins>+ std::unique_lock<Lock> lock(m_stateMutex);
</ins><span class="cx">
</span><span class="cx"> m_completionConditionVariable.wait(lock, [this] { return m_completed; });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void setCompleted()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_stateMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_stateMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(!m_completed);
</span><span class="cx"> m_completed = true;
</span><del>- m_completionConditionVariable.notify_one();
</del><ins>+ m_completionConditionVariable.notifyOne();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- std::mutex m_stateMutex;
- std::condition_variable m_completionConditionVariable;
</del><ins>+ Lock m_stateMutex;
+ Condition m_completionConditionVariable;
</ins><span class="cx"> bool m_completed;
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -110,7 +112,7 @@
</span><span class="cx">
</span><span class="cx"> typedef WTF::Vector<WebThreadBlock> WebThreadRunQueue;
</span><span class="cx">
</span><del>-static std::mutex* runQueueMutex;
</del><ins>+static StaticLock runQueueMutex;
</ins><span class="cx"> static CFRunLoopSourceRef runSource;
</span><span class="cx"> static WebThreadRunQueue* runQueue;
</span><span class="cx">
</span><span class="lines">@@ -118,13 +120,12 @@
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(info);
</span><span class="cx"> ASSERT(WebThreadIsCurrent());
</span><del>- ASSERT(runQueueMutex);
</del><span class="cx"> ASSERT(runSource);
</span><span class="cx"> ASSERT(runQueue);
</span><span class="cx">
</span><span class="cx"> WebThreadRunQueue queueCopy;
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*runQueueMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(runQueueMutex);
</ins><span class="cx"> queueCopy = *runQueue;
</span><span class="cx"> runQueue->clear();
</span><span class="cx"> }
</span><span class="lines">@@ -140,7 +141,6 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ASSERT(runQueueMutex);
</del><span class="cx"> ASSERT(runSource);
</span><span class="cx"> ASSERT(runQueue);
</span><span class="cx">
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx"> state = new WebThreadBlockState;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(*runQueueMutex);
</del><ins>+ std::lock_guard<StaticLock> lock(runQueueMutex);
</ins><span class="cx"> runQueue->append(WebThreadBlock(task, state));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -175,7 +175,6 @@
</span><span class="cx"> void WebThreadInitRunQueue()
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!runQueue);
</span><del>- ASSERT(!runQueueMutex);
</del><span class="cx"> ASSERT(!runSource);
</span><span class="cx">
</span><span class="cx"> static dispatch_once_t pred;
</span><span class="lines">@@ -185,8 +184,6 @@
</span><span class="cx"> CFRunLoopSourceContext runSourceContext = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, HandleRunSource};
</span><span class="cx"> runSource = CFRunLoopSourceCreate(NULL, -1, &runSourceContext);
</span><span class="cx"> CFRunLoopAddSource(WebThreadRunLoop(), runSource, kCFRunLoopDefaultMode);
</span><del>-
- runQueueMutex = std::make_unique<std::mutex>().release();
</del><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacLanguagemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/Language.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/Language.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/mac/Language.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -31,24 +31,15 @@
</span><span class="cx"> #import "WebCoreNSStringExtras.h"
</span><span class="cx"> #import <mutex>
</span><span class="cx"> #import <wtf/Assertions.h>
</span><ins>+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/NeverDestroyed.h>
</span><span class="cx"> #import <wtf/RetainPtr.h>
</span><span class="cx"> #import <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-static std::mutex& preferredLanguagesMutex()
-{
- static dispatch_once_t onceToken;
- static std::mutex* mutex;
</del><ins>+static StaticLock preferredLanguagesMutex;
</ins><span class="cx">
</span><del>- dispatch_once(&onceToken, ^{
- mutex = std::make_unique<std::mutex>().release();
- });
-
- return *mutex;
-}
-
</del><span class="cx"> static Vector<String>& preferredLanguages()
</span><span class="cx"> {
</span><span class="cx"> static NeverDestroyed<Vector<String>> languages;
</span><span class="lines">@@ -67,7 +58,7 @@
</span><span class="cx"> UNUSED_PARAM(notification);
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(WebCore::preferredLanguagesMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(WebCore::preferredLanguagesMutex);
</ins><span class="cx"> WebCore::preferredLanguages().clear();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -118,7 +109,7 @@
</span><span class="cx">
</span><span class="cx"> BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(preferredLanguagesMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(preferredLanguagesMutex);
</ins><span class="cx"> Vector<String>& userPreferredLanguages = preferredLanguages();
</span><span class="cx">
</span><span class="cx"> if (userPreferredLanguages.isEmpty()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfLoaderRunLoopCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2009, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,9 +29,11 @@
</span><span class="cx"> #if USE(CFNETWORK)
</span><span class="cx">
</span><span class="cx"> #include <CoreFoundation/CoreFoundation.h>
</span><del>-#include <condition_variable>
</del><span class="cx"> #include <limits>
</span><ins>+#include <mutex>
</ins><span class="cx"> #include <wtf/AutodrainedPool.h>
</span><ins>+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/Threading.h>
</span><span class="lines">@@ -40,20 +42,9 @@
</span><span class="cx">
</span><span class="cx"> static CFRunLoopRef loaderRunLoopObject = 0;
</span><span class="cx">
</span><del>-static std::mutex& loaderRunLoopMutex()
-{
- static NeverDestroyed<std::mutex> mutex;
</del><ins>+static StaticLock loaderRunLoopMutex;
+static StaticCondition loaderRunLoopConditionVariable;
</ins><span class="cx">
</span><del>- return mutex;
-}
-
-static std::condition_variable& loaderRunLoopConditionVariable()
-{
- static NeverDestroyed<std::condition_variable> conditionVariable;
-
- return conditionVariable;
-}
-
</del><span class="cx"> static void emptyPerform(void*)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -61,7 +52,7 @@
</span><span class="cx"> static void runLoaderThread(void*)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(loaderRunLoopMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(loaderRunLoopMutex);
</ins><span class="cx">
</span><span class="cx"> loaderRunLoopObject = CFRunLoopGetCurrent();
</span><span class="cx">
</span><span class="lines">@@ -70,7 +61,7 @@
</span><span class="cx"> CFRunLoopSourceRef bogusSource = CFRunLoopSourceCreate(0, 0, &ctxt);
</span><span class="cx"> CFRunLoopAddSource(loaderRunLoopObject, bogusSource, kCFRunLoopDefaultMode);
</span><span class="cx">
</span><del>- loaderRunLoopConditionVariable().notify_one();
</del><ins>+ loaderRunLoopConditionVariable.notifyOne();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SInt32 result;
</span><span class="lines">@@ -84,12 +75,12 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(isMainThread());
</span><span class="cx">
</span><del>- std::unique_lock<std::mutex> lock(loaderRunLoopMutex());
</del><ins>+ std::unique_lock<StaticLock> lock(loaderRunLoopMutex);
</ins><span class="cx">
</span><span class="cx"> if (!loaderRunLoopObject) {
</span><span class="cx"> createThread(runLoaderThread, 0, "WebCore: CFNetwork Loader");
</span><span class="cx">
</span><del>- loaderRunLoopConditionVariable().wait(lock, [] { return loaderRunLoopObject; });
</del><ins>+ loaderRunLoopConditionVariable.wait(lock, [] { return loaderRunLoopObject; });
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return loaderRunLoopObject;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfSocketStreamHandleCFNetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -39,8 +39,8 @@
</span><span class="cx"> #include "ProtectionSpace.h"
</span><span class="cx"> #include "SocketStreamError.h"
</span><span class="cx"> #include "SocketStreamHandleClient.h"
</span><del>-#include <condition_variable>
-#include <mutex>
</del><ins>+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><span class="lines">@@ -136,20 +136,20 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- std::mutex mutex;
- std::condition_variable conditionVariable;
</del><ins>+ Lock mutex;
+ Condition conditionVariable;
</ins><span class="cx">
</span><span class="cx"> bool isFinished = false;
</span><span class="cx">
</span><span class="cx"> callOnMainThread([&] {
</span><span class="cx"> function();
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(mutex);
</del><ins>+ std::lock_guard<Lock> lock(mutex);
</ins><span class="cx"> isFinished = true;
</span><del>- conditionVariable.notify_one();
</del><ins>+ conditionVariable.notifyOne();
</ins><span class="cx"> });
</span><span class="cx">
</span><del>- std::unique_lock<std::mutex> lock(mutex);
</del><ins>+ std::unique_lock<Lock> lock(mutex);
</ins><span class="cx"> conditionVariable.wait(lock, [&] { return isFinished; });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcurlSocketStreamHandleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/network/curl/SocketStreamHandle.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -40,9 +40,8 @@
</span><span class="cx">
</span><span class="cx"> #include <curl/curl.h>
</span><span class="cx">
</span><del>-#include <mutex>
-
</del><span class="cx"> #include <wtf/Deque.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/Threading.h>
</span><span class="cx">
</span><span class="lines">@@ -105,8 +104,8 @@
</span><span class="cx">
</span><span class="cx"> ThreadIdentifier m_workerThread { 0 };
</span><span class="cx"> std::atomic<bool> m_stopThread { false };
</span><del>- std::mutex m_mutexSend;
- std::mutex m_mutexReceive;
</del><ins>+ Lock m_mutexSend;
+ Lock m_mutexReceive;
</ins><span class="cx"> Deque<SocketData> m_sendData;
</span><span class="cx"> Deque<SocketData> m_receiveData;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcurlSocketStreamHandleCurlcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/curl/SocketStreamHandleCurl.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/curl/SocketStreamHandleCurl.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/network/curl/SocketStreamHandleCurl.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">
</span><span class="cx"> auto copy = createCopy(data, length);
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(m_mutexSend);
</del><ins>+ std::lock_guard<Lock> lock(m_mutexSend);
</ins><span class="cx"> m_sendData.append(SocketData { WTF::move(copy), length });
</span><span class="cx">
</span><span class="cx"> return length;
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx"> const int restLength = sendData.size - totalBytesSent;
</span><span class="cx"> auto copy = createCopy(sendData.data.get() + totalBytesSent, restLength);
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(m_mutexSend);
</del><ins>+ std::lock_guard<Lock> lock(m_mutexSend);
</ins><span class="cx"> m_sendData.prepend(SocketData { WTF::move(copy), restLength });
</span><span class="cx">
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformsqlSQLiteDatabaseTrackercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #include "SQLiteDatabaseTracker.h"
</span><span class="cx">
</span><span class="cx"> #include <mutex>
</span><del>-#include <wtf/NeverDestroyed.h>
</del><ins>+#include <wtf/Lock.h>
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -36,11 +36,7 @@
</span><span class="cx"> static SQLiteDatabaseTrackerClient* s_staticSQLiteDatabaseTrackerClient = nullptr;
</span><span class="cx"> static unsigned s_transactionInProgressCounter = 0;
</span><span class="cx">
</span><del>-static std::mutex& transactionInProgressMutex()
-{
- static NeverDestroyed<std::mutex> tipMutex;
- return tipMutex;
-}
</del><ins>+static StaticLock transactionInProgressMutex;
</ins><span class="cx">
</span><span class="cx"> void setClient(SQLiteDatabaseTrackerClient* client)
</span><span class="cx"> {
</span><span class="lines">@@ -54,7 +50,7 @@
</span><span class="cx"> if (!s_staticSQLiteDatabaseTrackerClient)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(transactionInProgressMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(transactionInProgressMutex);
</ins><span class="cx">
</span><span class="cx"> s_transactionInProgressCounter++;
</span><span class="cx"> if (s_transactionInProgressCounter == 1)
</span><span class="lines">@@ -66,7 +62,7 @@
</span><span class="cx"> if (!s_staticSQLiteDatabaseTrackerClient)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(transactionInProgressMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(transactionInProgressMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(s_transactionInProgressCounter);
</span><span class="cx"> s_transactionInProgressCounter--;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextBreakIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextBreakIterator.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextBreakIterator.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/text/TextBreakIterator.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include "UTextProviderUTF16.h"
</span><span class="cx"> #include <mutex>
</span><span class="cx"> #include <wtf/Atomics.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/text/StringView.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -765,8 +766,8 @@
</span><span class="cx"> #if ENABLE(COMPARE_AND_SWAP)
</span><span class="cx"> return WTF::weakCompareAndSwap(reinterpret_cast<void**>(&nonSharedCharacterBreakIterator), expected, newValue);
</span><span class="cx"> #else
</span><del>- DEPRECATED_DEFINE_STATIC_LOCAL(std::mutex, nonSharedCharacterBreakIteratorMutex, ());
- std::lock_guard<std::mutex> locker(nonSharedCharacterBreakIteratorMutex);
</del><ins>+ static StaticLock nonSharedCharacterBreakIteratorMutex;
+ std::lock_guard<StaticLock> locker(nonSharedCharacterBreakIteratorMutex);
</ins><span class="cx"> if (nonSharedCharacterBreakIterator != expected)
</span><span class="cx"> return false;
</span><span class="cx"> nonSharedCharacterBreakIterator = newValue;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformtextTextEncodingRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/platform/text/TextEncodingRegistry.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include <wtf/ASCIICType.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/StdLibExtras.h>
</span><span class="lines">@@ -106,15 +107,8 @@
</span><span class="cx"> typedef HashMap<const char*, const char*, TextEncodingNameHash> TextEncodingNameMap;
</span><span class="cx"> typedef HashMap<const char*, TextCodecFactory> TextCodecMap;
</span><span class="cx">
</span><del>-static std::mutex& encodingRegistryMutex()
-{
- // We don't have to construct this mutex in a thread safe way because this function
- // is called on the main thread for any page before it is used in worker threads.
- static NeverDestroyed<std::mutex> mutex;
</del><ins>+static StaticLock encodingRegistryMutex;
</ins><span class="cx">
</span><del>- return mutex;
-}
-
</del><span class="cx"> static TextEncodingNameMap* textEncodingNameMap;
</span><span class="cx"> static TextCodecMap* textCodecMap;
</span><span class="cx"> static bool didExtendTextCodecMaps;
</span><span class="lines">@@ -294,7 +288,7 @@
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<TextCodec> newTextCodec(const TextEncoding& encoding)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(encodingRegistryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(encodingRegistryMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(textCodecMap);
</span><span class="cx"> TextCodecFactory factory = textCodecMap->get(encoding.name());
</span><span class="lines">@@ -310,7 +304,7 @@
</span><span class="cx"> if (!textEncodingNameMap)
</span><span class="cx"> buildBaseTextCodecMaps();
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(encodingRegistryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(encodingRegistryMutex);
</ins><span class="cx">
</span><span class="cx"> if (const char* atomicName = textEncodingNameMap->get(name))
</span><span class="cx"> return atomicName;
</span><span class="lines">@@ -377,7 +371,7 @@
</span><span class="cx"> unsigned size = textEncodingNameMap->size();
</span><span class="cx"> fprintf(stderr, "Dumping %u entries in WebCore::textEncodingNameMap...\n", size);
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(encodingRegistryMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(encodingRegistryMutex);
</ins><span class="cx">
</span><span class="cx"> TextEncodingNameMap::const_iterator it = textEncodingNameMap->begin();
</span><span class="cx"> TextEncodingNameMap::const_iterator end = textEncodingNameMap->end();
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerThread.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerThread.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebCore/workers/WorkerThread.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include "ThreadGlobalData.h"
</span><span class="cx"> #include "URL.h"
</span><span class="cx"> #include <utility>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/Noncopyable.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="lines">@@ -46,18 +47,8 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-static std::mutex& threadSetMutex()
-{
- static std::once_flag onceFlag;
- static LazyNeverDestroyed<std::mutex> mutex;
</del><ins>+static StaticLock threadSetMutex;
</ins><span class="cx">
</span><del>- std::call_once(onceFlag, []{
- mutex.construct();
- });
-
- return mutex;
-}
-
</del><span class="cx"> static HashSet<WorkerThread*>& workerThreads()
</span><span class="cx"> {
</span><span class="cx"> static NeverDestroyed<HashSet<WorkerThread*>> workerThreads;
</span><span class="lines">@@ -67,7 +58,7 @@
</span><span class="cx">
</span><span class="cx"> unsigned WorkerThread::workerThreadCount()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(threadSetMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(threadSetMutex);
</ins><span class="cx">
</span><span class="cx"> return workerThreads().size();
</span><span class="cx"> }
</span><span class="lines">@@ -106,14 +97,14 @@
</span><span class="cx"> , m_notificationClient(0)
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(threadSetMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(threadSetMutex);
</ins><span class="cx">
</span><span class="cx"> workerThreads().add(this);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WorkerThread::~WorkerThread()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(threadSetMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(threadSetMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT(workerThreads().contains(this));
</span><span class="cx"> workerThreads().remove(this);
</span><span class="lines">@@ -221,7 +212,7 @@
</span><span class="cx">
</span><span class="cx"> void WorkerThread::releaseFastMallocFreeMemoryInAllThreads()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(threadSetMutex());
</del><ins>+ std::lock_guard<StaticLock> lock(threadSetMutex);
</ins><span class="cx">
</span><span class="cx"> for (auto* workerThread : workerThreads()) {
</span><span class="cx"> workerThread->runLoop().postTask([] (ScriptExecutionContext&) {
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/ChangeLog        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2015-08-18 Filip Pizlo <fpizlo@apple.com>
+
+ Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
+ https://bugs.webkit.org/show_bug.cgi?id=148140
+
+ Reviewed by Geoffrey Garen.
+
+ * NetworkProcess/cache/NetworkCacheStorage.cpp:
+ (WebKit::NetworkCache::Storage::traverse):
+ * Platform/IPC/Connection.cpp:
+ (IPC::Connection::SyncMessageState::processIncomingMessage):
+ (IPC::Connection::SyncMessageState::dispatchMessages):
+ (IPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection):
+ (IPC::Connection::sendMessage):
+ (IPC::Connection::waitForMessage):
+ (IPC::Connection::processIncomingMessage):
+ (IPC::Connection::installIncomingSyncMessageCallback):
+ (IPC::Connection::uninstallIncomingSyncMessageCallback):
+ (IPC::Connection::hasIncomingSyncMessage):
+ (IPC::Connection::connectionDidClose):
+ (IPC::Connection::sendOutgoingMessages):
+ (IPC::Connection::enqueueIncomingMessage):
+ (IPC::Connection::dispatchOneMessage):
+ * Platform/IPC/Connection.h:
+ * Shared/BlockingResponseMap.h:
+ (BlockingResponseMap::waitForResponse):
+ (BlockingResponseMap::didReceiveResponse):
+ (BlockingResponseMap::cancel):
+ * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
+ (WebKit::PluginInfoCache::saveToFile):
+ (WebKit::PluginInfoCache::updatePluginInfo):
+ * UIProcess/Plugins/gtk/PluginInfoCache.h:
+ * UIProcess/mac/WKPrintingView.h:
+ * UIProcess/mac/WKPrintingView.mm:
+ (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
+ (prepareDataForPrintingOnSecondaryThread):
+ (-[WKPrintingView knowsPageRange:]):
+
</ins><span class="cx"> 2015-08-19 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> WebKit may keep outdated entry in the disk cache after a reload
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCacheStoragecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -32,7 +32,9 @@
</span><span class="cx"> #include "NetworkCacheCoders.h"
</span><span class="cx"> #include "NetworkCacheFileSystem.h"
</span><span class="cx"> #include "NetworkCacheIOChannel.h"
</span><del>-#include <condition_variable>
</del><ins>+#include <mutex>
+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/RandomNumber.h>
</span><span class="cx"> #include <wtf/RunLoop.h>
</span><span class="cx"> #include <wtf/text/CString.h>
</span><span class="lines">@@ -119,8 +121,8 @@
</span><span class="cx"> const TraverseFlags flags;
</span><span class="cx"> const TraverseHandler handler;
</span><span class="cx">
</span><del>- std::mutex activeMutex;
- std::condition_variable activeCondition;
</del><ins>+ Lock activeMutex;
+ Condition activeCondition;
</ins><span class="cx"> unsigned activeCount { 0 };
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -791,7 +793,7 @@
</span><span class="cx"> if (traverseOperation.flags & TraverseFlag::ShareCount)
</span><span class="cx"> bodyShareCount = m_blobStorage.shareCount(bodyPathForRecordPath(recordPath));
</span><span class="cx">
</span><del>- std::unique_lock<std::mutex> lock(traverseOperation.activeMutex);
</del><ins>+ std::unique_lock<Lock> lock(traverseOperation.activeMutex);
</ins><span class="cx"> ++traverseOperation.activeCount;
</span><span class="cx">
</span><span class="cx"> auto channel = IOChannel::open(recordPath, IOChannel::Type::Read);
</span><span class="lines">@@ -814,9 +816,9 @@
</span><span class="cx"> traverseOperation.handler(&record, info);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(traverseOperation.activeMutex);
</del><ins>+ std::lock_guard<Lock> lock(traverseOperation.activeMutex);
</ins><span class="cx"> --traverseOperation.activeCount;
</span><del>- traverseOperation.activeCondition.notify_one();
</del><ins>+ traverseOperation.activeCondition.notifyOne();
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> const unsigned maximumParallelReadCount = 5;
</span><span class="lines">@@ -825,7 +827,7 @@
</span><span class="cx"> });
</span><span class="cx"> });
</span><span class="cx"> // Wait for all reads to finish.
</span><del>- std::unique_lock<std::mutex> lock(traverseOperation.activeMutex);
</del><ins>+ std::unique_lock<Lock> lock(traverseOperation.activeMutex);
</ins><span class="cx"> traverseOperation.activeCondition.wait(lock, [&traverseOperation] {
</span><span class="cx"> return !traverseOperation.activeCount;
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformIPCConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/IPC/Connection.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Platform/IPC/Connection.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/Platform/IPC/Connection.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> BinarySemaphore m_waitForSyncReplySemaphore;
</span><span class="cx">
</span><span class="cx"> // Protects m_didScheduleDispatchMessagesWorkSet and m_messagesToDispatchWhileWaitingForSyncReply.
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx">
</span><span class="cx"> // The set of connections for which we've scheduled a call to dispatchMessageAndResetDidScheduleDispatchMessagesForConnection.
</span><span class="cx"> HashSet<RefPtr<Connection>> m_didScheduleDispatchMessagesWorkSet;
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> ConnectionAndIncomingMessage connectionAndIncomingMessage { connection, WTF::move(message) };
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (m_didScheduleDispatchMessagesWorkSet.add(&connection).isNewEntry) {
</span><span class="cx"> RefPtr<Connection> protectedConnection(&connection);
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> Vector<ConnectionAndIncomingMessage> messagesToDispatchWhileWaitingForSyncReply;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> m_messagesToDispatchWhileWaitingForSyncReply.swap(messagesToDispatchWhileWaitingForSyncReply);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!messagesToPutBack.isEmpty()) {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> for (auto& message : messagesToPutBack)
</span><span class="cx"> m_messagesToDispatchWhileWaitingForSyncReply.append(WTF::move(message));
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx"> void Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(Connection& connection)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> ASSERT(m_didScheduleDispatchMessagesWorkSet.contains(&connection));
</span><span class="cx"> m_didScheduleDispatchMessagesWorkSet.remove(&connection);
</span><span class="cx"> }
</span><span class="lines">@@ -363,7 +363,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_outgoingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_outgoingMessagesMutex);
</ins><span class="cx"> m_outgoingMessages.append(WTF::move(encoder));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -388,7 +388,7 @@
</span><span class="cx">
</span><span class="cx"> // First, check if this message is already in the incoming messages queue.
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingMessagesMutex);
</ins><span class="cx">
</span><span class="cx"> for (auto it = m_incomingMessages.begin(), end = m_incomingMessages.end(); it != end; ++it) {
</span><span class="cx"> std::unique_ptr<MessageDecoder>& message = *it;
</span><span class="lines">@@ -414,7 +414,7 @@
</span><span class="cx"> WaitForMessageState waitingForMessage(messageReceiverName, messageName, destinationID, waitForMessageFlags);
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_waitForMessageMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_waitForMessageMutex);
</ins><span class="cx">
</span><span class="cx"> // We don't support having multiple clients waiting for messages.
</span><span class="cx"> ASSERT(!m_waitingForMessage);
</span><span class="lines">@@ -423,8 +423,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Now wait for it to be set.
</span><ins>+ Condition::Clock::time_point absoluteTimeout = Condition::Clock::now() + timeout;
</ins><span class="cx"> while (true) {
</span><del>- std::unique_lock<std::mutex> lock(m_waitForMessageMutex);
</del><ins>+ std::unique_lock<Lock> lock(m_waitForMessageMutex);
</ins><span class="cx">
</span><span class="cx"> if (m_waitingForMessage->decoder) {
</span><span class="cx"> auto decoder = WTF::move(m_waitingForMessage->decoder);
</span><span class="lines">@@ -433,9 +434,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Now we wait.
</span><del>- std::cv_status status = m_waitForMessageCondition.wait_for(lock, timeout);
</del><ins>+ bool didTimeout = !m_waitForMessageCondition.waitUntil(lock, absoluteTimeout);
</ins><span class="cx"> // We timed out, lost our connection, or a sync message came in with InterruptWaitingIfSyncMessageArrives, so stop waiting.
</span><del>- if (status == std::cv_status::timeout || m_waitingForMessage->messageWaitingInterrupted)
</del><ins>+ if (didTimeout || m_waitingForMessage->messageWaitingInterrupted)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -670,7 +671,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (message->isSyncMessage()) {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingSyncMessageCallbackMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingSyncMessageCallbackMutex);
</ins><span class="cx">
</span><span class="cx"> for (auto& callback : m_incomingSyncMessageCallbacks.values())
</span><span class="cx"> m_incomingSyncMessageCallbackQueue->dispatch(callback);
</span><span class="lines">@@ -686,18 +687,18 @@
</span><span class="cx">
</span><span class="cx"> // Check if we're waiting for this message.
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_waitForMessageMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_waitForMessageMutex);
</ins><span class="cx">
</span><span class="cx"> if (m_waitingForMessage && m_waitingForMessage->messageReceiverName == message->messageReceiverName() && m_waitingForMessage->messageName == message->messageName() && m_waitingForMessage->destinationID == message->destinationID()) {
</span><span class="cx"> m_waitingForMessage->decoder = WTF::move(message);
</span><span class="cx"> ASSERT(m_waitingForMessage->decoder);
</span><del>- m_waitForMessageCondition.notify_one();
</del><ins>+ m_waitForMessageCondition.notifyOne();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (m_waitingForMessage && (m_waitingForMessage->waitForMessageFlags & InterruptWaitingIfSyncMessageArrives) && message->isSyncMessage()) {
</span><span class="cx"> m_waitingForMessage->messageWaitingInterrupted = true;
</span><del>- m_waitForMessageCondition.notify_one();
</del><ins>+ m_waitForMessageCondition.notifyOne();
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -706,7 +707,7 @@
</span><span class="cx">
</span><span class="cx"> uint64_t Connection::installIncomingSyncMessageCallback(std::function<void ()> callback)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingSyncMessageCallbackMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingSyncMessageCallbackMutex);
</ins><span class="cx">
</span><span class="cx"> m_nextIncomingSyncMessageCallbackID++;
</span><span class="cx">
</span><span class="lines">@@ -720,13 +721,13 @@
</span><span class="cx">
</span><span class="cx"> void Connection::uninstallIncomingSyncMessageCallback(uint64_t callbackID)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingSyncMessageCallbackMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingSyncMessageCallbackMutex);
</ins><span class="cx"> m_incomingSyncMessageCallbacks.remove(callbackID);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool Connection::hasIncomingSyncMessage()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingMessagesMutex);
</ins><span class="cx">
</span><span class="cx"> for (auto& message : m_incomingMessages) {
</span><span class="cx"> if (message->isSyncMessage())
</span><span class="lines">@@ -763,11 +764,11 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_waitForMessageMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_waitForMessageMutex);
</ins><span class="cx"> if (m_waitingForMessage)
</span><span class="cx"> m_waitingForMessage->messageWaitingInterrupted = true;
</span><span class="cx"> }
</span><del>- m_waitForMessageCondition.notify_all();
</del><ins>+ m_waitForMessageCondition.notifyAll();
</ins><span class="cx">
</span><span class="cx"> if (m_didCloseOnConnectionWorkQueueCallback)
</span><span class="cx"> m_didCloseOnConnectionWorkQueueCallback(this);
</span><span class="lines">@@ -803,7 +804,7 @@
</span><span class="cx"> std::unique_ptr<MessageEncoder> message;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_outgoingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_outgoingMessagesMutex);
</ins><span class="cx"> if (m_outgoingMessages.isEmpty())
</span><span class="cx"> break;
</span><span class="cx"> message = m_outgoingMessages.takeFirst();
</span><span class="lines">@@ -862,7 +863,7 @@
</span><span class="cx"> void Connection::enqueueIncomingMessage(std::unique_ptr<MessageDecoder> incomingMessage)
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingMessagesMutex);
</ins><span class="cx"> m_incomingMessages.append(WTF::move(incomingMessage));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -918,7 +919,7 @@
</span><span class="cx"> std::unique_ptr<MessageDecoder> message;
</span><span class="cx">
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_incomingMessagesMutex);
</del><ins>+ std::lock_guard<Lock> lock(m_incomingMessagesMutex);
</ins><span class="cx"> if (m_incomingMessages.isEmpty())
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformIPCConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/IPC/Connection.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Platform/IPC/Connection.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/Platform/IPC/Connection.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #include "MessageReceiver.h"
</span><span class="cx"> #include "ProcessType.h"
</span><span class="cx"> #include <atomic>
</span><del>-#include <condition_variable>
</del><ins>+#include <wtf/Condition.h>
</ins><span class="cx"> #include <wtf/Deque.h>
</span><span class="cx"> #include <wtf/Forward.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="lines">@@ -259,15 +259,15 @@
</span><span class="cx"> bool m_didReceiveInvalidMessage;
</span><span class="cx">
</span><span class="cx"> // Incoming messages.
</span><del>- std::mutex m_incomingMessagesMutex;
</del><ins>+ Lock m_incomingMessagesMutex;
</ins><span class="cx"> Deque<std::unique_ptr<MessageDecoder>> m_incomingMessages;
</span><span class="cx">
</span><span class="cx"> // Outgoing messages.
</span><del>- std::mutex m_outgoingMessagesMutex;
</del><ins>+ Lock m_outgoingMessagesMutex;
</ins><span class="cx"> Deque<std::unique_ptr<MessageEncoder>> m_outgoingMessages;
</span><span class="cx">
</span><del>- std::condition_variable m_waitForMessageCondition;
- std::mutex m_waitForMessageMutex;
</del><ins>+ Condition m_waitForMessageCondition;
+ Lock m_waitForMessageMutex;
</ins><span class="cx">
</span><span class="cx"> WaitForMessageState* m_waitingForMessage;
</span><span class="cx">
</span><span class="lines">@@ -307,7 +307,7 @@
</span><span class="cx"> typedef HashMap<uint64_t, SecondaryThreadPendingSyncReply*> SecondaryThreadPendingSyncReplyMap;
</span><span class="cx"> SecondaryThreadPendingSyncReplyMap m_secondaryThreadPendingSyncReplyMap;
</span><span class="cx">
</span><del>- std::mutex m_incomingSyncMessageCallbackMutex;
</del><ins>+ Lock m_incomingSyncMessageCallbackMutex;
</ins><span class="cx"> HashMap<uint64_t, std::function<void ()>> m_incomingSyncMessageCallbacks;
</span><span class="cx"> RefPtr<WorkQueue> m_incomingSyncMessageCallbackQueue;
</span><span class="cx"> uint64_t m_nextIncomingSyncMessageCallbackID { 0 };
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedBlockingResponseMaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/BlockingResponseMap.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/BlockingResponseMap.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/Shared/BlockingResponseMap.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -26,8 +26,9 @@
</span><span class="cx"> #ifndef BlockingResponseMap_h
</span><span class="cx"> #define BlockingResponseMap_h
</span><span class="cx">
</span><del>-#include <condition_variable>
</del><ins>+#include <wtf/Condition.h>
</ins><span class="cx"> #include <wtf/HashMap.h>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/Noncopyable.h>
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><span class="lines">@@ -40,7 +41,7 @@
</span><span class="cx"> std::unique_ptr<T> waitForResponse(uint64_t requestID)
</span><span class="cx"> {
</span><span class="cx"> while (true) {
</span><del>- std::unique_lock<std::mutex> lock(m_mutex);
</del><ins>+ std::unique_lock<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> if (m_canceled)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -56,26 +57,26 @@
</span><span class="cx">
</span><span class="cx"> void didReceiveResponse(uint64_t requestID, std::unique_ptr<T> response)
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> ASSERT(!m_responses.contains(requestID));
</span><span class="cx">
</span><span class="cx"> m_responses.set(requestID, WTF::move(response));
</span><span class="cx">
</span><del>- // FIXME: Waking up all threads is quite inefficient.
- m_condition.notify_all();
</del><ins>+ // FIXME: Could get a slight speed-up from using notifyOne().
+ m_condition.notifyAll();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void cancel()
</span><span class="cx"> {
</span><span class="cx"> m_canceled = true;
</span><span class="cx">
</span><del>- // FIXME: Waking up all threads is quite inefficient.
- m_condition.notify_all();
</del><ins>+ // FIXME: Could get a slight speed-up from using notifyOne().
+ m_condition.notifyAll();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- std::mutex m_mutex;
- std::condition_variable m_condition;
</del><ins>+ Lock m_mutex;
+ Condition m_condition;
</ins><span class="cx">
</span><span class="cx"> HashMap<uint64_t, std::unique_ptr<T>> m_responses;
</span><span class="cx"> bool m_canceled;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPluginsgtkPluginInfoCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.cpp (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.cpp        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.cpp        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">
</span><span class="cx"> void PluginInfoCache::saveToFile()
</span><span class="cx"> {
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx">
</span><span class="cx"> gsize dataLength;
</span><span class="cx"> GUniquePtr<char> data(g_key_file_to_data(m_cacheFile.get(), &dataLength, nullptr));
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> if (m_cachePath && !m_readOnlyMode) {
</span><span class="cx"> // Save the cache file in an idle to make sure it happens in the main thread and
</span><span class="cx"> // it's done only once when this is called multiple times in a very short time.
</span><del>- std::lock_guard<std::mutex> lock(m_mutex);
</del><ins>+ std::lock_guard<Lock> lock(m_mutex);
</ins><span class="cx"> if (m_saveToFileIdle.isScheduled())
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPluginsgtkPluginInfoCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx">
</span><span class="cx"> #include "PluginModuleInfo.h"
</span><span class="cx"> #include <mutex>
</span><ins>+#include <wtf/Lock.h>
</ins><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/glib/GMainLoopSource.h>
</span><span class="cx"> #include <wtf/glib/GUniquePtr.h>
</span><span class="lines">@@ -55,7 +56,7 @@
</span><span class="cx"> GUniquePtr<char> m_cachePath;
</span><span class="cx"> GMainLoopSource m_saveToFileIdle;
</span><span class="cx"> bool m_readOnlyMode;
</span><del>- std::mutex m_mutex;
</del><ins>+ Lock m_mutex;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWKPrintingViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.h (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.h        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.h        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -27,6 +27,8 @@
</span><span class="cx">
</span><span class="cx"> #import <WebCore/IntRectHash.h>
</span><span class="cx"> #import <condition_variable>
</span><ins>+#import <wtf/Condition.h>
+#import <wtf/Lock.h>
</ins><span class="cx"> #import <wtf/RetainPtr.h>
</span><span class="cx"> #import <wtf/Vector.h>
</span><span class="cx">
</span><span class="lines">@@ -57,8 +59,8 @@
</span><span class="cx"> uint64_t _expectedPrintCallback;
</span><span class="cx">
</span><span class="cx"> BOOL _isPrintingFromSecondaryThread;
</span><del>- std::mutex _printingCallbackMutex;
- std::condition_variable _printingCallbackCondition;
</del><ins>+ Lock _printingCallbackMutex;
+ Condition _printingCallbackCondition;
</ins><span class="cx">
</span><span class="cx"> NSTimer *_autodisplayResumeTimer;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWKPrintingViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm (188641 => 188642)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm        2015-08-19 18:13:53 UTC (rev 188641)
+++ trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm        2015-08-19 18:18:19 UTC (rev 188642)
</span><span class="lines">@@ -242,11 +242,11 @@
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><span class="cx">
</span><span class="cx"> if (!_webFrame->page()) {
</span><del>- _printingCallbackCondition.notify_one();
</del><ins>+ _printingCallbackCondition.notifyOne();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- std::lock_guard<std::mutex> lock(_printingCallbackMutex);
</del><ins>+ std::lock_guard<Lock> lock(_printingCallbackMutex);
</ins><span class="cx">
</span><span class="cx"> ASSERT([self _hasPageRects]);
</span><span class="cx"> ASSERT(_printedPagesData.isEmpty());
</span><span class="lines">@@ -278,7 +278,7 @@
</span><span class="cx"> if (data)
</span><span class="cx"> view->_printedPagesData.append(data->bytes(), data->size());
</span><span class="cx"> view->_expectedPrintCallback = 0;
</span><del>- view->_printingCallbackCondition.notify_one();
</del><ins>+ view->_printingCallbackCondition.notifyOne();
</ins><span class="cx"> }
</span><span class="cx"> });
</span><span class="cx"> _expectedPrintCallback = callback->callbackID();
</span><span class="lines">@@ -357,7 +357,7 @@
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><span class="cx">
</span><span class="cx"> WKPrintingView *view = static_cast<WKPrintingView *>(untypedContext);
</span><del>- std::lock_guard<std::mutex> lock(view->_printingCallbackMutex);
</del><ins>+ std::lock_guard<Lock> lock(view->_printingCallbackMutex);
</ins><span class="cx">
</span><span class="cx"> // We may have received page rects while a message to call this function traveled from secondary thread to main one.
</span><span class="cx"> if ([view _hasPageRects]) {
</span><span class="lines">@@ -395,7 +395,7 @@
</span><span class="cx"> *range = NSMakeRange(1, _printingPageRects.size());
</span><span class="cx"> else if (!RunLoop::isMain()) {
</span><span class="cx"> ASSERT(![self _isPrintingPreview]);
</span><del>- std::unique_lock<std::mutex> lock(_printingCallbackMutex);
</del><ins>+ std::unique_lock<Lock> lock(_printingCallbackMutex);
</ins><span class="cx"> callOnMainThread(prepareDataForPrintingOnSecondaryThread, self);
</span><span class="cx"> _printingCallbackCondition.wait(lock);
</span><span class="cx"> *range = NSMakeRange(1, _printingPageRects.size());
</span></span></pre>
</div>
</div>
</body>
</html>