MachineStackMarker.h [plain text]
#ifndef MachineThreads_h
#define MachineThreads_h
#include <wtf/Noncopyable.h>
#include <wtf/ThreadSpecific.h>
#include <wtf/ThreadingPrimitives.h>
namespace JSC {
class CodeBlockSet;
class ConservativeRoots;
class Heap;
class JITStubRoutineSet;
class MachineThreads {
WTF_MAKE_NONCOPYABLE(MachineThreads);
public:
MachineThreads(Heap*);
~MachineThreads();
void gatherConservativeRoots(ConservativeRoots&, JITStubRoutineSet&, CodeBlockSet&, void* stackCurrent);
JS_EXPORT_PRIVATE void makeUsableFromMultipleThreads();
JS_EXPORT_PRIVATE void addCurrentThread();
private:
void gatherFromCurrentThread(ConservativeRoots&, JITStubRoutineSet&, CodeBlockSet&, void* stackCurrent);
class Thread;
static void removeThread(void*);
void removeCurrentThread();
void gatherFromOtherThread(ConservativeRoots&, Thread*, JITStubRoutineSet&, CodeBlockSet&);
Mutex m_registeredThreadsMutex;
Thread* m_registeredThreads;
WTF::ThreadSpecificKey m_threadSpecific;
#if !ASSERT_DISABLED
Heap* m_heap;
#endif
};
}
#endif // MachineThreads_h