1 // Copyright 2015 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_ 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_ 7 8 #include "base/base_export.h" 9 #include "base/memory/ref_counted.h" 10 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h" 11 #include "base/trace_event/heap_profiler_type_name_deduplicator.h" 12 13 namespace base { 14 namespace trace_event { 15 16 // Container for state variables that should be shared across all the memory 17 // dumps in a tracing session. 18 class BASE_EXPORT MemoryDumpSessionState 19 : public RefCountedThreadSafe<MemoryDumpSessionState> { 20 public: 21 MemoryDumpSessionState( 22 const scoped_refptr<StackFrameDeduplicator>& stack_frame_deduplicator, 23 const scoped_refptr<TypeNameDeduplicator>& type_name_deduplicator); 24 25 // Returns the stack frame deduplicator that should be used by memory dump 26 // providers when doing a heap dump. stack_frame_deduplicator()27 StackFrameDeduplicator* stack_frame_deduplicator() { 28 return stack_frame_deduplicator_.get(); 29 } 30 31 // Returns the type name deduplicator that should be used by memory dump 32 // providers when doing a heap dump. type_name_deduplicator()33 TypeNameDeduplicator* type_name_deduplicator() { 34 return type_name_deduplicator_.get(); 35 } 36 37 private: 38 friend class RefCountedThreadSafe<MemoryDumpSessionState>; 39 ~MemoryDumpSessionState(); 40 41 // Deduplicates backtraces in heap dumps so they can be written once when the 42 // trace is finalized. 43 scoped_refptr<StackFrameDeduplicator> stack_frame_deduplicator_; 44 45 // Deduplicates type names in heap dumps so they can be written once when the 46 // trace is finalized. 47 scoped_refptr<TypeNameDeduplicator> type_name_deduplicator_; 48 }; 49 50 } // namespace trace_event 51 } // namespace base 52 53 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_ 54