Index: base/trace_event/process_memory_dump.h |
diff --git a/base/trace_event/process_memory_dump.h b/base/trace_event/process_memory_dump.h |
index 4256c4cadc81340bf05c7d7ea54e25d366f7a93d..df6cc827ff4cb051ba2a1aed5dc925154198323f 100644 |
--- a/base/trace_event/process_memory_dump.h |
+++ b/base/trace_event/process_memory_dump.h |
@@ -6,6 +6,10 @@ |
#define BASE_TRACE_EVENT_PROCESS_MEMORY_DUMP_H_ |
#include "base/base_export.h" |
+#include "base/containers/hash_tables.h" |
+#include "base/containers/small_map.h" |
+#include "base/memory/scoped_vector.h" |
+#include "base/trace_event/memory_allocator_dump.h" |
#include "base/trace_event/process_memory_maps.h" |
#include "base/trace_event/process_memory_totals.h" |
@@ -13,6 +17,7 @@ namespace base { |
namespace trace_event { |
class ConvertableToTraceFormat; |
+class MemoryDumpManager; |
// ProcessMemoryDump is as a strongly typed container which enforces the data |
// model for each memory dump point and holds the dumps produced by the |
@@ -22,6 +27,9 @@ class ConvertableToTraceFormat; |
// dump point time. |
class BASE_EXPORT ProcessMemoryDump { |
public: |
+ using AllocatorDumpsMap = |
+ SmallMap<hash_map<std::string, MemoryAllocatorDump*>>; |
+ |
ProcessMemoryDump(); |
~ProcessMemoryDump(); |
@@ -36,6 +44,21 @@ class BASE_EXPORT ProcessMemoryDump { |
bool has_process_mmaps() const { return has_process_mmaps_; } |
void set_has_process_mmaps() { has_process_mmaps_ = true; } |
+ // Creates a new MemoryAllocatorDump with the given name and returns the |
+ // empty object back to the caller. The |name| must be unique in the dump. |
+ // ProcessMemoryDump handles the memory ownership of the created object. |
+ // |parent| can be used to specify a hierarchical relationship of the |
+ // allocator dumps. |
+ MemoryAllocatorDump* CreateAllocatorDump(const std::string& name); |
+ MemoryAllocatorDump* CreateAllocatorDump(const std::string& name, |
+ MemoryAllocatorDump* parent); |
+ |
+ // Returns a MemoryAllocatorDump given its name or nullptr if not found. |
+ MemoryAllocatorDump* GetAllocatorDump(const std::string& name) const; |
+ |
+ // Returns the map of the MemoryAllocatorDumps added to this dump. |
+ const AllocatorDumpsMap& allocator_dumps() const { return allocator_dumps_; } |
+ |
private: |
ProcessMemoryTotals process_totals_; |
bool has_process_totals_; |
@@ -43,6 +66,13 @@ class BASE_EXPORT ProcessMemoryDump { |
ProcessMemoryMaps process_mmaps_; |
bool has_process_mmaps_; |
+ // A maps of "allocator_name" -> MemoryAllocatorDump populated by |
+ // allocator dump providers. |
+ AllocatorDumpsMap allocator_dumps_; |
+ |
+ // ProcessMemoryDump handles the memory ownership of all its belongings. |
+ ScopedVector<MemoryAllocatorDump> allocator_dumps_storage_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ProcessMemoryDump); |
}; |