Chromium Code Reviews| Index: Source/platform/heap/Heap.cpp |
| diff --git a/Source/platform/heap/Heap.cpp b/Source/platform/heap/Heap.cpp |
| index cb5a75fe4b0fb2f167f37942ce38d2df3d81e540..a70abaa13e3256d83437839e0a6131b2ebaa297a 100644 |
| --- a/Source/platform/heap/Heap.cpp |
| +++ b/Source/platform/heap/Heap.cpp |
| @@ -242,7 +242,7 @@ void BaseHeap::cleanupPages() |
| m_firstPage = nullptr; |
| } |
| -void BaseHeap::takeSnapshot(const String& dumpBaseName) |
| +void BaseHeap::takeSnapshot(const String& dumpBaseName, ThreadState::GCSnapshotInfo& info) |
| { |
| // |dumpBaseName| at this point is "blink_gc/thread_X/heaps/HeapName" |
| WebMemoryAllocatorDump* allocatorDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpBaseName); |
| @@ -252,7 +252,7 @@ void BaseHeap::takeSnapshot(const String& dumpBaseName) |
| for (BasePage* page = m_firstUnsweptPage; page; page = page->next()) { |
| size_t heapPageFreeSize = 0; |
| size_t heapPageFreeCount = 0; |
| - page->takeSnapshot(dumpBaseName, pageIndex, &heapPageFreeSize, &heapPageFreeCount); |
| + page->takeSnapshot(dumpBaseName, pageIndex, info, &heapPageFreeSize, &heapPageFreeCount); |
| heapTotalFreeSize += heapPageFreeSize; |
| heapTotalFreeCount += heapPageFreeCount; |
| pageIndex++; |
| @@ -1555,7 +1555,7 @@ void NormalPage::markOrphaned() |
| BasePage::markOrphaned(); |
| } |
| -void NormalPage::takeSnapshot(String dumpName, size_t pageIndex, size_t* outFreeSize, size_t* outFreeCount) |
| +void NormalPage::takeSnapshot(String dumpName, size_t pageIndex, ThreadState::GCSnapshotInfo& info, size_t* outFreeSize, size_t* outFreeCount) |
| { |
| dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex))); |
| WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName); |
| @@ -1575,9 +1575,17 @@ void NormalPage::takeSnapshot(String dumpName, size_t pageIndex, size_t* outFree |
| } else if (header->isMarked()) { |
| liveCount++; |
| liveSize += header->size(); |
| + |
| + size_t tag = header->gcInfoIndex(); |
|
haraken
2015/08/10 23:54:48
tag => gcInfoIndex
ssid
2015/08/11 09:03:03
Done.
|
| + info.liveCount[tag]++; |
| + info.liveSize[tag] += header->size(); |
| } else { |
| deadCount++; |
| deadSize += header->size(); |
| + |
| + size_t tag = header->gcInfoIndex(); |
|
haraken
2015/08/10 23:54:48
Ditto.
|
| + info.deadCount[tag]++; |
| + info.deadSize[tag] += header->size(); |
| } |
| } |
| @@ -1766,7 +1774,7 @@ void LargeObjectPage::markOrphaned() |
| BasePage::markOrphaned(); |
| } |
| -void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex, size_t* outFreeSize, size_t* outFreeCount) |
| +void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex, ThreadState::GCSnapshotInfo& info, size_t* outFreeSize, size_t* outFreeCount) |
| { |
| dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex))); |
| WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName); |
| @@ -1776,12 +1784,17 @@ void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex, size_t* ou |
| size_t liveCount = 0; |
| size_t deadCount = 0; |
| HeapObjectHeader* header = heapObjectHeader(); |
| + size_t tag = header->gcInfoIndex(); |
|
haraken
2015/08/10 23:54:48
Ditto.
ssid
2015/08/11 09:03:03
Done.
|
| if (header->isMarked()) { |
| liveCount = 1; |
| liveSize += header->payloadSize(); |
| + info.liveCount[tag]++; |
| + info.liveSize[tag] += header->size(); |
|
haraken
2015/08/10 23:54:48
Yeah, it is inconsistent we mix header->size() and
ssid
2015/08/11 09:03:03
Sorry, I keep getting confused between these two.
|
| } else { |
| deadCount = 1; |
| deadSize += header->payloadSize(); |
| + info.deadCount[tag]++; |
| + info.deadSize[tag] += header->size(); |
| } |
| pageDump->AddScalar("live_count", "objects", liveCount); |