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); |
} |
} |