Title: [187026] trunk/Source
Revision
187026
Author
mark....@apple.com
Date
2015-07-20 11:12:56 -0700 (Mon, 20 Jul 2015)

Log Message

Rollout r187020 and r187021: breaks JSC API tests on debug builds.
https://bugs.webkit.org/show_bug.cgi?id=147110

Source/_javascript_Core:

* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::addCurrentThread):
* runtime/JSLock.cpp:
(JSC::JSLockHolder::~JSLockHolder):
(JSC::JSLock::JSLock):
(JSC::JSLock::willDestroyVM):
(JSC::JSLock::setExclusiveThread):
(JSC::JSLock::lock):
(JSC::JSLock::unlock):
(JSC::JSLock::currentThreadIsHoldingLock):
(JSC::JSLock::dropAllLocks):
* runtime/JSLock.h:
(JSC::JSLock::vm):
(JSC::JSLock::hasExclusiveThread):
(JSC::JSLock::exclusiveThread):
* runtime/VM.h:
(JSC::VM::hasExclusiveThread):
(JSC::VM::exclusiveThread):
(JSC::VM::setExclusiveThread):

Source/WebCore:

* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::commonVM):

Source/WTF:

* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::stack):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (187025 => 187026)


--- trunk/Source/_javascript_Core/ChangeLog	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-07-20 18:12:56 UTC (rev 187026)
@@ -1,3 +1,28 @@
+2015-07-20  Mark Lam  <mark....@apple.com>
+
+        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
+        https://bugs.webkit.org/show_bug.cgi?id=147110
+
+        * heap/MachineStackMarker.cpp:
+        (JSC::MachineThreads::addCurrentThread):
+        * runtime/JSLock.cpp:
+        (JSC::JSLockHolder::~JSLockHolder):
+        (JSC::JSLock::JSLock):
+        (JSC::JSLock::willDestroyVM):
+        (JSC::JSLock::setExclusiveThread):
+        (JSC::JSLock::lock):
+        (JSC::JSLock::unlock):
+        (JSC::JSLock::currentThreadIsHoldingLock):
+        (JSC::JSLock::dropAllLocks):
+        * runtime/JSLock.h:
+        (JSC::JSLock::vm):
+        (JSC::JSLock::hasExclusiveThread):
+        (JSC::JSLock::exclusiveThread):
+        * runtime/VM.h:
+        (JSC::VM::hasExclusiveThread):
+        (JSC::VM::exclusiveThread):
+        (JSC::VM::setExclusiveThread):
+
 2015-07-20  Per Arne Vollan  <pe...@outlook.com>
 
         Unreviewed debug build fix after r187020.

Modified: trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp (187025 => 187026)


--- trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/_javascript_Core/heap/MachineStackMarker.cpp	2015-07-20 18:12:56 UTC (rev 187026)
@@ -284,7 +284,7 @@
 
 void MachineThreads::addCurrentThread()
 {
-    ASSERT(!m_heap->vm()->hasExclusiveThread() || m_heap->vm()->exclusiveThread() == currentThread());
+    ASSERT(!m_heap->vm()->hasExclusiveThread() || m_heap->vm()->exclusiveThread() == std::this_thread::get_id());
 
     if (threadSpecificGet(m_threadSpecific)) {
         ASSERT(threadSpecificGet(m_threadSpecific) == this);

Modified: trunk/Source/_javascript_Core/runtime/JSLock.cpp (187025 => 187026)


--- trunk/Source/_javascript_Core/runtime/JSLock.cpp	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/_javascript_Core/runtime/JSLock.cpp	2015-07-20 18:12:56 UTC (rev 187026)
@@ -26,6 +26,7 @@
 #include "JSGlobalObject.h"
 #include "JSObject.h"
 #include "JSCInlines.h"
+#include <thread>
 
 namespace JSC {
 
@@ -77,7 +78,7 @@
 }
 
 JSLock::JSLock(VM* vm)
-    : m_ownerThreadID(0)
+    : m_ownerThreadID(std::thread::id())
     , m_lockCount(0)
     , m_lockDropDepth(0)
     , m_hasExclusiveThread(false)
@@ -96,10 +97,10 @@
     m_vm = nullptr;
 }
 
-void JSLock::setExclusiveThread(ThreadIdentifier threadId)
+void JSLock::setExclusiveThread(std::thread::id threadId)
 {
-    RELEASE_ASSERT(!m_lockCount && !m_ownerThreadID);
-    m_hasExclusiveThread = !!threadId;
+    RELEASE_ASSERT(!m_lockCount && m_ownerThreadID == std::thread::id());
+    m_hasExclusiveThread = (threadId != std::thread::id());
     m_ownerThreadID = threadId;
 }
 
@@ -118,7 +119,7 @@
 
     if (!m_hasExclusiveThread) {
         m_lock.lock();
-        m_ownerThreadID = currentThread();
+        m_ownerThreadID = std::this_thread::get_id();
     }
     ASSERT(!m_lockCount);
     m_lockCount = lockCount;
@@ -166,7 +167,7 @@
     if (!m_lockCount) {
 
         if (!m_hasExclusiveThread) {
-            m_ownerThreadID = 0;
+            m_ownerThreadID = std::thread::id();
             m_lock.unlock();
         }
     }
@@ -199,17 +200,17 @@
 
 bool JSLock::currentThreadIsHoldingLock()
 {
-    ASSERT(!m_hasExclusiveThread || (exclusiveThread() == currentThread()));
+    ASSERT(!m_hasExclusiveThread || (exclusiveThread() == std::this_thread::get_id()));
     if (m_hasExclusiveThread)
         return !!m_lockCount;
-    return m_ownerThreadID == currentThread();
+    return m_ownerThreadID == std::this_thread::get_id();
 }
 
 // This function returns the number of locks that were dropped.
 unsigned JSLock::dropAllLocks(DropAllLocks* dropper)
 {
     if (m_hasExclusiveThread) {
-        ASSERT(exclusiveThread() == currentThread());
+        ASSERT(exclusiveThread() == std::this_thread::get_id());
         return 0;
     }
 

Modified: trunk/Source/_javascript_Core/runtime/JSLock.h (187025 => 187026)


--- trunk/Source/_javascript_Core/runtime/JSLock.h	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/_javascript_Core/runtime/JSLock.h	2015-07-20 18:12:56 UTC (rev 187026)
@@ -22,11 +22,11 @@
 #define JSLock_h
 
 #include <mutex>
+#include <thread>
 #include <wtf/Assertions.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/RefPtr.h>
 #include <wtf/ThreadSafeRefCounted.h>
-#include <wtf/Threading.h>
 #include <wtf/WTFThreadData.h>
 
 namespace JSC {
@@ -96,12 +96,12 @@
     VM* vm() { return m_vm; }
 
     bool hasExclusiveThread() const { return m_hasExclusiveThread; }
-    ThreadIdentifier exclusiveThread() const
+    std::thread::id exclusiveThread() const
     {
         ASSERT(m_hasExclusiveThread);
         return m_ownerThreadID;
     }
-    JS_EXPORT_PRIVATE void setExclusiveThread(ThreadIdentifier);
+    JS_EXPORT_PRIVATE void setExclusiveThread(std::thread::id);
     JS_EXPORT_PRIVATE bool currentThreadIsHoldingLock();
 
     void willDestroyVM(VM*);
@@ -134,7 +134,7 @@
     void grabAllLocks(DropAllLocks*, unsigned lockCount);
 
     std::mutex m_lock;
-    ThreadIdentifier m_ownerThreadID;
+    std::thread::id m_ownerThreadID;
     intptr_t m_lockCount;
     unsigned m_lockDropDepth;
     bool m_hasExclusiveThread;

Modified: trunk/Source/_javascript_Core/runtime/VM.h (187025 => 187026)


--- trunk/Source/_javascript_Core/runtime/VM.h	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/_javascript_Core/runtime/VM.h	2015-07-20 18:12:56 UTC (rev 187026)
@@ -499,8 +499,8 @@
 #endif
 
     bool hasExclusiveThread() const { return m_apiLock->hasExclusiveThread(); }
-    ThreadIdentifier exclusiveThread() const { return m_apiLock->exclusiveThread(); }
-    void setExclusiveThread(ThreadIdentifier threadId) { m_apiLock->setExclusiveThread(threadId); }
+    std::thread::id exclusiveThread() const { return m_apiLock->exclusiveThread(); }
+    void setExclusiveThread(std::thread::id threadId) { m_apiLock->setExclusiveThread(threadId); }
 
     JS_EXPORT_PRIVATE void resetDateCache();
 

Modified: trunk/Source/WTF/ChangeLog (187025 => 187026)


--- trunk/Source/WTF/ChangeLog	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/WTF/ChangeLog	2015-07-20 18:12:56 UTC (rev 187026)
@@ -1,3 +1,13 @@
+2015-07-20  Mark Lam  <mark....@apple.com>
+
+        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
+        https://bugs.webkit.org/show_bug.cgi?id=147110
+
+        * wtf/WTFThreadData.cpp:
+        (WTF::WTFThreadData::WTFThreadData):
+        * wtf/WTFThreadData.h:
+        (WTF::WTFThreadData::stack):
+
 2015-07-20  Alex Christensen  <achristen...@webkit.org>
 
         Resurrect CMake build on Windows.

Modified: trunk/Source/WTF/wtf/WTFThreadData.cpp (187025 => 187026)


--- trunk/Source/WTF/wtf/WTFThreadData.cpp	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/WTF/wtf/WTFThreadData.cpp	2015-07-20 18:12:56 UTC (rev 187026)
@@ -50,9 +50,6 @@
 #endif
     , m_savedStackPointerAtVMEntry(0)
     , m_savedLastStackTop(stack().origin())
-#if OS(WINDOWS)
-    , m_lastFiber(nullptr)
-#endif
 {
     AtomicStringTable::create(*this);
     m_currentAtomicStringTable = m_defaultAtomicStringTable;

Modified: trunk/Source/WTF/wtf/WTFThreadData.h (187025 => 187026)


--- trunk/Source/WTF/wtf/WTFThreadData.h	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/WTF/wtf/WTFThreadData.h	2015-07-20 18:12:56 UTC (rev 187026)
@@ -83,11 +83,7 @@
         // We need to always get a fresh StackBounds from the OS due to how fibers work.
         // See https://bugs.webkit.org/show_bug.cgi?id=102411
 #if OS(WINDOWS)
-        void* currentFiber = GetCurrentFiber();
-        if (currentFiber != m_lastFiber) {
-            m_stackBounds = StackBounds::currentThreadStackBounds();
-            m_lastFiber = currentFiber;
-        }
+        m_stackBounds = StackBounds::currentThreadStackBounds();
 #endif
         return m_stackBounds;
     }
@@ -132,9 +128,6 @@
 #endif
     void* m_savedStackPointerAtVMEntry;
     void* m_savedLastStackTop;
-#if OS(WINDOWS)
-    void* m_lastFiber;
-#endif
 
 #if USE(PTHREAD_GETSPECIFIC_DIRECT)
     static const pthread_key_t directKey = __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY1;

Modified: trunk/Source/WebCore/ChangeLog (187025 => 187026)


--- trunk/Source/WebCore/ChangeLog	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/WebCore/ChangeLog	2015-07-20 18:12:56 UTC (rev 187026)
@@ -1,3 +1,11 @@
+2015-07-20  Mark Lam  <mark....@apple.com>
+
+        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
+        https://bugs.webkit.org/show_bug.cgi?id=147110
+
+        * bindings/js/JSDOMWindowBase.cpp:
+        (WebCore::JSDOMWindowBase::commonVM):
+
 2015-07-18  Ada Chan  <adac...@apple.com>
 
         Fix deadlock between -[AVPlayerItem currentTime] and -[AVPlayer isExternalPlaybackActive]

Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp (187025 => 187026)


--- trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp	2015-07-20 18:05:59 UTC (rev 187025)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp	2015-07-20 18:12:56 UTC (rev 187026)
@@ -203,7 +203,7 @@
         ScriptController::initializeThreading();
         vm = &VM::createLeaked(LargeHeap).leakRef();
 #if !PLATFORM(IOS)
-        vm->setExclusiveThread(currentThread());
+        vm->setExclusiveThread(std::this_thread::get_id());
 #else
         vm->heap.setFullActivityCallback(WebSafeFullGCActivityCallback::create(&vm->heap));
 #if ENABLE(GGC)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to