void MachineThreads::addCurrentThread() { ASSERT(!m_heap->globalData()->exclusiveThread || m_heap->globalData()->exclusiveThread == currentThread()); if (!m_threadSpecific || threadSpecificGet(m_threadSpecific)) return; threadSpecificSet(m_threadSpecific, this); Thread* thread = new Thread(getCurrentPlatformThread(), wtfThreadData().stack().origin()); MutexLocker lock(m_registeredThreadsMutex); thread->next = m_registeredThreads; m_registeredThreads = thread; }
void MachineThreads::addCurrentThread() { ASSERT(!m_heap->vm()->hasExclusiveThread() || m_heap->vm()->exclusiveThread() == std::this_thread::get_id()); if (threadSpecificGet(m_threadSpecific)) { ASSERT(threadSpecificGet(m_threadSpecific) == this); return; } threadSpecificSet(m_threadSpecific, this); Thread* thread = Thread::createForCurrentThread(); MutexLocker lock(m_registeredThreadsMutex); thread->next = m_registeredThreads; m_registeredThreads = thread; }