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

Unified Diff: base/trace_event/malloc_dump_provider.cc

Issue 2650863003: [tracing] Switch to new heap dump format. (Closed)
Patch Set: Rebase Created 3 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: 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..43c21e5ba648bc69bd4dba8ce3ba153d02915c67 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 = {0};
+ 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;
« no previous file with comments | « base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc ('k') | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698