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 6e1f276a2d566b41fb03cfa4126aba12d75cd3d0..c8a51d00dc3237f265b9fe0a157ba4e2e41534a7 100644 |
| --- a/base/trace_event/trace_event_impl.cc |
| +++ b/base/trace_event/trace_event_impl.cc |
| @@ -408,10 +408,21 @@ void InitializeMetadataEvent(TraceEvent* trace_event, |
| unsigned long long arg_value; |
| ::trace_event_internal::SetTraceValue(value, &arg_type, &arg_value); |
| trace_event->Initialize( |
| - thread_id, TraceTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, |
| - &g_category_group_enabled[g_category_metadata], metadata_name, |
| - trace_event_internal::kNoId, trace_event_internal::kNoId, num_args, |
| - &arg_name, &arg_type, &arg_value, NULL, TRACE_EVENT_FLAG_NONE); |
| + thread_id, |
| + TraceTicks(), |
| + ThreadTicks(), |
| + TRACE_EVENT_PHASE_METADATA, |
| + &g_category_group_enabled[g_category_metadata], |
| + metadata_name, |
| + trace_event_internal::kNoId, |
|
vmpstr
2015/07/21 18:03:41
nit: Can you put some inline comments with what th
|
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
| + num_args, |
| + &arg_name, |
| + &arg_type, |
| + &arg_value, |
| + NULL, |
| + TRACE_EVENT_FLAG_NONE); |
| } |
| class AutoThreadLocalBoolean { |
| @@ -592,6 +603,7 @@ void TraceEvent::Initialize( |
| const char* name, |
| unsigned long long id, |
| unsigned long long context_id, |
| + unsigned long long bind_id, |
| int num_args, |
| const char** arg_names, |
| const unsigned char* arg_types, |
| @@ -608,6 +620,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; |
| @@ -849,6 +862,17 @@ void TraceEvent::AppendAsJSON( |
| if (flags_ & TRACE_EVENT_FLAG_BIND_TO_ENCLOSING) |
| StringAppendF(out, ",\"bp\":\"e\""); |
| + if ((flags_ & TRACE_EVENT_FLAG_FLOW_OUT) || |
| + (flags_ & TRACE_EVENT_FLAG_FLOW_IN)) |
| + StringAppendF(out, ",\"bind_id\":\"0x%" PRIx64 "\"", |
|
vmpstr
2015/07/21 18:03:41
nit: can you put braces around the if (usually we
|
| + static_cast<uint64>(bind_id_)); |
| + |
| + if (flags_ & TRACE_EVENT_FLAG_FLOW_IN) |
| + StringAppendF(out, ",\"flow_in\":true"); |
| + |
| + if (flags_ & TRACE_EVENT_FLAG_FLOW_OUT) |
| + StringAppendF(out, ",\"flow_out\":true"); |
| + |
| // Similar to id_, print the context_id as hex if present. |
| if (flags_ & TRACE_EVENT_FLAG_HAS_CONTEXT_ID) |
| StringAppendF(out, ",\"cid\":\"0x%" PRIx64 "\"", |
| @@ -1214,12 +1238,21 @@ void TraceLog::ThreadLocalEventBuffer::ReportOverhead( |
| TraceEvent* trace_event = AddTraceEvent(NULL); |
| if (trace_event) { |
| trace_event->Initialize( |
| - static_cast<int>(PlatformThread::CurrentId()), event_timestamp, |
| - event_thread_timestamp, TRACE_EVENT_PHASE_COMPLETE, |
| + static_cast<int>(PlatformThread::CurrentId()), |
| + event_timestamp, |
| + event_thread_timestamp, |
| + TRACE_EVENT_PHASE_COMPLETE, |
| &g_category_group_enabled[g_category_trace_event_overhead], |
| - "overhead", ::trace_event_internal::kNoId, |
| - ::trace_event_internal::kNoId, ::trace_event_internal::kZeroNumArgs, |
| - NULL, NULL, NULL, NULL, 0); |
| + "overhead", |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kZeroNumArgs, |
| + NULL, |
| + NULL, |
| + NULL, |
| + NULL, |
|
vmpstr
2015/07/21 18:03:41
nit: For the functions that you're updating, can y
|
| + TRACE_EVENT_FLAG_NONE); |
| trace_event->UpdateDuration(now, thread_now); |
| } |
| } |
| @@ -2018,9 +2051,20 @@ TraceEventHandle TraceLog::AddTraceEvent( |
| int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| base::TraceTicks now = base::TraceTicks::Now(); |
| return AddTraceEventWithThreadIdAndTimestamp( |
| - phase, category_group_enabled, name, id, ::trace_event_internal::kNoId, |
| - thread_id, now, num_args, arg_names, arg_types, arg_values, |
| - convertable_values, flags); |
| + phase, |
| + category_group_enabled, |
| + name, |
| + id, |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
| + thread_id, |
| + now, |
| + num_args, |
| + arg_names, |
| + arg_types, |
| + arg_values, |
| + convertable_values, |
| + flags); |
| } |
| TraceEventHandle TraceLog::AddTraceEventWithContextId( |
| @@ -2038,17 +2082,61 @@ TraceEventHandle TraceLog::AddTraceEventWithContextId( |
| int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| base::TraceTicks now = base::TraceTicks::Now(); |
| return AddTraceEventWithThreadIdAndTimestamp( |
| - phase, category_group_enabled, name, id, context_id, thread_id, now, |
| - num_args, arg_names, arg_types, arg_values, convertable_values, |
| + phase, |
| + category_group_enabled, |
| + name, |
| + id, |
| + context_id, |
| + trace_event_internal::kNoId, |
| + thread_id, |
| + now, |
| + num_args, |
| + arg_names, |
| + arg_types, |
| + arg_values, |
| + convertable_values, |
| flags | TRACE_EVENT_FLAG_HAS_CONTEXT_ID); |
| } |
| +// Handle legacy calls to AddTraceEventWithThreadIdAndTimestamp |
| +// with kNoId as bind_id |
| +TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| + char phase, |
| + const unsigned char* category_group_enabled, |
| + const char* name, |
| + unsigned long long id, |
| + int thread_id, |
| + const TraceTicks& timestamp, |
| + int num_args, |
| + const char** arg_names, |
| + const unsigned char* arg_types, |
| + const unsigned long long* arg_values, |
| + const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
| + unsigned int flags) { |
| + return AddTraceEventWithThreadIdAndTimestamp( |
| + phase, |
| + category_group_enabled, |
| + name, |
| + id, |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
| + thread_id, |
| + timestamp, |
| + num_args, |
| + arg_names, |
| + arg_types, |
| + arg_values, |
| + convertable_values, |
| + flags); |
| +} |
| + |
| TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| char phase, |
| const unsigned char* category_group_enabled, |
| const char* name, |
| unsigned long long id, |
| unsigned long long context_id, |
| + unsigned long long bind_id, |
| int thread_id, |
| const TraceTicks& timestamp, |
| int num_args, |
| @@ -2072,8 +2160,12 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| DCHECK(name); |
| DCHECK(!timestamp.is_null()); |
| - if (flags & TRACE_EVENT_FLAG_MANGLE_ID) |
| + if (flags & TRACE_EVENT_FLAG_MANGLE_ID) { |
| + if ((flags & TRACE_EVENT_FLAG_FLOW_IN) || |
| + (flags & TRACE_EVENT_FLAG_FLOW_OUT)) |
| + bind_id = MangleEventId(bind_id); |
| id = MangleEventId(id); |
| + } |
| TraceTicks offset_event_timestamp = OffsetTimestamp(timestamp); |
| TraceTicks now = flags & TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP ? |
| @@ -2147,10 +2239,21 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
| } |
| if (trace_event) { |
| - trace_event->Initialize(thread_id, offset_event_timestamp, thread_now, |
| - phase, category_group_enabled, name, id, |
| - context_id, num_args, arg_names, arg_types, |
| - arg_values, convertable_values, flags); |
| + trace_event->Initialize(thread_id, |
| + offset_event_timestamp, |
| + thread_now, |
| + phase, |
| + category_group_enabled, |
| + name, |
| + id, |
| + context_id, |
| + bind_id, |
|
dsinclair
2015/07/21 18:11:49
Why did you unwrap this call?
yuhaoz
2015/07/21 18:22:34
Simply because it looks clearer, especially with m
dsinclair
2015/07/21 18:32:50
I prefer the old way, personally. It also makes it
|
| + num_args, |
| + arg_names, |
| + arg_types, |
| + arg_values, |
| + convertable_values, |
| + flags); |
| #if defined(OS_ANDROID) |
| trace_event->SendToATrace(); |
| @@ -2313,9 +2416,16 @@ void TraceLog::UpdateTraceEventDuration( |
| EventCallback event_callback = reinterpret_cast<EventCallback>( |
| subtle::NoBarrier_Load(&event_callback_)); |
| if (event_callback) { |
| - event_callback(now, TRACE_EVENT_PHASE_END, category_group_enabled, name, |
| - trace_event_internal::kNoId, trace_event_internal::kNoId, |
| - NULL, NULL, NULL, TRACE_EVENT_FLAG_NONE); |
| + event_callback(now, |
| + TRACE_EVENT_PHASE_END, |
| + category_group_enabled, |
| + name, |
| + trace_event_internal::kNoId, |
|
dsinclair
2015/07/21 18:11:49
ditto
|
| + trace_event_internal::kNoId, |
| + NULL, |
| + NULL, |
| + NULL, |
| + TRACE_EVENT_FLAG_NONE); |
| } |
| } |
| } |
| @@ -2538,9 +2648,19 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient( |
| if (*category_group_enabled_) { |
| event_handle_ = |
| TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| - TRACE_EVENT_PHASE_COMPLETE, category_group_enabled_, name, kNoId, |
| - kNoId, static_cast<int>(base::PlatformThread::CurrentId()), |
| - base::TraceTicks::Now(), 0, NULL, NULL, NULL, NULL, |
| + TRACE_EVENT_PHASE_COMPLETE, |
| + category_group_enabled_, |
| + name, |
| + trace_event_internal::kNoId, |
| + trace_event_internal::kNoId, |
|
dsinclair
2015/07/21 18:11:49
ditto
|
| + trace_event_internal::kNoId, |
| + static_cast<int>(base::PlatformThread::CurrentId()), |
| + base::TraceTicks::Now(), |
| + trace_event_internal::kZeroNumArgs, |
| + NULL, |
| + NULL, |
| + NULL, |
| + NULL, |
| TRACE_EVENT_FLAG_NONE); |
| } |
| } |