Changeset 187026 in webkit
- Timestamp:
- Jul 20, 2015 11:12:56 AM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r187021 r187026 1 2015-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 1 26 2015-07-20 Per Arne Vollan <peavo@outlook.com> 2 27 -
trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp
r187021 r187026 285 285 void MachineThreads::addCurrentThread() 286 286 { 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()); 288 288 289 289 if (threadSpecificGet(m_threadSpecific)) { -
trunk/Source/JavaScriptCore/runtime/JSLock.cpp
r187020 r187026 27 27 #include "JSObject.h" 28 28 #include "JSCInlines.h" 29 #include <thread> 29 30 30 31 namespace JSC { … … 78 79 79 80 JSLock::JSLock(VM* vm) 80 : m_ownerThreadID( 0)81 : m_ownerThreadID(std::thread::id()) 81 82 , m_lockCount(0) 82 83 , m_lockDropDepth(0) … … 97 98 } 98 99 99 void JSLock::setExclusiveThread( ThreadIdentifierthreadId)100 { 101 RELEASE_ASSERT(!m_lockCount && !m_ownerThreadID);102 m_hasExclusiveThread = !!threadId;100 void JSLock::setExclusiveThread(std::thread::id threadId) 101 { 102 RELEASE_ASSERT(!m_lockCount && m_ownerThreadID == std::thread::id()); 103 m_hasExclusiveThread = (threadId != std::thread::id()); 103 104 m_ownerThreadID = threadId; 104 105 } … … 119 120 if (!m_hasExclusiveThread) { 120 121 m_lock.lock(); 121 m_ownerThreadID = currentThread();122 m_ownerThreadID = std::this_thread::get_id(); 122 123 } 123 124 ASSERT(!m_lockCount); … … 167 168 168 169 if (!m_hasExclusiveThread) { 169 m_ownerThreadID = 0;170 m_ownerThreadID = std::thread::id(); 170 171 m_lock.unlock(); 171 172 } … … 200 201 bool JSLock::currentThreadIsHoldingLock() 201 202 { 202 ASSERT(!m_hasExclusiveThread || (exclusiveThread() == currentThread()));203 ASSERT(!m_hasExclusiveThread || (exclusiveThread() == std::this_thread::get_id())); 203 204 if (m_hasExclusiveThread) 204 205 return !!m_lockCount; 205 return m_ownerThreadID == currentThread();206 return m_ownerThreadID == std::this_thread::get_id(); 206 207 } 207 208 … … 210 211 { 211 212 if (m_hasExclusiveThread) { 212 ASSERT(exclusiveThread() == currentThread());213 ASSERT(exclusiveThread() == std::this_thread::get_id()); 213 214 return 0; 214 215 } -
trunk/Source/JavaScriptCore/runtime/JSLock.h
r187020 r187026 23 23 24 24 #include <mutex> 25 #include <thread> 25 26 #include <wtf/Assertions.h> 26 27 #include <wtf/Noncopyable.h> 27 28 #include <wtf/RefPtr.h> 28 29 #include <wtf/ThreadSafeRefCounted.h> 29 #include <wtf/Threading.h>30 30 #include <wtf/WTFThreadData.h> 31 31 … … 97 97 98 98 bool hasExclusiveThread() const { return m_hasExclusiveThread; } 99 ThreadIdentifierexclusiveThread() const99 std::thread::id exclusiveThread() const 100 100 { 101 101 ASSERT(m_hasExclusiveThread); 102 102 return m_ownerThreadID; 103 103 } 104 JS_EXPORT_PRIVATE void setExclusiveThread( ThreadIdentifier);104 JS_EXPORT_PRIVATE void setExclusiveThread(std::thread::id); 105 105 JS_EXPORT_PRIVATE bool currentThreadIsHoldingLock(); 106 106 … … 135 135 136 136 std::mutex m_lock; 137 ThreadIdentifierm_ownerThreadID;137 std::thread::id m_ownerThreadID; 138 138 intptr_t m_lockCount; 139 139 unsigned m_lockDropDepth; -
trunk/Source/JavaScriptCore/runtime/VM.h
r187020 r187026 500 500 501 501 bool hasExclusiveThread() const { return m_apiLock->hasExclusiveThread(); } 502 ThreadIdentifierexclusiveThread() const { return m_apiLock->exclusiveThread(); }503 void setExclusiveThread( ThreadIdentifierthreadId) { 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); } 504 504 505 505 JS_EXPORT_PRIVATE void resetDateCache(); -
trunk/Source/WTF/ChangeLog
r187022 r187026 1 2015-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 1 11 2015-07-20 Alex Christensen <achristensen@webkit.org> 2 12 -
trunk/Source/WTF/wtf/WTFThreadData.cpp
r187020 r187026 51 51 , m_savedStackPointerAtVMEntry(0) 52 52 , m_savedLastStackTop(stack().origin()) 53 #if OS(WINDOWS)54 , m_lastFiber(nullptr)55 #endif56 53 { 57 54 AtomicStringTable::create(*this); -
trunk/Source/WTF/wtf/WTFThreadData.h
r187020 r187026 84 84 // See https://bugs.webkit.org/show_bug.cgi?id=102411 85 85 #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(); 91 87 #endif 92 88 return m_stackBounds; … … 133 129 void* m_savedStackPointerAtVMEntry; 134 130 void* m_savedLastStackTop; 135 #if OS(WINDOWS)136 void* m_lastFiber;137 #endif138 131 139 132 #if USE(PTHREAD_GETSPECIFIC_DIRECT) -
trunk/Source/WebCore/ChangeLog
r187025 r187026 1 2015-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 1 9 2015-07-18 Ada Chan <adachan@apple.com> 2 10 -
trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp
r187020 r187026 204 204 vm = &VM::createLeaked(LargeHeap).leakRef(); 205 205 #if !PLATFORM(IOS) 206 vm->setExclusiveThread( currentThread());206 vm->setExclusiveThread(std::this_thread::get_id()); 207 207 #else 208 208 vm->heap.setFullActivityCallback(WebSafeFullGCActivityCallback::create(&vm->heap));
Note: See TracChangeset
for help on using the changeset viewer.