diff options
Diffstat (limited to 'Source/JavaScriptCore/heap/GCThreadSharedData.h')
-rw-r--r-- | Source/JavaScriptCore/heap/GCThreadSharedData.h | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/Source/JavaScriptCore/heap/GCThreadSharedData.h b/Source/JavaScriptCore/heap/GCThreadSharedData.h index bd48d9263..3f09a2820 100644 --- a/Source/JavaScriptCore/heap/GCThreadSharedData.h +++ b/Source/JavaScriptCore/heap/GCThreadSharedData.h @@ -28,27 +28,16 @@ #include "ListableHandler.h" #include "MarkStack.h" -#include "MarkedBlock.h" #include "UnconditionalFinalizer.h" #include "WeakReferenceHarvester.h" #include <wtf/HashSet.h> -#include <wtf/TCSpinLock.h> #include <wtf/Threading.h> #include <wtf/Vector.h> namespace JSC { -class GCThread; class JSGlobalData; class CopiedSpace; -class CopyVisitor; - -enum GCPhase { - NoPhase, - Mark, - Copy, - Exit -}; class GCThreadSharedData { public: @@ -57,11 +46,6 @@ public: void reset(); - void didStartMarking(); - void didFinishMarking(); - void didStartCopying(); - void didFinishCopying(); - #if ENABLE(PARALLEL_GC) void resetChildren(); size_t childVisitCount(); @@ -69,11 +53,12 @@ public: #endif private: - friend class GCThread; friend class SlotVisitor; - friend class CopyVisitor; - void getNextBlocksToCopy(size_t&, size_t&); +#if ENABLE(PARALLEL_GC) + void markingThreadMain(SlotVisitor*); + static void markingThreadStartFunc(void* heap); +#endif JSGlobalData* m_globalData; CopiedSpace* m_copiedSpace; @@ -82,8 +67,9 @@ private: bool m_shouldHashConst; - Vector<GCThread*> m_gcThreads; - + Vector<ThreadIdentifier> m_markingThreads; + Vector<SlotVisitor*> m_markingThreadsMarkStack; + Mutex m_markingLock; ThreadCondition m_markingCondition; MarkStackArray m_sharedMarkStack; @@ -93,27 +79,10 @@ private: Mutex m_opaqueRootsLock; HashSet<void*> m_opaqueRoots; - SpinLock m_copyLock; - Vector<MarkedBlock*>& m_blocksToCopy; - size_t m_copyIndex; - static const size_t s_blockFragmentLength = 32; - - Mutex m_phaseLock; - ThreadCondition m_phaseCondition; - GCPhase m_currentPhase; - ListableHandler<WeakReferenceHarvester>::List m_weakReferenceHarvesters; ListableHandler<UnconditionalFinalizer>::List m_unconditionalFinalizers; }; -inline void GCThreadSharedData::getNextBlocksToCopy(size_t& start, size_t& end) -{ - SpinLockHolder locker(&m_copyLock); - start = m_copyIndex; - end = std::min(m_blocksToCopy.size(), m_copyIndex + s_blockFragmentLength); - m_copyIndex = end; -} - } // namespace JSC #endif |