Index: base/trace_event/memory_allocator_dump.h |
diff --git a/base/trace_event/memory_allocator_dump.h b/base/trace_event/memory_allocator_dump.h |
index 9a151a6f9c5e2df0960b1b56745ab1914bd539d8..2ded1733c3f97466b7737ea570150988fc16d854 100644 |
--- a/base/trace_event/memory_allocator_dump.h |
+++ b/base/trace_event/memory_allocator_dump.h |
@@ -5,9 +5,12 @@ |
#ifndef BASE_TRACE_EVENT_MEMORY_ALLOCATOR_DUMP_H_ |
#define BASE_TRACE_EVENT_MEMORY_ALLOCATOR_DUMP_H_ |
+#include <string> |
+ |
#include "base/base_export.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
+#include "base/memory/ref_counted.h" |
#include "base/trace_event/memory_allocator_dump_guid.h" |
#include "base/values.h" |
@@ -29,45 +32,32 @@ class BASE_EXPORT MemoryAllocatorDump { |
ProcessMemoryDump* process_memory_dump); |
~MemoryAllocatorDump(); |
- // Standard attribute name to model allocated space. |
- static const char kNameSize[]; |
- |
- // Standard attribute name to model total space requested by the allocator |
- // (e.g., amount of pages requested to the system). |
- static const char kNameOuterSize[]; |
- |
- // Standard attribute name to model space for allocated objects, without |
- // taking into account allocator metadata or fragmentation. |
- static const char kNameInnerSize[]; |
- |
- // Standard attribute name to model the number of objects allocated. |
- static const char kNameObjectsCount[]; |
+ // Standard attribute |name|s for the AddScalar and AddString() methods. |
+ static const char kNameSize[]; // To represent allocated space. |
+ static const char kNameObjectsCount[]; // To represent number of objects. |
- static const char kTypeScalar[]; // Type name for scalar attributes. |
- static const char kTypeString[]; // Type name for string attributes. |
+ // Standard attribute |unit|s for the AddScalar and AddString() methods. |
static const char kUnitsBytes[]; // Unit name to represent bytes. |
static const char kUnitsObjects[]; // Unit name to represent #objects. |
+ // Constants used only internally and by tests. |
+ static const char kTypeScalar[]; // Type name for scalar attributes. |
+ static const char kTypeString[]; // Type name for string attributes. |
+ |
+ // Setters for scalar attributes. Some examples: |
+ // - "size" column (all dumps are expected to have at least this one): |
+ // AddScalar(kNameSize, kUnitsBytes, 1234); |
+ // - Some extra-column reporting internal details of the subsystem: |
+ // AddScalar("number_of_freelist_entires", kUnitsObjects, 42) |
+ // - Other informational column (will not be auto-added in the UI) |
+ // AddScalarF("kittens_ratio", "ratio", 42.0f) |
+ void AddScalar(const char* name, const char* units, uint64 value); |
+ void AddScalarF(const char* name, const char* units, double value); |
+ void AddString(const char* name, const char* units, const std::string& value); |
+ |
// Absolute name, unique within the scope of an entire ProcessMemoryDump. |
const std::string& absolute_name() const { return absolute_name_; } |
- // Generic attribute setter / getter. |
- void Add(const std::string& name, |
- const char* type, |
- const char* units, |
- scoped_ptr<Value> value); |
- bool Get(const std::string& name, |
- const char** out_type, |
- const char** out_units, |
- const Value** out_value) const; |
- |
- // Helper setter for scalar attributes. |
- void AddScalar(const std::string& name, const char* units, uint64 value); |
- void AddScalarF(const std::string& name, const char* units, double value); |
- void AddString(const std::string& name, |
- const char* units, |
- const std::string& value); |
- |
// Called at trace generation time to populate the TracedValue. |
void AsValueInto(TracedValue* value) const; |
@@ -84,12 +74,18 @@ class BASE_EXPORT MemoryAllocatorDump { |
// expected to have the same guid. |
const MemoryAllocatorDumpGuid& guid() const { return guid_; } |
+ TracedValue* attributes_for_testing() const { return attributes_.get(); } |
+ |
private: |
const std::string absolute_name_; |
ProcessMemoryDump* const process_memory_dump_; // Not owned (PMD owns this). |
- DictionaryValue attributes_; |
+ scoped_refptr<TracedValue> attributes_; |
MemoryAllocatorDumpGuid guid_; |
+ // A local buffer for Sprintf conversion on fastpath. Avoids allocating |
+ // temporary strings on each AddScalar() call. |
+ std::string string_conversion_buffer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MemoryAllocatorDump); |
}; |