Index: base/trace_event/malloc_dump_provider.h |
diff --git a/base/trace_event/malloc_dump_provider.h b/base/trace_event/malloc_dump_provider.h |
index 63fc1b082677edef4157f57b8cd6f9951cec7a80..d9d702176a44057ea4fcb04f1aca4c844ac45d24 100644 |
--- a/base/trace_event/malloc_dump_provider.h |
+++ b/base/trace_event/malloc_dump_provider.h |
@@ -8,7 +8,10 @@ |
#include <istream> |
#include "base/macros.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/memory/singleton.h" |
+#include "base/synchronization/lock.h" |
+#include "base/threading/platform_thread.h" |
#include "base/trace_event/memory_dump_provider.h" |
#include "build/build_config.h" |
@@ -20,6 +23,8 @@ |
namespace base { |
namespace trace_event { |
+class AllocationRegister; |
+ |
// Dump provider which collects process-wide memory stats. |
class BASE_EXPORT MallocDumpProvider : public MemoryDumpProvider { |
public: |
@@ -33,12 +38,28 @@ class BASE_EXPORT MallocDumpProvider : public MemoryDumpProvider { |
bool OnMemoryDump(const MemoryDumpArgs& args, |
ProcessMemoryDump* pmd) override; |
+ void OnHeapProfilingEnabled(bool enabled) override; |
+ |
+ // For heap profiling. |
+ void InsertAllocation(void* address, size_t size); |
+ void RemoveAllocation(void* address); |
+ |
private: |
friend struct DefaultSingletonTraits<MallocDumpProvider>; |
MallocDumpProvider(); |
~MallocDumpProvider() override; |
+ // For heap profiling. |
+ bool heap_profiler_enabled_; |
+ scoped_ptr<AllocationRegister> allocation_register_; |
+ Lock allocation_register_lock_; |
+ |
+ // When in OnMemoryDump(), this contains the current thread ID. |
+ // This is to prevent re-entrancy in the heap profiler when the heap dump |
+ // generation is malloc/new-ing for its own bookeeping data structures. |
+ PlatformThreadId tid_dumping_heap_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MallocDumpProvider); |
}; |