Index: base/trace_event/heap_profiler_stack_frame_deduplicator.cc |
diff --git a/base/trace_event/heap_profiler_stack_frame_deduplicator.cc b/base/trace_event/heap_profiler_stack_frame_deduplicator.cc |
index 12121937530ff30503e6c6dd0a5f65cc38f4bedc..22957804f137b38b44f1610e6621c698702bbbd3 100644 |
--- a/base/trace_event/heap_profiler_stack_frame_deduplicator.cc |
+++ b/base/trace_event/heap_profiler_stack_frame_deduplicator.cc |
@@ -31,7 +31,7 @@ int StackFrameDeduplicator::Insert(const StackFrame* beginFrame, |
std::map<StackFrame, int>* nodes = &roots_; |
// Loop through the frames, early out when a frame is null. |
- for (const StackFrame* it = beginFrame; it != endFrame && *it; it++) { |
+ for (const StackFrame* it = beginFrame; it != endFrame; it++) { |
StackFrame frame = *it; |
auto node = nodes->find(frame); |
@@ -78,7 +78,19 @@ void StackFrameDeduplicator::AppendAsTraceFormat(std::string* out) const { |
out->append(stringify_buffer); |
std::unique_ptr<TracedValue> frame_node_value(new TracedValue); |
- frame_node_value->SetString("name", frame_node->frame); |
+ const StackFrame& frame = frame_node->frame; |
+ switch (frame.type) { |
+ case StackFrame::Type::TRACE_EVENT_NAME: |
+ frame_node_value->SetString( |
+ "name", static_cast<const char*>(frame.value)); |
+ break; |
+ case StackFrame::Type::THREAD_NAME: |
+ SStringPrintf(&stringify_buffer, |
+ "[Thread: %s]", |
+ static_cast<const char*>(frame.value)); |
+ frame_node_value->SetString("name", stringify_buffer); |
+ break; |
Primiano Tucci (use gerrit)
2016/04/19 19:45:06
maybe add a default: NOTREACHED() (not 100% sure t
Dmitry Skiba
2016/04/19 22:14:14
Actually, since we're switching on enum (enum clas
Primiano Tucci (use gerrit)
2016/04/20 13:17:59
Sg, leave it as it is then.
|
+ } |
if (frame_node->parent_frame_index >= 0) { |
SStringPrintf(&stringify_buffer, "%d", frame_node->parent_frame_index); |
frame_node_value->SetString("parent", stringify_buffer); |