Chromium Code Reviews| 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; |