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

Reply via email to