- 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