Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(706)

Unified Diff: base/trace_event/heap_profiler_stack_frame_deduplicator.h

Issue 2650863003: [tracing] Switch to new heap dump format. (Closed)
Patch Set: Fix rebase damage Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};
« no previous file with comments | « base/trace_event/heap_profiler_serialization_state.cc ('k') | base/trace_event/heap_profiler_stack_frame_deduplicator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698