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

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: Back to life. Created 5 years, 4 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 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);

Powered by Google App Engine
This is Rietveld 408576698