| Index: Source/platform/heap/ThreadState.h
|
| diff --git a/Source/platform/heap/ThreadState.h b/Source/platform/heap/ThreadState.h
|
| index 3b2c8d649be43b4dc04a4e88083f4b4c0947efe3..d5c4c4cb639919fe60c5f051a48eff3fdd593bf1 100644
|
| --- a/Source/platform/heap/ThreadState.h
|
| +++ b/Source/platform/heap/ThreadState.h
|
| @@ -178,8 +178,14 @@ public:
|
| };
|
|
|
| enum GCType {
|
| - GCWithSweep, // Sweeping is completed in Heap::collectGarbage().
|
| - GCWithoutSweep, // Lazy sweeping is scheduled.
|
| + // Run a marking task and a sweeping task in Heap::collectGarbage().
|
| + GCWithSweep,
|
| + // Run only a marking task in Heap::collectGarbage(). A sweeping task
|
| + // is split into chunks and scheduled lazily.
|
| + GCWithoutSweep,
|
| + // Run a marking task just to take a heap snapshot. A sweeping task
|
| + // doesn't run and the marks are just dropped.
|
| + TakeSnapshot,
|
| };
|
|
|
| // See setGCState() for possible state transitions.
|
| @@ -334,8 +340,8 @@ public:
|
| // In this case, the next GC just cancels the remaining lazy sweeping.
|
| // Specifically, preGC() of the next GC calls makeConsistentForSweeping()
|
| // and it marks all not-yet-swept objets as dead.
|
| - void makeConsistentForSweeping();
|
| - void preGC();
|
| + void makeConsistentForSweeping(GCType);
|
| + void preGC(GCType);
|
| void postGC(GCType);
|
| void preSweep();
|
| void completeSweep();
|
| @@ -650,6 +656,7 @@ private:
|
| void unregisterPreFinalizerInternal(void*);
|
| void invokePreFinalizers(Visitor&);
|
|
|
| + void takeSnapshot();
|
| #if ENABLE(GC_PROFILING)
|
| void snapshotFreeList();
|
| #endif
|
|
|