| Index: third_party/WebKit/Source/platform/heap/BlinkGCMemoryDumpProvider.cpp
|
| diff --git a/third_party/WebKit/Source/platform/heap/BlinkGCMemoryDumpProvider.cpp b/third_party/WebKit/Source/platform/heap/BlinkGCMemoryDumpProvider.cpp
|
| index a0f755685c84f7232c01a581cd68e62ee8fcce2a..4fede90e7d509aaa5ed1f7f015a9a66cbaeaece7 100644
|
| --- a/third_party/WebKit/Source/platform/heap/BlinkGCMemoryDumpProvider.cpp
|
| +++ b/third_party/WebKit/Source/platform/heap/BlinkGCMemoryDumpProvider.cpp
|
| @@ -6,6 +6,8 @@
|
|
|
| #include "base/trace_event/heap_profiler_allocation_context_tracker.h"
|
| #include "base/trace_event/heap_profiler_allocation_register.h"
|
| +#include "base/trace_event/memory_allocator_dump.h"
|
| +#include "base/trace_event/process_memory_dump.h"
|
| #include "base/trace_event/trace_event_memory_overhead.h"
|
| #include "platform/heap/Handle.h"
|
| #include "platform/web_process_memory_dump_impl.h"
|
| @@ -17,18 +19,16 @@
|
| namespace blink {
|
| namespace {
|
|
|
| -void dumpMemoryTotals(blink::WebProcessMemoryDump* memoryDump)
|
| +void dumpMemoryTotals(base::trace_event::ProcessMemoryDump* memoryDump)
|
| {
|
| - String dumpName = String::format("blink_gc");
|
| - WebMemoryAllocatorDump* allocatorDump = memoryDump->createMemoryAllocatorDump(dumpName);
|
| - allocatorDump->addScalar("size", "bytes", ProcessHeap::totalAllocatedSpace());
|
| + base::trace_event::MemoryAllocatorDump* allocatorDump = memoryDump->CreateAllocatorDump("blink_gc");
|
| + allocatorDump->AddScalar("size", "bytes", ProcessHeap::totalAllocatedSpace());
|
|
|
| - dumpName.append("/allocated_objects");
|
| - WebMemoryAllocatorDump* objectsDump = memoryDump->createMemoryAllocatorDump(dumpName);
|
| + base::trace_event::MemoryAllocatorDump* objectsDump = memoryDump->CreateAllocatorDump("blink_gc/allocated_objects");
|
|
|
| // ThreadHeap::markedObjectSize() can be underestimated if we're still in the
|
| // process of lazy sweeping.
|
| - objectsDump->addScalar("size", "bytes", ProcessHeap::totalAllocatedObjectSize() + ProcessHeap::totalMarkedObjectSize());
|
| + objectsDump->AddScalar("size", "bytes", ProcessHeap::totalAllocatedObjectSize() + ProcessHeap::totalMarkedObjectSize());
|
| }
|
|
|
| void reportAllocation(Address address, size_t size, const char* typeName)
|
| @@ -53,11 +53,13 @@ BlinkGCMemoryDumpProvider::~BlinkGCMemoryDumpProvider()
|
| {
|
| }
|
|
|
| -bool BlinkGCMemoryDumpProvider::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, blink::WebProcessMemoryDump* memoryDump)
|
| +bool BlinkGCMemoryDumpProvider::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, base::trace_event::ProcessMemoryDump* memoryDump)
|
| {
|
| + using base::trace_event::MemoryDumpLevelOfDetail;
|
| + MemoryDumpLevelOfDetail levelOfDetail = args.level_of_detail;
|
| // In the case of a detailed dump perform a mark-only GC pass to collect
|
| // more detailed stats.
|
| - if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed)
|
| + if (levelOfDetail == MemoryDumpLevelOfDetail::DETAILED)
|
| ThreadHeap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::TakeSnapshot, BlinkGC::ForcedGC);
|
| dumpMemoryTotals(memoryDump);
|
|
|
| @@ -67,7 +69,7 @@ bool BlinkGCMemoryDumpProvider::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfD
|
| base::hash_map<base::trace_event::AllocationContext, base::trace_event::AllocationMetrics> metricsByContext;
|
| {
|
| MutexLocker locker(m_allocationRegisterMutex);
|
| - if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed) {
|
| + if (levelOfDetail == MemoryDumpLevelOfDetail::DETAILED) {
|
| for (const auto& allocSize : *m_allocationRegister) {
|
| base::trace_event::AllocationMetrics& metrics = metricsByContext[allocSize.context];
|
| metrics.size += allocSize.size;
|
| @@ -76,22 +78,22 @@ bool BlinkGCMemoryDumpProvider::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfD
|
| }
|
| m_allocationRegister->EstimateTraceMemoryOverhead(&overhead);
|
| }
|
| - memoryDump->dumpHeapUsage(metricsByContext, overhead, "blink_gc");
|
| + memoryDump->DumpHeapUsage(metricsByContext, overhead, "blink_gc");
|
| }
|
|
|
| // Merge all dumps collected by ThreadHeap::collectGarbage.
|
| - if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed)
|
| - memoryDump->takeAllDumpsFrom(m_currentProcessMemoryDump.get());
|
| + if (levelOfDetail == MemoryDumpLevelOfDetail::DETAILED)
|
| + memoryDump->TakeAllDumpsFrom(m_currentProcessMemoryDump.get());
|
| return true;
|
| }
|
|
|
| -void BlinkGCMemoryDumpProvider::onHeapProfilingEnabled(bool enabled)
|
| +void BlinkGCMemoryDumpProvider::OnHeapProfilingEnabled(bool enabled)
|
| {
|
| if (enabled) {
|
| {
|
| MutexLocker locker(m_allocationRegisterMutex);
|
| if (!m_allocationRegister)
|
| - m_allocationRegister = adoptPtr(new base::trace_event::AllocationRegister());
|
| + m_allocationRegister.reset(new base::trace_event::AllocationRegister());
|
| }
|
| HeapAllocHooks::setAllocationHook(reportAllocation);
|
| HeapAllocHooks::setFreeHook(reportFree);
|
| @@ -102,18 +104,19 @@ void BlinkGCMemoryDumpProvider::onHeapProfilingEnabled(bool enabled)
|
| m_isHeapProfilingEnabled = enabled;
|
| }
|
|
|
| -WebMemoryAllocatorDump* BlinkGCMemoryDumpProvider::createMemoryAllocatorDumpForCurrentGC(const String& absoluteName)
|
| +base::trace_event::MemoryAllocatorDump* BlinkGCMemoryDumpProvider::createMemoryAllocatorDumpForCurrentGC(const String& absoluteName)
|
| {
|
| - return m_currentProcessMemoryDump->createMemoryAllocatorDump(absoluteName);
|
| + // TODO(bashi): Change type name of |absoluteName|.
|
| + return m_currentProcessMemoryDump->CreateAllocatorDump(absoluteName.utf8().data());
|
| }
|
|
|
| void BlinkGCMemoryDumpProvider::clearProcessDumpForCurrentGC()
|
| {
|
| - m_currentProcessMemoryDump->clear();
|
| + m_currentProcessMemoryDump->Clear();
|
| }
|
|
|
| BlinkGCMemoryDumpProvider::BlinkGCMemoryDumpProvider()
|
| - : m_currentProcessMemoryDump(adoptPtr(new WebProcessMemoryDumpImpl()))
|
| + : m_currentProcessMemoryDump(new base::trace_event::ProcessMemoryDump(nullptr))
|
| , m_isHeapProfilingEnabled(false)
|
| {
|
| }
|
|
|