Title: [161654] trunk/Source/WebCore
Revision
161654
Author
[email protected]
Date
2014-01-10 11:02:43 -0800 (Fri, 10 Jan 2014)

Log Message

Use STL threading primitives in DatabaseDetails and DatabaseManager
https://bugs.webkit.org/show_bug.cgi?id=126759

Reviewed by Geoffrey Garen.

* Modules/webdatabase/DatabaseDetails.h:
(WebCore::DatabaseDetails::DatabaseDetails):
(WebCore::DatabaseDetails::threadID):
* 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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (161653 => 161654)


--- trunk/Source/WebCore/ChangeLog	2014-01-10 18:59:28 UTC (rev 161653)
+++ trunk/Source/WebCore/ChangeLog	2014-01-10 19:02:43 UTC (rev 161654)
@@ -1,3 +1,25 @@
+2014-01-10  Anders Carlsson  <[email protected]>
+
+        Use STL threading primitives in DatabaseDetails and DatabaseManager
+        https://bugs.webkit.org/show_bug.cgi?id=126759
+
+        Reviewed by Geoffrey Garen.
+
+        * Modules/webdatabase/DatabaseDetails.h:
+        (WebCore::DatabaseDetails::DatabaseDetails):
+        (WebCore::DatabaseDetails::threadID):
+        * 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:
+
 2014-01-10  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r161629.

Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseDetails.h (161653 => 161654)


--- trunk/Source/WebCore/Modules/webdatabase/DatabaseDetails.h	2014-01-10 18:59:28 UTC (rev 161653)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseDetails.h	2014-01-10 19:02:43 UTC (rev 161654)
@@ -31,7 +31,7 @@
 
 #if ENABLE(SQL_DATABASE)
 
-#include <wtf/Threading.h>
+#include <thread>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
@@ -41,10 +41,10 @@
     DatabaseDetails()
         : m_expectedUsage(0)
         , m_currentUsage(0)
