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