Title: [225662] trunk
Revision
225662
Author
[email protected]
Date
2017-12-07 17:31:10 -0800 (Thu, 07 Dec 2017)

Log Message

Use StaticLock instead of NeverDestroyed<Lock>
https://bugs.webkit.org/show_bug.cgi?id=180507

Reviewed by Saam Barati.

Source/WebCore:

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:

Source/WebKitLegacy/ios:

* WebCoreSupport/WebFixedPositionContent.mm:
(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
(WebFixedPositionContentDataLock): Deleted.

Source/WebKitLegacy/win:

* WebLocalizableStrings.cpp:
(findCachedString):
(cacheString):
(mainBundleLocStrings): Deleted.
(frameworkLocStringsMutex): Deleted.

Tools:

* DumpRenderTree/_javascript_Threading.cpp:
(_javascript_Threads):
(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):
(_javascript_ThreadsMutex): Deleted.

Modified Paths

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();
     }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to