| Index: base/trace_event/heap_profiler_stack_frame_deduplicator.h
 | 
| diff --git a/base/trace_event/heap_profiler_stack_frame_deduplicator.h b/base/trace_event/heap_profiler_stack_frame_deduplicator.h
 | 
| index 66d430f2ee32572aa0732c4105de410a3ac4db27..04b35675557552a669b25e784ceded574f671730 100644
 | 
| --- a/base/trace_event/heap_profiler_stack_frame_deduplicator.h
 | 
| +++ b/base/trace_event/heap_profiler_stack_frame_deduplicator.h
 | 
| @@ -12,12 +12,13 @@
 | 
|  #include "base/base_export.h"
 | 
|  #include "base/macros.h"
 | 
|  #include "base/trace_event/heap_profiler_allocation_context.h"
 | 
| -#include "base/trace_event/trace_event_impl.h"
 | 
|  
 | 
|  namespace base {
 | 
|  namespace trace_event {
 | 
|  
 | 
| +class StringDeduplicator;
 | 
|  class TraceEventMemoryOverhead;
 | 
| +class TracedValue;
 | 
|  
 | 
|  // A data structure that allows grouping a set of backtraces in a space-
 | 
|  // efficient manner by creating a call tree and writing it as a set of (node,
 | 
| @@ -26,7 +27,7 @@ class TraceEventMemoryOverhead;
 | 
|  // of |StackFrame|s to index into |frames_|. So there is a trie for bottum-up
 | 
|  // lookup of a backtrace for deduplication, and a tree for compact storage in
 | 
|  // the trace log.
 | 
| -class BASE_EXPORT StackFrameDeduplicator : public ConvertableToTraceFormat {
 | 
| +class BASE_EXPORT StackFrameDeduplicator {
 | 
|   public:
 | 
|    // A node in the call tree.
 | 
|    struct FrameNode {
 | 
| @@ -38,9 +39,10 @@ class BASE_EXPORT StackFrameDeduplicator : public ConvertableToTraceFormat {
 | 
|  
 | 
|      StackFrame frame;
 | 
|  
 | 
| -    // The index of the parent stack frame in |frames_|, or -1 if there is no
 | 
| -    // parent frame (when it is at the bottom of the call stack).
 | 
| +    // The index of the parent stack frame in |frames_|, or kInvalidFrameIndex
 | 
| +    // if there is no parent frame (when it is at the bottom of the call stack).
 | 
|      int parent_frame_index;
 | 
| +    constexpr static int kInvalidFrameIndex = -1;
 | 
|  
 | 
|      // Indices into |frames_| of frames called from the current frame.
 | 
|      std::map<StackFrame, int> children;
 | 
| @@ -48,8 +50,10 @@ class BASE_EXPORT StackFrameDeduplicator : public ConvertableToTraceFormat {
 | 
|  
 | 
|    using ConstIterator = std::vector<FrameNode>::const_iterator;
 | 
|  
 | 
| -  StackFrameDeduplicator();
 | 
| -  ~StackFrameDeduplicator() override;
 | 
| +  // |string_deduplication| is used during serialization, and is expected
 | 
| +  // to outlive instances of this class.
 | 
| +  explicit StackFrameDeduplicator(StringDeduplicator* string_deduplicator);
 | 
| +  ~StackFrameDeduplicator();
 | 
|  
 | 
|    // Inserts a backtrace where |beginFrame| is a pointer to the bottom frame
 | 
|    // (e.g. main) and |endFrame| is a pointer past the top frame (most recently
 | 
| @@ -61,16 +65,19 @@ class BASE_EXPORT StackFrameDeduplicator : public ConvertableToTraceFormat {
 | 
|    ConstIterator begin() const { return frames_.begin(); }
 | 
|    ConstIterator end() const { return frames_.end(); }
 | 
|  
 | 
| -  // Writes the |stackFrames| dictionary as defined in https://goo.gl/GerkV8 to
 | 
| -  // the trace log.
 | 
| -  void AppendAsTraceFormat(std::string* out) const override;
 | 
| +  // Appends new |stackFrames| dictionary items that were added after the
 | 
| +  // last call to this function.
 | 
| +  void SerializeIncrementally(TracedValue* traced_value);
 | 
|  
 | 
|    // Estimates memory overhead including |sizeof(StackFrameDeduplicator)|.
 | 
| -  void EstimateTraceMemoryOverhead(TraceEventMemoryOverhead* overhead) override;
 | 
| +  void EstimateTraceMemoryOverhead(TraceEventMemoryOverhead* overhead);
 | 
|  
 | 
|   private:
 | 
| +  StringDeduplicator* string_deduplicator_;
 | 
| +
 | 
|    std::map<StackFrame, int> roots_;
 | 
|    std::vector<FrameNode> frames_;
 | 
| +  size_t last_exported_index_;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(StackFrameDeduplicator);
 | 
|  };
 | 
| 
 |