Diff
Modified: trunk/Source/WebCore/ChangeLog (225661 => 225662)
--- trunk/Source/WebCore/ChangeLog 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/ChangeLog 2017-12-08 01:31:10 UTC (rev 225662)
@@ -1,3 +1,49 @@
+2017-12-07 Yusuke Suzuki <[email protected]>
+
+ Use StaticLock instead of NeverDestroyed<Lock>
+ https://bugs.webkit.org/show_bug.cgi?id=180507
+
+ Reviewed by Saam Barati.
+
+ StaticLock can be used instead of using NeverDestroyed<Lock>.
+
+ No behavior change.
+
+ * Modules/webdatabase/Database.cpp:
+ (WebCore::Database::performOpenAndVerify):
+ * Modules/webdatabase/DatabaseTracker.cpp:
+ (WebCore::DatabaseTracker::openDatabaseMutex):
+ (WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskWillBeScheduled):
+ (WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskDidFinish):
+ (WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
+ (WebCore::DatabaseTracker::scheduleForNotification):
+ (WebCore::DatabaseTracker::notifyDatabasesChanged):
+ (WebCore::notificationMutex): Deleted.
+ * Modules/webdatabase/DatabaseTracker.h:
+ * platform/URL.cpp:
+ (WebCore::registerDefaultPortForProtocolForTesting):
+ (WebCore::clearDefaultPortForProtocolMapForTesting):
+ (WebCore::defaultPortForProtocol):
+ (WebCore::defaultPortForProtocolMapForTestingLock): Deleted.
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::buildMediaEnginesVector):
+ (WebCore::installedMediaEngines):
+ (WebCore::MediaPlayer::resetMediaEngines):
+ (WebCore::mediaEngineVectorLock): Deleted.
+ * platform/ios/QuickLook.mm:
+ (WebCore::removeQLPreviewConverterForURL):
+ (WebCore::addQLPreviewConverterWithFileForURL):
+ (WebCore::qlPreviewConverterDictionaryMutex): Deleted.
+ * platform/ios/WebSQLiteDatabaseTrackerClient.mm:
+ (+[WebDatabaseTransactionBackgroundTaskController startBackgroundTask]):
+ (+[WebDatabaseTransactionBackgroundTaskController endBackgroundTask]):
+ (transactionBackgroundTaskIdentifierLock): Deleted.
+ * platform/network/curl/CurlContext.cpp:
+ (WebCore::CurlShareHandle::lockCallback):
+ (WebCore::CurlShareHandle::unlockCallback):
+ (WebCore::CurlShareHandle::mutexFor):
+ * platform/network/curl/CurlContext.h:
+
2017-12-07 Brady Eidson <[email protected]>
Read registrations in from disk.
Modified: trunk/Source/WebCore/Modules/webdatabase/Database.cpp (225661 => 225662)
--- trunk/Source/WebCore/Modules/webdatabase/Database.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/Modules/webdatabase/Database.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -341,7 +341,7 @@
#if PLATFORM(IOS)
{
// Make sure we wait till the background removal of the empty database files finished before trying to open any database.
- LockHolder locker(DatabaseTracker::openDatabaseMutex());
+ auto locker = holdLock(DatabaseTracker::openDatabaseMutex());
}
#endif
Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp (225661 => 225662)
--- trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -1275,10 +1275,10 @@
return SQLiteFileSystem::deleteDatabaseFile(path);
}
-Lock& DatabaseTracker::openDatabaseMutex()
+static StaticLock openDatabaseLock;
+StaticLock& DatabaseTracker::openDatabaseMutex()
{
- static NeverDestroyed<Lock> mutex;
- return mutex;
+ return openDatabaseLock;
}
void DatabaseTracker::emptyDatabaseFilesRemovalTaskWillBeScheduled()
@@ -1285,12 +1285,12 @@
{
// Lock the database from opening any database until we are done with scanning the file system for
// zero byte database files to remove.
- openDatabaseMutex().lock();
+ openDatabaseLock.lock();
}
void DatabaseTracker::emptyDatabaseFilesRemovalTaskDidFinish()
{
- openDatabaseMutex().unlock();
+ openDatabaseLock.unlock();
}
#endif
@@ -1300,11 +1300,7 @@
m_client = client;
}
-static Lock& notificationMutex()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock notificationLock;
using NotificationQueue = Vector<std::pair<SecurityOriginData, String>>;
@@ -1316,7 +1312,7 @@
void DatabaseTracker::scheduleNotifyDatabaseChanged(const SecurityOriginData& origin, const String& name)
{
- LockHolder locker(notificationMutex());
+ auto locker = holdLock(notificationLock);
notificationQueue().append(std::make_pair(origin.isolatedCopy(), name.isolatedCopy()));
scheduleForNotification();
}
@@ -1325,7 +1321,7 @@
void DatabaseTracker::scheduleForNotification()
{
- ASSERT(!notificationMutex().tryLock());
+ ASSERT(!notificationLock.tryLock());
if (!notificationScheduled) {
callOnMainThread([] {
@@ -1343,7 +1339,7 @@
NotificationQueue notifications;
{
- LockHolder locker(notificationMutex());
+ auto locker = holdLock(notificationLock);
notifications.swap(notificationQueue());
notificationScheduled = false;
}
Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.h (225661 => 225662)
--- trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.h 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.h 2017-12-08 01:31:10 UTC (rev 225662)
@@ -100,7 +100,7 @@
// MobileSafari will grab this mutex on the main thread before dispatching the task to
// clean up zero byte database files. Any operations to open new database will have to
// wait for that task to finish by waiting on this mutex.
- static Lock& openDatabaseMutex();
+ static StaticLock& openDatabaseMutex();
WEBCORE_EXPORT static void emptyDatabaseFilesRemovalTaskWillBeScheduled();
WEBCORE_EXPORT static void emptyDatabaseFilesRemovalTaskDidFinish();
Modified: trunk/Source/WebCore/platform/URL.cpp (225661 => 225662)
--- trunk/Source/WebCore/platform/URL.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/URL.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -275,11 +275,7 @@
#endif
-static Lock& defaultPortForProtocolMapForTestingLock()
-{
- static NeverDestroyed<Lock> lock;
- return lock;
-}
+static StaticLock defaultPortForProtocolMapForTestingLock;
using DefaultPortForProtocolMapForTesting = HashMap<String, uint16_t>;
static DefaultPortForProtocolMapForTesting*& defaultPortForProtocolMapForTesting()
@@ -298,13 +294,13 @@
void registerDefaultPortForProtocolForTesting(uint16_t port, const String& protocol)
{
- LockHolder locker(defaultPortForProtocolMapForTestingLock());
+ auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
ensureDefaultPortForProtocolMapForTesting().add(protocol, port);
}
void clearDefaultPortForProtocolMapForTesting()
{
- LockHolder locker(defaultPortForProtocolMapForTestingLock());
+ auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
if (auto* map = defaultPortForProtocolMapForTesting())
map->clear();
}
@@ -312,7 +308,7 @@
std::optional<uint16_t> defaultPortForProtocol(StringView protocol)
{
if (auto* overrideMap = defaultPortForProtocolMapForTesting()) {
- LockHolder locker(defaultPortForProtocolMapForTestingLock());
+ auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
ASSERT(overrideMap); // No need to null check again here since overrideMap cannot become null after being non-null.
auto iterator = overrideMap->find(protocol.toStringWithoutCopying());
if (iterator != overrideMap->end())
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (225661 => 225662)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -210,11 +210,7 @@
static void addMediaEngine(CreateMediaEnginePlayer&&, MediaEngineSupportedTypes, MediaEngineSupportsType, MediaEngineOriginsInMediaCache, MediaEngineClearMediaCache, MediaEngineClearMediaCacheForOrigins, MediaEngineSupportsKeySystem);
-static Lock& mediaEngineVectorLock()
-{
- static NeverDestroyed<Lock> lock;
- return lock;
-}
+static StaticLock mediaEngineVectorLock;
static bool& haveMediaEnginesVector()
{
@@ -230,7 +226,7 @@
static void buildMediaEnginesVector()
{
- ASSERT(mediaEngineVectorLock().isLocked());
+ ASSERT(mediaEngineVectorLock.isLocked());
#if USE(AVFOUNDATION)
if (DeprecatedGlobalSettings::isAVFoundationEnabled()) {
@@ -276,7 +272,7 @@
static const Vector<MediaPlayerFactory>& installedMediaEngines()
{
{
- LockHolder lock(mediaEngineVectorLock());
+ auto locker = holdLock(mediaEngineVectorLock);
if (!haveMediaEnginesVector())
buildMediaEnginesVector();
}
@@ -1388,7 +1384,7 @@
void MediaPlayer::resetMediaEngines()
{
- LockHolder lock(mediaEngineVectorLock());
+ auto locker = holdLock(mediaEngineVectorLock);
mutableInstalledMediaEnginesVector().clear();
haveMediaEnginesVector() = false;
Modified: trunk/Source/WebCore/platform/ios/QuickLook.mm (225661 => 225662)
--- trunk/Source/WebCore/platform/ios/QuickLook.mm 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/ios/QuickLook.mm 2017-12-08 01:31:10 UTC (rev 225662)
@@ -46,11 +46,7 @@
return set;
}
-static Lock& qlPreviewConverterDictionaryMutex()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock qlPreviewConverterDictionaryLock;
static NSMutableDictionary *QLPreviewConverterDictionary()
{
@@ -66,7 +62,7 @@
void removeQLPreviewConverterForURL(NSURL *url)
{
- LockHolder lock(qlPreviewConverterDictionaryMutex());
+ auto locker = holdLock(qlPreviewConverterDictionaryLock);
[QLPreviewConverterDictionary() removeObjectForKey:url];
[QLContentDictionary() removeObjectForKey:url];
}
@@ -75,7 +71,7 @@
{
ASSERT(url);
ASSERT(converter);
- LockHolder lock(qlPreviewConverterDictionaryMutex());
+ auto locker = holdLock(qlPreviewConverterDictionaryLock);
[QLPreviewConverterDictionary() setObject:converter forKey:url];
[QLContentDictionary() setObject:(fileName ? fileName : @"") forKey:url];
}
Modified: trunk/Source/WebCore/platform/ios/WebSQLiteDatabaseTrackerClient.mm (225661 => 225662)
--- trunk/Source/WebCore/platform/ios/WebSQLiteDatabaseTrackerClient.mm 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/ios/WebSQLiteDatabaseTrackerClient.mm 2017-12-08 01:31:10 UTC (rev 225662)
@@ -84,11 +84,7 @@
}
-static Lock& transactionBackgroundTaskIdentifierLock()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock transactionBackgroundTaskIdentifierLock;
static NSUInteger transactionBackgroundTaskIdentifier;
@@ -111,7 +107,7 @@
+ (void)startBackgroundTask
{
- LockHolder lock(transactionBackgroundTaskIdentifierLock());
+ auto locker = holdLock(transactionBackgroundTaskIdentifierLock);
// If there's already an existing background task going on, there's no need to start a new one.
WebBackgroundTaskController *backgroundTaskController = [WebBackgroundTaskController sharedController];
@@ -126,7 +122,7 @@
+ (void)endBackgroundTask
{
- LockHolder lock(transactionBackgroundTaskIdentifierLock());
+ auto locker = holdLock(transactionBackgroundTaskIdentifierLock);
// It is possible that we were unable to start the background task when the first transaction began.
// Don't try to end the task in that case.
Modified: trunk/Source/WebCore/platform/network/curl/CurlContext.cpp (225661 => 225662)
--- trunk/Source/WebCore/platform/network/curl/CurlContext.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/network/curl/CurlContext.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -178,29 +178,29 @@
void CurlShareHandle::lockCallback(CURL*, curl_lock_data data, curl_lock_access, void*)
{
- if (Lock* mutex = mutexFor(data))
+ if (auto* mutex = mutexFor(data))
mutex->lock();
}
void CurlShareHandle::unlockCallback(CURL*, curl_lock_data data, void*)
{
- if (Lock* mutex = mutexFor(data))
+ if (auto* mutex = mutexFor(data))
mutex->unlock();
}
-Lock* CurlShareHandle::mutexFor(curl_lock_data data)
+StaticLock* CurlShareHandle::mutexFor(curl_lock_data data)
{
- static NeverDestroyed<Lock> cookieMutex;
- static NeverDestroyed<Lock> dnsMutex;
- static NeverDestroyed<Lock> shareMutex;
+ static StaticLock cookieMutex;
+ static StaticLock dnsMutex;
+ static StaticLock shareMutex;
switch (data) {
case CURL_LOCK_DATA_COOKIE:
- return &cookieMutex.get();
+ return &cookieMutex;
case CURL_LOCK_DATA_DNS:
- return &dnsMutex.get();
+ return &dnsMutex;
case CURL_LOCK_DATA_SHARE:
- return &shareMutex.get();
+ return &shareMutex;
default:
ASSERT_NOT_REACHED();
return nullptr;
Modified: trunk/Source/WebCore/platform/network/curl/CurlContext.h (225661 => 225662)
--- trunk/Source/WebCore/platform/network/curl/CurlContext.h 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebCore/platform/network/curl/CurlContext.h 2017-12-08 01:31:10 UTC (rev 225662)
@@ -83,7 +83,7 @@
private:
static void lockCallback(CURL*, curl_lock_data, curl_lock_access, void*);
static void unlockCallback(CURL*, curl_lock_data, void*);
- static Lock* mutexFor(curl_lock_data);
+ static StaticLock* mutexFor(curl_lock_data);
CURLSH* m_shareHandle { nullptr };
};
Modified: trunk/Source/WebKitLegacy/ios/ChangeLog (225661 => 225662)
--- trunk/Source/WebKitLegacy/ios/ChangeLog 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebKitLegacy/ios/ChangeLog 2017-12-08 01:31:10 UTC (rev 225662)
@@ -1,3 +1,17 @@
+2017-12-07 Yusuke Suzuki <[email protected]>
+
+ Use StaticLock instead of NeverDestroyed<Lock>
+ https://bugs.webkit.org/show_bug.cgi?id=180507
+
+ Reviewed by Saam Barati.
+
+ * WebCoreSupport/WebFixedPositionContent.mm:
+ (-[WebFixedPositionContent scrollOrZoomChanged:]):
+ (-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
+ (-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
+ (-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
+ (WebFixedPositionContentDataLock): Deleted.
+
2017-11-11 Megan Gardner <[email protected]>
Fix a FIXMEs in WebFrameIOS
Modified: trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebFixedPositionContent.mm (225661 => 225662)
--- trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebFixedPositionContent.mm 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebFixedPositionContent.mm 2017-12-08 01:31:10 UTC (rev 225662)
@@ -49,11 +49,7 @@
using namespace WebCore;
using namespace std;
-static Lock& WebFixedPositionContentDataLock()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock webFixedPositionContentDataLock;
struct ViewportConstrainedLayerData {
ViewportConstrainedLayerData()
@@ -104,7 +100,7 @@
- (void)scrollOrZoomChanged:(CGRect)positionedObjectsRect
{
- LockHolder lock(WebFixedPositionContentDataLock());
+ auto locker = holdLock(webFixedPositionContentDataLock);
LayerInfoMap::const_iterator end = _private->m_viewportConstrainedLayers.end();
for (LayerInfoMap::const_iterator it = _private->m_viewportConstrainedLayers.begin(); it != end; ++it) {
@@ -143,7 +139,7 @@
- (void)overflowScrollPositionForLayer:(CALayer *)scrollLayer changedTo:(CGPoint)scrollPosition
{
- LockHolder lock(WebFixedPositionContentDataLock());
+ auto locker = holdLock(webFixedPositionContentDataLock);
LayerInfoMap::const_iterator end = _private->m_viewportConstrainedLayers.end();
for (LayerInfoMap::const_iterator it = _private->m_viewportConstrainedLayers.begin(); it != end; ++it) {
@@ -176,7 +172,7 @@
- (void)setViewportConstrainedLayers:(WTF::HashMap<CALayer *, std::unique_ptr<WebCore::ViewportConstraints>>&)layerMap stickyContainerMap:(WTF::HashMap<CALayer*, CALayer*>&)stickyContainers
{
- LockHolder lock(WebFixedPositionContentDataLock());
+ auto locker = holdLock(webFixedPositionContentDataLock);
_private->m_viewportConstrainedLayers.clear();
@@ -193,7 +189,7 @@
- (BOOL)hasFixedOrStickyPositionLayers
{
- LockHolder lock(WebFixedPositionContentDataLock());
+ auto locker = holdLock(webFixedPositionContentDataLock);
return !_private->m_viewportConstrainedLayers.isEmpty();
}
Modified: trunk/Source/WebKitLegacy/win/ChangeLog (225661 => 225662)
--- trunk/Source/WebKitLegacy/win/ChangeLog 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebKitLegacy/win/ChangeLog 2017-12-08 01:31:10 UTC (rev 225662)
@@ -1,3 +1,16 @@
+2017-12-07 Yusuke Suzuki <[email protected]>
+
+ Use StaticLock instead of NeverDestroyed<Lock>
+ https://bugs.webkit.org/show_bug.cgi?id=180507
+
+ Reviewed by Saam Barati.
+
+ * WebLocalizableStrings.cpp:
+ (findCachedString):
+ (cacheString):
+ (mainBundleLocStrings): Deleted.
+ (frameworkLocStringsMutex): Deleted.
+
2017-12-05 Per Arne Vollan <[email protected]>
[Win] Scrollbars are sometimes not rendered in accelerated compositing mode.
Modified: trunk/Source/WebKitLegacy/win/WebLocalizableStrings.cpp (225661 => 225662)
--- trunk/Source/WebKitLegacy/win/WebLocalizableStrings.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Source/WebKitLegacy/win/WebLocalizableStrings.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -45,11 +45,7 @@
typedef HashMap<String, LocalizedString*> LocalizedStringMap;
-static Lock& mainBundleLocStringsMutex()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock mainBundleLocStringsLock;
static LocalizedStringMap& mainBundleLocStrings()
{
@@ -57,11 +53,7 @@
return map;
}
-static Lock& frameworkLocStringsMutex()
-{
- static NeverDestroyed<Lock> mutex;
- return mutex;
-}
+static StaticLock frameworkLocStringsLock;
static LocalizedStringMap frameworkLocStrings()
{
@@ -176,12 +168,12 @@
static LocalizedString* findCachedString(WebLocalizableStringsBundle* stringsBundle, const String& key)
{
if (!stringsBundle) {
- LockHolder lock(mainBundleLocStringsMutex());
+ auto locker = holdLock(mainBundleLocStringsLock);
return mainBundleLocStrings().get(key);
}
if (stringsBundle->bundle == WebKitLocalizableStringsBundle.bundle) {
- LockHolder lock(frameworkLocStringsMutex());
+ auto locker = holdLock(frameworkLocStringsLock);
return frameworkLocStrings().get(key);
}
@@ -191,12 +183,12 @@
static void cacheString(WebLocalizableStringsBundle* stringsBundle, const String& key, LocalizedString* value)
{
if (!stringsBundle) {
- LockHolder lock(mainBundleLocStringsMutex());
+ auto locker = holdLock(mainBundleLocStringsLock);
mainBundleLocStrings().set(key, value);
return;
}
- LockHolder lock(frameworkLocStringsMutex());
+ auto locker = holdLock(frameworkLocStringsLock);
frameworkLocStrings().set(key, value);
}
Modified: trunk/Tools/ChangeLog (225661 => 225662)
--- trunk/Tools/ChangeLog 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Tools/ChangeLog 2017-12-08 01:31:10 UTC (rev 225662)
@@ -1,3 +1,17 @@
+2017-12-07 Yusuke Suzuki <[email protected]>
+
+ Use StaticLock instead of NeverDestroyed<Lock>
+ https://bugs.webkit.org/show_bug.cgi?id=180507
+
+ Reviewed by Saam Barati.
+
+ * DumpRenderTree/_javascript_Threading.cpp:
+ (_javascript_Threads):
+ (runJavaScriptThread):
+ (startJavaScriptThreads):
+ (stopJavaScriptThreads):
+ (_javascript_ThreadsMutex): Deleted.
+
2017-12-07 Alex Christensen <[email protected]>
Always synchronously continue with fragment navigations
Modified: trunk/Tools/DumpRenderTree/_javascript_Threading.cpp (225661 => 225662)
--- trunk/Tools/DumpRenderTree/_javascript_Threading.cpp 2017-12-08 01:27:00 UTC (rev 225661)
+++ trunk/Tools/DumpRenderTree/_javascript_Threading.cpp 2017-12-08 01:31:10 UTC (rev 225662)
@@ -45,18 +45,13 @@
static const size_t _javascript_ThreadsCount = 4;
static bool _javascript_ThreadsShouldTerminate;
static JSContextGroupRef _javascript_ThreadsGroup;
+static StaticLock _javascript_ThreadsLock;
-static Lock& _javascript_ThreadsMutex()
-{
- static NeverDestroyed<Lock> staticMutex;
- return staticMutex;
-}
-
typedef HashSet<RefPtr<Thread>> ThreadSet;
static ThreadSet& _javascript_Threads()
{
static NeverDestroyed<ThreadSet> staticJavaScriptThreads;
- ASSERT(!_javascript_ThreadsMutex().tryLock());
+ ASSERT(!_javascript_ThreadsLock.tryLock());
return staticJavaScriptThreads;
}
@@ -72,19 +67,19 @@
JSGlobalContextRef ctx;
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
ctx = JSGlobalContextCreateInGroup(_javascript_ThreadsGroup, 0);
}
JSStringRef scriptRef;
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
scriptRef = JSStringCreateWithUTF8CString(script);
}
while (true) {
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
JSValueRef exception = 0;
JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
ASSERT(!exception);
@@ -91,7 +86,7 @@
}
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
const size_t valuesCount = 1024;
JSValueRef values[valuesCount];
for (size_t i = 0; i < valuesCount; ++i)
@@ -99,7 +94,7 @@
}
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
if (_javascript_ThreadsShouldTerminate)
break;
}
@@ -108,7 +103,7 @@
if (rand() % 5)
continue;
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
Thread& thread = Thread::current();
thread.detach();
_javascript_Threads().remove(&thread);
@@ -116,7 +111,7 @@
break;
}
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
JSStringRelease(scriptRef);
JSGarbageCollect(ctx);
JSGlobalContextRelease(ctx);
@@ -126,7 +121,7 @@
{
_javascript_ThreadsGroup = JSContextGroupCreate();
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
for (size_t i = 0; i < _javascript_ThreadsCount; ++i)
_javascript_Threads().add(Thread::create("_javascript_ Thread", &runJavaScriptThread));
@@ -135,13 +130,13 @@
void stopJavaScriptThreads()
{
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
_javascript_ThreadsShouldTerminate = true;
}
Vector<RefPtr<Thread>, _javascript_ThreadsCount> threads;
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
threads = copyToVector(_javascript_Threads());
ASSERT(threads.size() == _javascript_ThreadsCount);
}
@@ -150,7 +145,7 @@
threads[i]->waitForCompletion();
{
- LockHolder locker(_javascript_ThreadsMutex());
+ auto locker = holdLock(_javascript_ThreadsLock);
_javascript_Threads().clear();
}