-    {
 #ifndef NDEBUG
-        m_thread = currentThread();
+        , m_threadID(std::this_thread::get_id())
 #endif
+    {
     }
 
     DatabaseDetails(const String& databaseName, const String& displayName, unsigned long long expectedUsage, unsigned long long currentUsage)
@@ -52,10 +52,10 @@
         , m_displayName(displayName)
         , m_expectedUsage(expectedUsage)
         , m_currentUsage(currentUsage)
-    {
 #ifndef NDEBUG
-        m_thread = currentThread();
+        , m_threadID(std::this_thread::get_id())
 #endif
+    {
     }
 
     const String& name() const { return m_name; }
@@ -63,7 +63,7 @@
     uint64_t expectedUsage() const { return m_expectedUsage; }
     uint64_t currentUsage() const { return m_currentUsage; }
 #ifndef NDEBUG
-    ThreadIdentifier thread() const { return m_thread; }
+    std::thread::id threadID() const { return m_threadID; }
 #endif
 
 private:
@@ -72,7 +72,7 @@
     uint64_t m_expectedUsage;
     uint64_t m_currentUsage;
 #ifndef NDEBUG
-    ThreadIdentifier m_thread;
+    std::thread::id m_threadID;
 #endif
 };
 

Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp (161653 => 161654)


--- trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp	2014-01-10 18:59:28 UTC (rev 161653)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.cpp	2014-01-10 19:02:43 UTC (rev 161654)
@@ -142,7 +142,7 @@
 
 PassRefPtr<DatabaseContext> DatabaseManager::existingDatabaseContextFor(ScriptExecutionContext* context)
 {
-    MutexLocker locker(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
 
     ASSERT(m_databaseContextRegisteredCount >= 0);
     ASSERT(m_databaseContextInstanceCount >= 0);
@@ -173,7 +173,8 @@
 
 void DatabaseManager::registerDatabaseContext(DatabaseContext* databaseContext)
 {
-    MutexLocker locker(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     ScriptExecutionContext* context = databaseContext->scriptExecutionContext();
     m_contextMap.set(context, databaseContext);
 #if !ASSERT_DISABLED
@@ -183,7 +184,8 @@
 
 void DatabaseManager::unregisterDatabaseContext(DatabaseContext* databaseContext)
 {
-    MutexLocker locker(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     ScriptExecutionContext* context = databaseContext->scriptExecutionContext();
     ASSERT(m_contextMap.get(context));
 #if !ASSERT_DISABLED
@@ -195,13 +197,15 @@
 #if !ASSERT_DISABLED
 void DatabaseManager::didConstructDatabaseContext()
 {
-    MutexLocker lock(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     m_databaseContextInstanceCount++;
 }
 
 void DatabaseManager::didDestructDatabaseContext()
 {
-    MutexLocker lock(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     m_databaseContextInstanceCount--;
     ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount);
 }
@@ -296,13 +300,15 @@
 
 void DatabaseManager::addProposedDatabase(ProposedDatabase* proposedDb)
 {
-    MutexLocker locker(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     m_proposedDatabases.add(proposedDb);
 }
 
 void DatabaseManager::removeProposedDatabase(ProposedDatabase* proposedDb)
 {
-    MutexLocker locker(m_lock);
+    std::lock_guard<std::mutex> lock(m_mutex);
+
     m_proposedDatabases.remove(proposedDb);
 }
 
@@ -380,11 +386,14 @@
 String DatabaseManager::fullPathForDatabase(SecurityOrigin* origin, const String& name, bool createIfDoesNotExist)
 {
     {
-        MutexLocker locker(m_lock);
-        for (HashSet<ProposedDatabase*>::iterator iter = m_proposedDatabases.begin(); iter != m_proposedDatabases.end(); ++iter)
-            if ((*iter)->details().name() == name && (*iter)->origin()->equal(origin))
+        std::lock_guard<std::mutex> lock(m_mutex);
+
+        for (auto* proposedDatabase : m_proposedDatabases) {
+            if (proposedDatabase->details().name() == name && proposedDatabase->origin()->equal(origin))
                 return String();
+        }
     }
+    
     return m_server->fullPathForDatabase(origin, name, createIfDoesNotExist);
 }
 
@@ -406,13 +415,17 @@
 DatabaseDetails DatabaseManager::detailsForNameAndOrigin(const String& name, SecurityOrigin* origin)
 {
     {
-        MutexLocker locker(m_lock);
-        for (HashSet<ProposedDatabase*>::iterator iter = m_proposedDatabases.begin(); iter != m_proposedDatabases.end(); ++iter)
-            if ((*iter)->details().name() == name && (*iter)->origin()->equal(origin)) {
-                ASSERT((*iter)->details().thread() == currentThread() || isMainThread());
-                return (*iter)->details();
+        std::lock_guard<std::mutex> lock(m_mutex);
+        
+        for (auto* proposedDatabase : m_proposedDatabases) {
+            if (proposedDatabase->details().name() == name && proposedDatabase->origin()->equal(origin)) {
+                ASSERT(proposedDatabase->details().threadID() == std::this_thread::get_id() || isMainThread());
+                
+                return proposedDatabase->details();
             }
+        }
     }
+    
     return m_server->detailsForNameAndOrigin(name, origin);
 }
 

Modified: trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h (161653 => 161654)


--- trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h	2014-01-10 18:59:28 UTC (rev 161653)
+++ trunk/Source/WebCore/Modules/webdatabase/DatabaseManager.h	2014-01-10 19:02:43 UTC (rev 161654)
@@ -151,8 +151,8 @@
 #endif
     HashSet<ProposedDatabase*> m_proposedDatabases;
 
-    // This lock protects m_contextMap, and m_proposedDatabases.
-    Mutex m_lock;
+    // This mutex protects m_contextMap, and m_proposedDatabases.
+    std::mutex m_mutex;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to