Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(800)

Unified Diff: Source/platform/heap/Heap.cpp

Issue 1203493004: [tracing] Adding class-wise memory statistics to blink gc memory dumps (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase errors. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698