Chromium Code Reviews| 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 f01a8880400f3ed55bfe1e0196965d9f301b03b9..b6e17565a5cb4e0c6f5b969454c2f8a8764723f8 100644 |
| --- a/base/trace_event/trace_event_impl.cc |
| +++ b/base/trace_event/trace_event_impl.cc |
| @@ -413,7 +413,7 @@ void InitializeMetadataEvent(TraceEvent* trace_event, |
| &g_category_group_enabled[g_category_metadata], |
| metadata_name, ::trace_event_internal::kNoEventId, |
| num_args, &arg_name, &arg_type, &arg_value, NULL, |
| - TRACE_EVENT_FLAG_NONE); |
| + TRACE_EVENT_FLAG_NONE, trace_event_internal::kNoBindId); |
| } |
| class AutoThreadLocalBoolean { |
| @@ -597,7 +597,8 @@ void TraceEvent::Initialize( |
| const unsigned char* arg_types, |
| const unsigned long long* arg_values, |
| const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
| - unsigned int flags) { |
| + unsigned int flags, |
| + unsigned long long bind_id) { |
| timestamp_ = timestamp; |
| thread_timestamp_ = thread_timestamp; |
| duration_ = TimeDelta::FromInternalValue(-1); |
| @@ -607,6 +608,7 @@ void TraceEvent::Initialize( |
| thread_id_ = thread_id; |
| phase_ = phase; |
| flags_ = flags; |
| + bind_id_ = bind_id; |
| // Clamp num_args since it may have been set by a third_party library. |
| num_args = (num_args > kTraceMaxNumArgs) ? kTraceMaxNumArgs : num_args; |
| @@ -848,6 +850,16 @@ void TraceEvent::AppendAsJSON( |
| if (flags_ & TRACE_EVENT_FLAG_BIND_TO_ENCLOSING) |
| StringAppendF(out, ",\"bp\":\"e\""); |
| + if (flags_ & TRACE_EVENT_FLAG_FLOW_OUT) { |
| + StringAppendF(out, ",\"bind_id\":\"0x%" PRIx64 "\"", static_cast<uint64>(bind_id_)); |
|
vmpstr
2015/07/16 21:30:11
why not just make the type uint64?
|
| + StringAppendF(out, ",\"dir\":\"o\""); |
| + } |
| + |
| + if (flags_ & TRACE_EVENT_FLAG_FLOW_IN) { |
| + StringAppendF(out, ",\"bind_id\":\"0x%" PRIx64 "\"", static_cast<uint64>(bind_id_)); |
| + StringAppendF(out, ",\"dir\":\"i\""); |
| + } |
| + |
| // Instant events also output their scope. |
| if (phase_ == TRACE_EVENT_PHASE_INSTANT) { |
| char scope = '?'; |
| @@ -1212,7 +1224,7 @@ void TraceLog::ThreadLocalEventBuffer::ReportOverhead( |
| event_timestamp, event_thread_timestamp, |
| TRACE_EVENT_PHASE_COMPLETE, |
| &g_category_group_enabled[g_category_trace_event_overhead], |
| - "overhead", 0, 0, NULL, NULL, NULL, NULL, 0); |
| + "overhead", 0, 0, NULL, NULL, NULL, NULL, 0, 0); |
| trace_event->UpdateDuration(now, thread_now); |
| } |
| } |
| @@ -2014,7 +2026,8 @@ TraceEventHandle TraceLog::AddTraceEvent( |
| name, id, thread_id, now, |
| num_args, arg_names, |
| arg_types, arg_values, |
| - convertable_values, flags); |
| + convertable_values, flags, |
| + trace_event_internal::kNoBindId); |
| } |
| TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| @@ -2029,7 +2042,8 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| const unsigned char* arg_types, |
| const unsigned long long* arg_values, |
| const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
| - unsigned int flags) { |
| + unsigned int flags, |
| + unsigned long long bind_id) { |
| TraceEventHandle handle = { 0, 0, 0 }; |
| if (!*category_group_enabled) |
| return handle; |
| @@ -2123,7 +2137,7 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| trace_event->Initialize(thread_id, offset_event_timestamp, thread_now, |
| phase, category_group_enabled, name, id, |
| num_args, arg_names, arg_types, arg_values, |
| - convertable_values, flags); |
| + convertable_values, flags, bind_id); |
| #if defined(OS_ANDROID) |
| trace_event->SendToATrace(); |
| @@ -2515,7 +2529,7 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient( |
| trace_event_internal::kNoEventId, |
| static_cast<int>(base::PlatformThread::CurrentId()), |
| base::TraceTicks::Now(), 0, NULL, NULL, NULL, NULL, |
| - TRACE_EVENT_FLAG_NONE); |
| + TRACE_EVENT_FLAG_NONE, 0); |
| } |
| } |