Title: [164484] trunk/Source/_javascript_Core
- Revision
- 164484
- Author
- ander...@apple.com
- Date
- 2014-02-21 08:45:05 -0800 (Fri, 21 Feb 2014)
Log Message
Modernize JSGlobalLock and JSLockHolder
https://bugs.webkit.org/show_bug.cgi?id=129105
Reviewed by Michael Saboff.
Use std::mutex and std::thread::id where possible.
* runtime/JSLock.cpp:
(JSC::GlobalJSLock::GlobalJSLock):
(JSC::GlobalJSLock::~GlobalJSLock):
(JSC::GlobalJSLock::initialize):
(JSC::JSLock::JSLock):
(JSC::JSLock::lock):
(JSC::JSLock::unlock):
(JSC::JSLock::currentThreadIsHoldingLock):
* runtime/JSLock.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (164483 => 164484)
--- trunk/Source/_javascript_Core/ChangeLog 2014-02-21 15:53:42 UTC (rev 164483)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-02-21 16:45:05 UTC (rev 164484)
@@ -1,3 +1,22 @@
+2014-02-20 Anders Carlsson <ander...@apple.com>
+
+ Modernize JSGlobalLock and JSLockHolder
+ https://bugs.webkit.org/show_bug.cgi?id=129105
+
+ Reviewed by Michael Saboff.
+
+ Use std::mutex and std::thread::id where possible.
+
+ * runtime/JSLock.cpp:
+ (JSC::GlobalJSLock::GlobalJSLock):
+ (JSC::GlobalJSLock::~GlobalJSLock):
+ (JSC::GlobalJSLock::initialize):
+ (JSC::JSLock::JSLock):
+ (JSC::JSLock::lock):
+ (JSC::JSLock::unlock):
+ (JSC::JSLock::currentThreadIsHoldingLock):
+ * runtime/JSLock.h:
+
2014-02-20 Mark Lam <mark....@apple.com>
virtualForWithFunction() should not throw an exception with a partially initialized frame.
Modified: trunk/Source/_javascript_Core/runtime/JSLock.cpp (164483 => 164484)
--- trunk/Source/_javascript_Core/runtime/JSLock.cpp 2014-02-21 15:53:42 UTC (rev 164483)
+++ trunk/Source/_javascript_Core/runtime/JSLock.cpp 2014-02-21 16:45:05 UTC (rev 164484)
@@ -32,21 +32,21 @@
namespace JSC {
-Mutex* GlobalJSLock::s_sharedInstanceLock = 0;
+std::mutex* GlobalJSLock::s_sharedInstanceMutex;
GlobalJSLock::GlobalJSLock()
{
- s_sharedInstanceLock->lock();
+ s_sharedInstanceMutex->lock();
}
GlobalJSLock::~GlobalJSLock()
{
- s_sharedInstanceLock->unlock();
+ s_sharedInstanceMutex->unlock();
}
void GlobalJSLock::initialize()
{
- s_sharedInstanceLock = new Mutex();
+ s_sharedInstanceMutex = new std::mutex();
}
JSLockHolder::JSLockHolder(ExecState* exec)
@@ -84,8 +84,7 @@
}
JSLock::JSLock(VM* vm)
- : m_ownerThread(0)
- , m_lockCount(0)
+ : m_lockCount(0)
, m_lockDropDepth(0)
, m_vm(vm)
{
@@ -109,7 +108,6 @@
void JSLock::lock(intptr_t lockCount)
{
ASSERT(lockCount > 0);
- ThreadIdentifier currentThread = WTF::currentThread();
if (currentThreadIsHoldingLock()) {
m_lockCount += lockCount;
return;
@@ -117,7 +115,7 @@
m_lock.lock();
- setOwnerThread(currentThread);
+ m_ownerThreadID = std::this_thread::get_id();
ASSERT(!m_lockCount);
m_lockCount = lockCount;
@@ -148,7 +146,7 @@
if (!m_lockCount) {
if (m_vm)
m_vm->setStackPointerAtVMEntry(nullptr);
- setOwnerThread(0);
+ m_ownerThreadID = std::thread::id();
m_lock.unlock();
}
}
@@ -165,7 +163,7 @@
bool JSLock::currentThreadIsHoldingLock()
{
- return m_ownerThread == WTF::currentThread();
+ return m_ownerThreadID == std::this_thread::get_id();
}
// This function returns the number of locks that were dropped.
Modified: trunk/Source/_javascript_Core/runtime/JSLock.h (164483 => 164484)
--- trunk/Source/_javascript_Core/runtime/JSLock.h 2014-02-21 15:53:42 UTC (rev 164483)
+++ trunk/Source/_javascript_Core/runtime/JSLock.h 2014-02-21 16:45:05 UTC (rev 164484)
@@ -21,10 +21,12 @@
#ifndef JSLock_h
#define JSLock_h
+#include <mutex>
+#include <thread>
#include <wtf/Assertions.h>
#include <wtf/Noncopyable.h>
#include <wtf/RefPtr.h>
-#include <wtf/Threading.h>
+#include <wtf/ThreadSafeRefCounted.h>
namespace JSC {
@@ -60,7 +62,7 @@
static void initialize();
private:
- static Mutex* s_sharedInstanceLock;
+ static std::mutex* s_sharedInstanceMutex;
};
class JSLockHolder {
@@ -119,13 +121,12 @@
private:
void lock(intptr_t lockCount);
void unlock(intptr_t unlockCount);
- void setOwnerThread(ThreadIdentifier owner) { m_ownerThread = owner; }
unsigned dropAllLocks(DropAllLocks*);
void grabAllLocks(DropAllLocks*, unsigned lockCount);
- Mutex m_lock;
- ThreadIdentifier m_ownerThread;
+ std::mutex m_lock;
+ std::thread::id m_ownerThreadID;
intptr_t m_lockCount;
unsigned m_lockDropDepth;
VM* m_vm;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes