Index: base/trace_event/process_memory_dump.cc |
diff --git a/base/trace_event/process_memory_dump.cc b/base/trace_event/process_memory_dump.cc |
index 54fcad6f2319211e7fb4fc1572cd49861571fc4f..7888a8f70238222dfb1c493b051f860ccd63d546 100644 |
--- a/base/trace_event/process_memory_dump.cc |
+++ b/base/trace_event/process_memory_dump.cc |
@@ -35,6 +35,24 @@ MemoryAllocatorDump* ProcessMemoryDump::GetAllocatorDump( |
return it == allocator_dumps_.end() ? nullptr : it->second; |
} |
+void ProcessMemoryDump::TakeAllDumpsFrom(ProcessMemoryDump* other) { |
+ // We support only merging of MemoryAllocatorDumps. The special process_totals |
+ // and mmaps case are not relevant, let's just prevent clients to accidentally |
petrcermak
2015/05/21 08:17:37
s/case/cases/, s/to/from/
Primiano Tucci (use gerrit)
2015/05/21 08:33:46
Done.
|
+ // try doing that. |
petrcermak
2015/05/21 08:17:38
"try" doesn't belong here (it would have to be "tr
Primiano Tucci (use gerrit)
2015/05/21 08:33:46
Reworded as "trying from doing it" (and I saved on
|
+ DCHECK(!other->has_process_totals() && !other->has_process_mmaps()); |
+ |
+ // Moves the ownership of all the MemoryAllocatorDump(s) contained in |other| |
petrcermak
2015/05/21 08:17:37
nit: I don't think you need "the" in front of "Mem
Primiano Tucci (use gerrit)
2015/05/21 08:33:46
Done.
|
+ // into this ProcessMemoryDump. |
+ for (MemoryAllocatorDump* mad : other->allocator_dumps_storage_) { |
+ // Check that we don't merge duplicates. |
+ DCHECK_EQ(0ul, allocator_dumps_.count(mad->absolute_name())); |
+ allocator_dumps_storage_.push_back(mad); |
+ allocator_dumps_[mad->absolute_name()] = mad; |
+ } |
+ other->allocator_dumps_storage_.weak_clear(); |
+ other->allocator_dumps_.clear(); |
+} |
+ |
void ProcessMemoryDump::AsValueInto(TracedValue* value) const { |
// Build up the [dumper name] -> [value] dictionary. |
if (has_process_totals_) { |