X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/93a3786624b2768d89bfa27e46598dc64e2fb70a..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/heap/GCThreadSharedData.h diff --git a/heap/GCThreadSharedData.h b/heap/GCThreadSharedData.h index 47a53eb..d6c960a 100644 --- a/heap/GCThreadSharedData.h +++ b/heap/GCThreadSharedData.h @@ -31,17 +31,18 @@ #include "MarkedBlock.h" #include "UnconditionalFinalizer.h" #include "WeakReferenceHarvester.h" +#include #include -#include -#include +#include #include namespace JSC { -class GCThread; -class VM; +class CopiedBlock; class CopiedSpace; class CopyVisitor; +class GCThread; +class VM; enum GCPhase { NoPhase, @@ -51,6 +52,7 @@ enum GCPhase { }; class GCThreadSharedData { + WTF_MAKE_FAST_ALLOCATED; public: GCThreadSharedData(VM*); ~GCThreadSharedData(); @@ -65,6 +67,8 @@ public: #if ENABLE(PARALLEL_GC) void resetChildren(); size_t childVisitCount(); + size_t childBytesVisited(); + size_t childBytesCopied(); size_t childDupStrings(); #endif @@ -84,13 +88,13 @@ private: Vector m_gcThreads; - Mutex m_markingLock; - ThreadCondition m_markingCondition; + std::mutex m_markingMutex; + std::condition_variable m_markingConditionVariable; MarkStackArray m_sharedMarkStack; unsigned m_numberOfActiveParallelMarkers; bool m_parallelMarkersShouldExit; - Mutex m_opaqueRootsLock; + std::mutex m_opaqueRootsMutex; HashSet m_opaqueRoots; SpinLock m_copyLock; @@ -98,9 +102,9 @@ private: size_t m_copyIndex; static const size_t s_blockFragmentLength = 32; - Mutex m_phaseLock; - ThreadCondition m_phaseCondition; - ThreadCondition m_activityCondition; + std::mutex m_phaseMutex; + std::condition_variable m_phaseConditionVariable; + std::condition_variable m_activityConditionVariable; unsigned m_numberOfActiveGCThreads; bool m_gcThreadsShouldWait; GCPhase m_currentPhase;