| Index: base/trace_event/malloc_dump_provider.cc
|
| diff --git a/base/trace_event/malloc_dump_provider.cc b/base/trace_event/malloc_dump_provider.cc
|
| index 14ba0a2e367c4da11dfdebda7f3faae1e522c076..a260c24363c59695e00ba7fd0105c17381dc7e10 100644
|
| --- a/base/trace_event/malloc_dump_provider.cc
|
| +++ b/base/trace_event/malloc_dump_provider.cc
|
| @@ -11,10 +11,12 @@
|
| #include "base/allocator/allocator_extension.h"
|
| #include "base/allocator/allocator_shim.h"
|
| #include "base/allocator/features.h"
|
| +#include "base/bind.h"
|
| #include "base/debug/profiler.h"
|
| #include "base/trace_event/heap_profiler_allocation_context.h"
|
| #include "base/trace_event/heap_profiler_allocation_context_tracker.h"
|
| -#include "base/trace_event/heap_profiler_heap_dump_writer.h"
|
| +#include "base/trace_event/heap_profiler_allocation_register.h"
|
| +#include "base/trace_event/heap_profiler_event_writer.h"
|
| #include "base/trace_event/process_memory_dump.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| #include "build/build_config.h"
|
| @@ -298,11 +300,19 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
|
| // Enclosing all the temporary data structures in a scope, so that the heap
|
| // profiler does not see unbalanced malloc/free calls from these containers.
|
| {
|
| - TraceEventMemoryOverhead overhead;
|
| - std::unordered_map<AllocationContext, AllocationMetrics> metrics_by_context;
|
| if (args.level_of_detail == MemoryDumpLevelOfDetail::DETAILED) {
|
| - ShardedAllocationRegister::OutputMetrics shim_metrics =
|
| - allocation_register_.UpdateAndReturnsMetrics(metrics_by_context);
|
| + struct ShimMetrics {
|
| + size_t size;
|
| + size_t count;
|
| + };
|
| + ShimMetrics shim_metrics;
|
| + auto visit_allocation = [](ShimMetrics* metrics,
|
| + const AllocationRegister::Allocation& alloc) {
|
| + metrics->size += alloc.size;
|
| + metrics->count += 1;
|
| + };
|
| + allocation_register_.VisitAllocations(base::BindRepeating(
|
| + visit_allocation, base::Unretained(&shim_metrics)));
|
|
|
| // Aggregate data for objects allocated through the shim.
|
| inner_dump->AddScalar("shim_allocated_objects_size",
|
| @@ -312,9 +322,8 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
|
| MemoryAllocatorDump::kUnitsObjects,
|
| shim_metrics.count);
|
| }
|
| - allocation_register_.EstimateTraceMemoryOverhead(&overhead);
|
|
|
| - pmd->DumpHeapUsage(metrics_by_context, overhead, "malloc");
|
| + pmd->DumpHeapUsage(allocation_register_, "malloc");
|
| }
|
| tid_dumping_heap_ = kInvalidThreadId;
|
|
|
|
|