Index: base/trace_event/trace_event_impl.cc |
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc |
index 510cc2ffac6b32add118eb53ed4147b4b70369d9..d41500dc06f3652d60bb17bf9de0f2c46c4302e1 100644 |
--- a/base/trace_event/trace_event_impl.cc |
+++ b/base/trace_event/trace_event_impl.cc |
@@ -358,10 +358,33 @@ void TraceEvent::AppendAsJSON( |
// If id_ is set, print it out as a hex string so we don't loose any |
// bits (it might be a 64-bit pointer). |
- if (flags_ & TRACE_EVENT_FLAG_HAS_ID) { |
+ unsigned int id_flags_ = flags_ & (TRACE_EVENT_FLAG_HAS_ID | |
+ TRACE_EVENT_FLAG_HAS_LOCAL_ID | |
+ TRACE_EVENT_FLAG_HAS_GLOBAL_ID); |
+ if (id_flags_) { |
if (scope_ != trace_event_internal::kGlobalScope) |
StringAppendF(out, ",\"scope\":\"%s\"", scope_); |
- StringAppendF(out, ",\"id\":\"0x%" PRIx64 "\"", static_cast<uint64_t>(id_)); |
+ |
+ switch (id_flags_) { |
+ case TRACE_EVENT_FLAG_HAS_ID: |
+ StringAppendF(out, ",\"id\":\"0x%" PRIx64 "\"", |
+ static_cast<uint64_t>(id_)); |
+ break; |
+ |
+ case TRACE_EVENT_FLAG_HAS_LOCAL_ID: |
+ StringAppendF(out, ",\"id2\":{\"local\":\"0x%" PRIx64 "\"}", |
+ static_cast<uint64_t>(id_)); |
+ break; |
+ |
+ case TRACE_EVENT_FLAG_HAS_GLOBAL_ID: |
+ StringAppendF(out, ",\"id2\":{\"global\":\"0x%" PRIx64 "\"}", |
+ static_cast<uint64_t>(id_)); |
+ break; |
+ |
+ default: |
+ NOTREACHED() << "More than one of the ID flags are set"; |
+ break; |
+ } |
} |
if (flags_ & TRACE_EVENT_FLAG_BIND_TO_ENCLOSING) |