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

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

Issue 1200833008: Adding freelist statistics to blink gc dump provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@oilpan_n2
Patch Set: Indexing with 2^i. 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 d6c57cb4422785de3554b671e96c0070ef35d551..55c674bff40fbe336b3267c92809ae6ce19a4298 100644
--- a/Source/platform/heap/Heap.cpp
+++ b/Source/platform/heap/Heap.cpp
@@ -562,6 +562,11 @@ bool NormalPageHeap::pagesToBeSweptContains(Address address)
}
#endif
+void NormalPageHeap::takeFreelistSnapshot(const String& dumpName)
+{
+ m_freeList.takeSnapshot(dumpName);
+}
+
#if ENABLE(GC_PROFILING)
void NormalPageHeap::snapshotFreeList(TracedValue& json)
{
@@ -1120,6 +1125,23 @@ int FreeList::bucketIndexForSize(size_t size)
return index;
}
+void FreeList::takeSnapshot(const String& dumpBaseName)
+{
+ for (size_t i = 0; i < blinkPageSizeLog2; ++i) {
+ size_t entryCount = 0;
+ size_t freeSize = 0;
+ for (FreeListEntry* entry = m_freeLists[i]; entry; entry = entry->next()) {
+ ++entryCount;
+ freeSize += entry->size();
+ }
+
+ String dumpName = dumpBaseName + String::format("/buckets/bucket_%lu", static_cast<unsigned long>(1 << i));
haraken 2015/06/23 08:14:49 I'm just curious, but where is the String::operato
+ WebMemoryAllocatorDump* bucketDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName);
+ bucketDump->AddScalar("freelist_entry_count", "objects", entryCount);
+ bucketDump->AddScalar("free_size", "bytes", freeSize);
+ }
+}
+
#if ENABLE(GC_PROFILING)
void FreeList::getFreeSizeStats(PerBucketFreeListStats bucketStats[], size_t& totalFreeSize) const
{
@@ -1453,7 +1475,7 @@ void NormalPage::markOrphaned()
void NormalPage::takeSnapshot(String dumpName, size_t pageIndex)
{
- dumpName.append(String::format("/page_%lu", static_cast<unsigned long>(pageIndex)));
+ dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex)));
WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName);
HeapObjectHeader* header = nullptr;
@@ -1662,7 +1684,7 @@ void LargeObjectPage::markOrphaned()
void LargeObjectPage::takeSnapshot(String dumpName, size_t pageIndex)
{
- dumpName.append(String::format("/page_%lu", static_cast<unsigned long>(pageIndex)));
+ dumpName.append(String::format("/pages/page_%lu", static_cast<unsigned long>(pageIndex)));
WebMemoryAllocatorDump* pageDump = BlinkGCMemoryDumpProvider::instance()->createMemoryAllocatorDumpForCurrentGC(dumpName);
size_t liveSize = 0;

Powered by Google App Engine
This is Rietveld 408576698