| Index: Source/platform/heap/ThreadState.h
|
| diff --git a/Source/platform/heap/ThreadState.h b/Source/platform/heap/ThreadState.h
|
| index 39df3f485979993816852eca748a5531967f905e..d01986d0178db573d38814e40aedf7e701c7adef 100644
|
| --- a/Source/platform/heap/ThreadState.h
|
| +++ b/Source/platform/heap/ThreadState.h
|
| @@ -41,6 +41,10 @@
|
| #include "wtf/ThreadingPrimitives.h"
|
| #include "wtf/Vector.h"
|
|
|
| +#if ENABLE(GC_PROFILE_HEAP)
|
| +#include "wtf/HashMap.h"
|
| +#endif
|
| +
|
| namespace blink {
|
|
|
| class BaseHeap;
|
| @@ -499,11 +503,40 @@ public:
|
| // the object to which it points.
|
| bool checkAndMarkPointer(Visitor*, Address);
|
|
|
| -#if ENABLE(GC_TRACING)
|
| +#if ENABLE(GC_PROFILE_MARKING)
|
| const GCInfo* findGCInfo(Address);
|
| static const GCInfo* findGCInfoFromAllThreads(Address);
|
| #endif
|
|
|
| +#if ENABLE(GC_PROFILE_HEAP)
|
| + struct SnapshotInfo {
|
| + ThreadState* state;
|
| +
|
| + size_t liveSize;
|
| + size_t deadSize;
|
| + size_t freeSize;
|
| + size_t pageCount;
|
| +
|
| + // Map from base-classes to a snapshot class-ids (used as index below).
|
| + HashMap<const GCInfo*, size_t> classTags;
|
| +
|
| + // Map from class-id (index) to count.
|
| + Vector<int> liveCount;
|
| + Vector<int> deadCount;
|
| +
|
| + // Map from class-id (index) to a vector of generation counts.
|
| + // For i < 7, the count is the number of objects that died after surviving |i| GCs.
|
| + // For i == 7, the count is the number of objects that survived at least 7 GCs.
|
| + Vector<Vector<int, 8> > generations;
|
| +
|
| + explicit SnapshotInfo(ThreadState* state) : state(state), liveSize(0), deadSize(0), freeSize(0), pageCount(0) { }
|
| +
|
| + size_t getClassTag(const GCInfo*);
|
| + };
|
| +
|
| + void snapshot();
|
| +#endif
|
| +
|
| void pushWeakObjectPointerCallback(void*, WeakPointerCallback);
|
| bool popAndInvokeWeakPointerCallback(Visitor*);
|
|
|
|
|