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

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: Remove useless check. 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
« no previous file with comments | « Source/platform/heap/Heap.h ('k') | Source/platform/heap/ThreadState.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/heap/Heap.cpp
diff --git a/Source/platform/heap/Heap.cpp b/Source/platform/heap/Heap.cpp
index cb5a75fe4b0fb2f167f37942ce38d2df3d81e540..ef9249c058ee6469fe8655e1d0367e00607a7168 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 gcInfoIndex = header->gcInfoIndex();
+ info.liveCount[gcInfoIndex]++;
+ info.liveSize[gcInfoIndex] += header->size();
} else {
deadCount++;
deadSize += header->size();
+
+ size_t gcInfoIndex = header->gcInfoIndex();
+ info.deadCount[gcInfoIndex]++;
+ info.deadSize[gcInfoIndex] += 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 gcInfoIndex = header->gcInfoIndex();
if (header->isMarked()) {
liveCount = 1;
liveSize += header->payloadSize();
+ info.liveCount[gcInfoIndex]++;
+ info.liveSize[gcInfoIndex] += header->size();
} else {
deadCount = 1;
deadSize += header->payloadSize();
+ info.deadCount[gcInfoIndex]++;
+ info.deadSize[gcInfoIndex] += header->size();
}
pageDump->AddScalar("live_count", "objects", liveCount);
« no previous file with comments | « Source/platform/heap/Heap.h ('k') | Source/platform/heap/ThreadState.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698