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 45a973964231fa7d794b2be72d3175871970720b..521c381506c8e13c64fcc01763476a44b7ef0c03 100644 |
--- a/base/trace_event/process_memory_dump.h |
+++ b/base/trace_event/process_memory_dump.h |
@@ -7,6 +7,7 @@ |
#include <stddef.h> |
+#include <map> |
#include <unordered_map> |
#include <vector> |
@@ -39,10 +40,10 @@ class TracedValue; |
class BASE_EXPORT ProcessMemoryDump { |
public: |
struct MemoryAllocatorDumpEdge { |
- MemoryAllocatorDumpGuid source; |
MemoryAllocatorDumpGuid target; |
int importance; |
const char* type; |
+ bool overridable; |
}; |
// Maps allocator dumps absolute names (allocator_name/heap/subheap) to |
@@ -53,6 +54,11 @@ class BASE_EXPORT ProcessMemoryDump { |
using HeapDumpsMap = |
std::unordered_map<std::string, std::unique_ptr<TracedValue>>; |
+ // Stores allocator dump edges as a map from source allocator dump guids to |
+ // the target. |
Primiano Tucci (use gerrit)
2017/06/05 15:23:39
"to the target" part in the comment is false :)
ssid
2017/06/05 17:03:29
Yeah, I was looking for this phrase!
|
+ using AllocatorDumpEdgesMap = |
+ std::map<MemoryAllocatorDumpGuid, MemoryAllocatorDumpEdge>; |
+ |
#if defined(COUNT_RESIDENT_BYTES_SUPPORTED) |
// Returns the number of bytes in a kernel memory page. Some platforms may |
// have a different value for kernel page sizes from user page sizes. It is |
@@ -135,7 +141,7 @@ class BASE_EXPORT ProcessMemoryDump { |
void AddOwnershipEdge(const MemoryAllocatorDumpGuid& source, |
const MemoryAllocatorDumpGuid& target); |
- const std::vector<MemoryAllocatorDumpEdge>& allocator_dumps_edges() const { |
+ const AllocatorDumpEdgesMap& allocator_dumps_edges_for_testing() const { |
return allocator_dumps_edges_; |
} |
@@ -181,12 +187,20 @@ class BASE_EXPORT ProcessMemoryDump { |
private: |
FRIEND_TEST_ALL_PREFIXES(ProcessMemoryDumpTest, BackgroundModeTest); |
+ FRIEND_TEST_ALL_PREFIXES(ProcessMemoryDumpTest, OverrideOwnershipEdge); |
MemoryAllocatorDump* AddAllocatorDumpInternal( |
std::unique_ptr<MemoryAllocatorDump> mad); |
MemoryAllocatorDump* GetBlackHoleMad(); |
+ // Adds edges that can be overriden by a later or earlier call to |
+ // AddOwnershipEdge() with the same source and target with a different |
+ // |importance| value. |
+ void AddOverridableOwnershipEdge(const MemoryAllocatorDumpGuid& source, |
+ const MemoryAllocatorDumpGuid& target, |
+ int importance); |
+ |
ProcessMemoryTotals process_totals_; |
bool has_process_totals_; |
@@ -200,7 +214,7 @@ class BASE_EXPORT ProcessMemoryDump { |
scoped_refptr<MemoryDumpSessionState> session_state_; |
// Keeps track of relationships between MemoryAllocatorDump(s). |
- std::vector<MemoryAllocatorDumpEdge> allocator_dumps_edges_; |
+ AllocatorDumpEdgesMap allocator_dumps_edges_; |
// Level of detail of the current dump. |
const MemoryDumpArgs dump_args_; |