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 <memory> 9 10 #include "base/base_export.h" 11 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h" 12 #include "base/trace_event/heap_profiler_type_name_deduplicator.h" 13 #include "base/trace_event/trace_config.h" 14 15 namespace base { 16 namespace trace_event { 17 18 // Container for state variables that should be shared across all the memory 19 // dumps in a tracing session. 20 class BASE_EXPORT MemoryDumpSessionState 21 : public RefCountedThreadSafe<MemoryDumpSessionState> { 22 public: 23 MemoryDumpSessionState(); 24 25 // Returns the stack frame deduplicator that should be used by memory dump 26 // providers when doing a heap dump. 27 StackFrameDeduplicator* stack_frame_deduplicator() const { 28 return stack_frame_deduplicator_.get(); 29 } 30 31 void SetStackFrameDeduplicator( 32 std::unique_ptr<StackFrameDeduplicator> stack_frame_deduplicator); 33 34 // Returns the type name deduplicator that should be used by memory dump 35 // providers when doing a heap dump. 36 TypeNameDeduplicator* type_name_deduplicator() const { 37 return type_name_deduplicator_.get(); 38 } 39 40 void SetTypeNameDeduplicator( 41 std::unique_ptr<TypeNameDeduplicator> type_name_deduplicator); 42 43 const TraceConfig::MemoryDumpConfig& memory_dump_config() const { 44 return memory_dump_config_; 45 } 46 47 void SetMemoryDumpConfig(const TraceConfig::MemoryDumpConfig& config); 48 49 private: 50 friend class RefCountedThreadSafe<MemoryDumpSessionState>; 51 ~MemoryDumpSessionState(); 52 53 // Deduplicates backtraces in heap dumps so they can be written once when the 54 // trace is finalized. 55 std::unique_ptr<StackFrameDeduplicator> stack_frame_deduplicator_; 56 57 // Deduplicates type names in heap dumps so they can be written once when the 58 // trace is finalized. 59 std::unique_ptr<TypeNameDeduplicator> type_name_deduplicator_; 60 61 // The memory dump config, copied at the time when the tracing session was 62 // started. 63 TraceConfig::MemoryDumpConfig memory_dump_config_; 64 }; 65 66 } // namespace trace_event 67 } // namespace base 68 69 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_ 70