| Index: Source/platform/heap/Heap.h | 
| diff --git a/Source/platform/heap/Heap.h b/Source/platform/heap/Heap.h | 
| index ea3aa4685c6c11556a45cbf20d024f42c36b942c..7cedef1c99621ec10c056acfdb2edfb7192f2f80 100644 | 
| --- a/Source/platform/heap/Heap.h | 
| +++ b/Source/platform/heap/Heap.h | 
| @@ -95,6 +95,7 @@ class FreePagePool; | 
| class NormalPageHeap; | 
| class OrphanedPagePool; | 
| class PageMemory; | 
| +class WebProcessMemoryDump; | 
|  | 
| #if ENABLE(GC_PROFILING) | 
| class TracedValue; | 
| @@ -401,6 +402,8 @@ public: | 
| // the stack. | 
| virtual void checkAndMarkPointer(Visitor*, Address) = 0; | 
| virtual void markOrphaned(); | 
| + | 
| +    virtual void takeSnapshot(String dumpName, size_t pageIndex, ThreadState::GCSnapshotInfo&) = 0; | 
| #if ENABLE(GC_PROFILING) | 
| virtual const GCInfo* findGCInfo(Address) = 0; | 
| virtual void snapshot(TracedValue*, ThreadState::SnapshotInfo*) = 0; | 
| @@ -481,6 +484,8 @@ public: | 
| #endif | 
| virtual void checkAndMarkPointer(Visitor*, Address) override; | 
| virtual void markOrphaned() override; | 
| + | 
| +    void takeSnapshot(String dumpBaseName, size_t pageIndex, ThreadState::GCSnapshotInfo&) override; | 
| #if ENABLE(GC_PROFILING) | 
| const GCInfo* findGCInfo(Address) override; | 
| void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; | 
| @@ -545,6 +550,7 @@ public: | 
| virtual void checkAndMarkPointer(Visitor*, Address) override; | 
| virtual void markOrphaned() override; | 
|  | 
| +    void takeSnapshot(String dumpBaseName, size_t pageIndex, ThreadState::GCSnapshotInfo&) override; | 
| #if ENABLE(GC_PROFILING) | 
| const GCInfo* findGCInfo(Address) override; | 
| void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; | 
| @@ -650,6 +656,7 @@ public: | 
| // All FreeListEntries in the given bucket, n, have size >= 2^n. | 
| static int bucketIndexForSize(size_t); | 
|  | 
| +    void takeSnapshot(const String& dumpBaseName); | 
| #if ENABLE(GC_PROFILING) | 
| struct PerBucketFreeListStats { | 
| size_t entryCount; | 
| @@ -683,10 +690,11 @@ public: | 
| virtual ~BaseHeap(); | 
| void cleanupPages(); | 
|  | 
| -    void takeSnapshot(const String& dumpBaseName); | 
| +    void takeSnapshot(const String& dumpBaseName, ThreadState::GCSnapshotInfo&); | 
| #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) | 
| BasePage* findPageFromAddress(Address); | 
| #endif | 
| +    virtual void takeFreelistSnapshot(const String& dumpBaseName) { }; | 
| #if ENABLE(GC_PROFILING) | 
| void snapshot(TracedValue*, ThreadState::SnapshotInfo*); | 
| virtual void snapshotFreeList(TracedValue&) { }; | 
| @@ -746,6 +754,7 @@ public: | 
| virtual bool isConsistentForGC() override; | 
| bool pagesToBeSweptContains(Address); | 
| #endif | 
| +    void takeFreelistSnapshot(const String& dumpBaseName) override; | 
| #if ENABLE(GC_PROFILING) | 
| void snapshotFreeList(TracedValue&) override; | 
| #endif | 
|  |