Chromium Code Reviews| Index: Source/platform/heap/Heap.cpp |
| diff --git a/Source/platform/heap/Heap.cpp b/Source/platform/heap/Heap.cpp |
| index fbbc840d354685efba92cd8e5d74c7488d247cdb..d41fb7386f419b573c37a75001b7109318d9a618 100644 |
| --- a/Source/platform/heap/Heap.cpp |
| +++ b/Source/platform/heap/Heap.cpp |
| @@ -260,12 +260,12 @@ void BaseHeap::cleanupPages() |
| m_firstPage = nullptr; |
| } |
| -void BaseHeap::takeSnapshot(const String& dumpBaseName) |
| +void BaseHeap::takeSnapshot(const String& dumpBaseName, ThreadState::GCSnapshotInfo& info) |
| { |
| WebMemoryAllocatorDump* allocatorDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpBaseName); |
| size_t pageIndex = 0; |
| for (BasePage* page = m_firstUnsweptPage; page; page = page->next()) { |
| - page->takeSnapshot(dumpBaseName, pageIndex); |
| + page->takeSnapshot(dumpBaseName, pageIndex, info); |
| pageIndex++; |
| } |
| allocatorDump->AddScalar("blink_page_count", "objects", pageIndex); |
| @@ -1488,7 +1488,7 @@ void NormalPage::markOrphaned() |
| BasePage::markOrphaned(); |
| } |
| -void NormalPage::takeSnapshot(String dumpName, size_t pageIndex) |
| +void NormalPage::takeSnapshot(String dumpName, size_t pageIndex, ThreadState::GCSnapshotInfo& info) |
| { |
| dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex))); |
| WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName); |
| @@ -1508,9 +1508,17 @@ void NormalPage::takeSnapshot(String dumpName, size_t pageIndex) |
| } else if (header->isMarked()) { |
| liveCount++; |
| liveSize += header->size(); |
| + |
| + size_t tag = info.getClassTag(Heap::gcInfo(header->gcInfoIndex())); |
| + info.liveCount[tag]++; |
| + info.liveSize[tag] += header->size(); |
| } else { |
| deadCount++; |
| deadSize += header->size(); |
| + |
| + size_t tag = info.getClassTag(Heap::gcInfo(header->gcInfoIndex())); |
| + info.deadCount[tag]++; |
| + info.deadSize[tag] += header->size(); |
| } |
| } |
| @@ -1697,7 +1705,7 @@ void LargeObjectPage::markOrphaned() |
| BasePage::markOrphaned(); |
| } |
| -void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex) |
| +void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex, ThreadState::GCSnapshotInfo& info) |
| { |
| dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex))); |
| WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName); |
| @@ -1707,12 +1715,17 @@ void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex) |
| size_t liveCount = 0; |
| size_t deadCount = 0; |
| HeapObjectHeader* header = heapObjectHeader(); |
| + size_t tag = info.getClassTag(Heap::gcInfo(header->gcInfoIndex())); |
| if (header->isMarked()) { |
| liveCount = 1; |
| liveSize += header->size(); |
| + info.liveCount[tag]++; |
| + info.liveSize[tag] += header->size(); |
|
haraken
2015/06/26 05:35:28
header->size() => header->payloadSize()
header->s
ssid
2015/06/26 10:10:28
Done.
|
| } else { |
| deadCount = 1; |
| deadSize += header->size(); |
| + info.deadCount[tag]++; |
| + info.deadSize[tag] += header->size(); |
|
haraken
2015/06/26 05:35:28
Ditto.
|
| } |
| pageDump->AddScalar("live_count", "objects", liveCount); |