Changeset 187026 in webkit


Ignore:
Timestamp:
Jul 20, 2015 11:12:56 AM (9 years ago)
Author:
mark.lam@apple.com
Message:

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

Source/JavaScriptCore:

  • 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):

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r187021 r187026  
     12015-07-20  Mark Lam  <mark.lam@apple.com>
     2
     3        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
     4        https://bugs.webkit.org/show_bug.cgi?id=147110
     5
     6        * heap/MachineStackMarker.cpp:
     7        (JSC::MachineThreads::addCurrentThread):
     8        * runtime/JSLock.cpp:
     9        (JSC::JSLockHolder::~JSLockHolder):
     10        (JSC::JSLock::JSLock):
     11        (JSC::JSLock::willDestroyVM):
     12        (JSC::JSLock::setExclusiveThread):
     13        (JSC::JSLock::lock):
     14        (JSC::JSLock::unlock):
     15        (JSC::JSLock::currentThreadIsHoldingLock):
     16        (JSC::JSLock::dropAllLocks):
     17        * runtime/JSLock.h:
     18        (JSC::JSLock::vm):
     19        (JSC::JSLock::hasExclusiveThread):
     20        (JSC::JSLock::exclusiveThread):
     21        * runtime/VM.h:
     22        (JSC::VM::hasExclusiveThread):
     23        (JSC::VM::exclusiveThread):
     24        (JSC::VM::setExclusiveThread):
     25
    1262015-07-20  Per Arne Vollan  <peavo@outlook.com>
    227
  • trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp

    r187021 r187026  
    285285void MachineThreads::addCurrentThread()
    286286{
    287     ASSERT(!m_heap->vm()->hasExclusiveThread() || m_heap->vm()->exclusiveThread() == currentThread());
     287    ASSERT(!m_heap->vm()->hasExclusiveThread() || m_heap->vm()->exclusiveThread() == std::this_thread::get_id());
    288288
    289289    if (threadSpecificGet(m_threadSpecific)) {
  • trunk/Source/JavaScriptCore/runtime/JSLock.cpp

    r187020 r187026  
    2727#include "JSObject.h"
    2828#include "JSCInlines.h"
     29#include <thread>
    2930
    3031namespace JSC {
     
    7879
    7980JSLock::JSLock(VM* vm)
    80     : m_ownerThreadID(0)
     81    : m_ownerThreadID(std::thread::id())
    8182    , m_lockCount(0)
    8283    , m_lockDropDepth(0)
     
    9798}
    9899
    99 void JSLock::setExclusiveThread(ThreadIdentifier threadId)
    100 {
    101     RELEASE_ASSERT(!m_lockCount && !m_ownerThreadID);
    102     m_hasExclusiveThread = !!threadId;
     100void JSLock::setExclusiveThread(std::thread::id threadId)
     101{
     102    RELEASE_ASSERT(!m_lockCount && m_ownerThreadID == std::thread::id());
     103    m_hasExclusiveThread = (threadId != std::thread::id());
    103104    m_ownerThreadID = threadId;
    104105}
     
    119120    if (!m_hasExclusiveThread) {
    120121        m_lock.lock();
    121         m_ownerThreadID = currentThread();
     122        m_ownerThreadID = std::this_thread::get_id();
    122123    }
    123124    ASSERT(!m_lockCount);
     
    167168
    168169        if (!m_hasExclusiveThread) {
    169             m_ownerThreadID = 0;
     170            m_ownerThreadID = std::thread::id();
    170171            m_lock.unlock();
    171172        }
     
    200201bool JSLock::currentThreadIsHoldingLock()
    201202{
    202     ASSERT(!m_hasExclusiveThread || (exclusiveThread() == currentThread()));
     203    ASSERT(!m_hasExclusiveThread || (exclusiveThread() == std::this_thread::get_id()));
    203204    if (m_hasExclusiveThread)
    204205        return !!m_lockCount;
    205     return m_ownerThreadID == currentThread();
     206    return m_ownerThreadID == std::this_thread::get_id();
    206207}
    207208
     
    210211{
    211212    if (m_hasExclusiveThread) {
    212         ASSERT(exclusiveThread() == currentThread());
     213        ASSERT(exclusiveThread() == std::this_thread::get_id());
    213214        return 0;
    214215    }
  • trunk/Source/JavaScriptCore/runtime/JSLock.h

    r187020 r187026  
    2323
    2424#include <mutex>
     25#include <thread>
    2526#include <wtf/Assertions.h>
    2627#include <wtf/Noncopyable.h>
    2728#include <wtf/RefPtr.h>
    2829#include <wtf/ThreadSafeRefCounted.h>
    29 #include <wtf/Threading.h>
    3030#include <wtf/WTFThreadData.h>
    3131
     
    9797
    9898    bool hasExclusiveThread() const { return m_hasExclusiveThread; }
    99     ThreadIdentifier exclusiveThread() const
     99    std::thread::id exclusiveThread() const
    100100    {
    101101        ASSERT(m_hasExclusiveThread);
    102102        return m_ownerThreadID;
    103103    }
    104     JS_EXPORT_PRIVATE void setExclusiveThread(ThreadIdentifier);
     104    JS_EXPORT_PRIVATE void setExclusiveThread(std::thread::id);
    105105    JS_EXPORT_PRIVATE bool currentThreadIsHoldingLock();
    106106
     
    135135
    136136    std::mutex m_lock;
    137     ThreadIdentifier m_ownerThreadID;
     137    std::thread::id m_ownerThreadID;
    138138    intptr_t m_lockCount;
    139139    unsigned m_lockDropDepth;
  • trunk/Source/JavaScriptCore/runtime/VM.h

    r187020 r187026  
    500500
    501501    bool hasExclusiveThread() const { return m_apiLock->hasExclusiveThread(); }
    502     ThreadIdentifier exclusiveThread() const { return m_apiLock->exclusiveThread(); }
    503     void setExclusiveThread(ThreadIdentifier threadId) { m_apiLock->setExclusiveThread(threadId); }
     502    std::thread::id exclusiveThread() const { return m_apiLock->exclusiveThread(); }
     503    void setExclusiveThread(std::thread::id threadId) { m_apiLock->setExclusiveThread(threadId); }
    504504
    505505    JS_EXPORT_PRIVATE void resetDateCache();
  • trunk/Source/WTF/ChangeLog

    r187022 r187026  
     12015-07-20  Mark Lam  <mark.lam@apple.com>
     2
     3        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
     4        https://bugs.webkit.org/show_bug.cgi?id=147110
     5
     6        * wtf/WTFThreadData.cpp:
     7        (WTF::WTFThreadData::WTFThreadData):
     8        * wtf/WTFThreadData.h:
     9        (WTF::WTFThreadData::stack):
     10
    1112015-07-20  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/Source/WTF/wtf/WTFThreadData.cpp

    r187020 r187026  
    5151    , m_savedStackPointerAtVMEntry(0)
    5252    , m_savedLastStackTop(stack().origin())
    53 #if OS(WINDOWS)
    54     , m_lastFiber(nullptr)
    55 #endif
    5653{
    5754    AtomicStringTable::create(*this);
  • trunk/Source/WTF/wtf/WTFThreadData.h

    r187020 r187026  
    8484        // See https://bugs.webkit.org/show_bug.cgi?id=102411
    8585#if OS(WINDOWS)
    86         void* currentFiber = GetCurrentFiber();
    87         if (currentFiber != m_lastFiber) {
    88             m_stackBounds = StackBounds::currentThreadStackBounds();
    89             m_lastFiber = currentFiber;
    90         }
     86        m_stackBounds = StackBounds::currentThreadStackBounds();
    9187#endif
    9288        return m_stackBounds;
     
    133129    void* m_savedStackPointerAtVMEntry;
    134130    void* m_savedLastStackTop;
    135 #if OS(WINDOWS)
    136     void* m_lastFiber;
    137 #endif
    138131
    139132#if USE(PTHREAD_GETSPECIFIC_DIRECT)
  • trunk/Source/WebCore/ChangeLog

    r187025 r187026  
     12015-07-20  Mark Lam  <mark.lam@apple.com>
     2
     3        Rollout r187020 and r187021: breaks JSC API tests on debug builds.
     4        https://bugs.webkit.org/show_bug.cgi?id=147110
     5
     6        * bindings/js/JSDOMWindowBase.cpp:
     7        (WebCore::JSDOMWindowBase::commonVM):
     8
    192015-07-18  Ada Chan  <adachan@apple.com>
    210
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp

    r187020 r187026  
    204204        vm = &VM::createLeaked(LargeHeap).leakRef();
    205205#if !PLATFORM(IOS)
    206         vm->setExclusiveThread(currentThread());
     206        vm->setExclusiveThread(std::this_thread::get_id());
    207207#else
    208208        vm->heap.setFullActivityCallback(WebSafeFullGCActivityCallback::create(&vm->heap));
Note: See TracChangeset for help on using the changeset viewer.