Chromium Code Reviews| Index: base/trace_event/trace_event.h |
| diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h |
| index 1e5b42a753a908e3b9a32a25d9b8993290cdf580..6a915dfab582bc3c771736f3862e1b88f943a754 100644 |
| --- a/base/trace_event/trace_event.h |
| +++ b/base/trace_event/trace_event.h |
| @@ -225,14 +225,25 @@ |
| #define TRACE_EVENT0(category_group, name) \ |
| INTERNAL_TRACE_MEMORY(category_group, name) \ |
| INTERNAL_TRACE_EVENT_ADD_SCOPED(category_group, name) |
| +#define TRACE_EVENT_WITH_FLOW0(category_group, name, bind_id, flow_direction) \ |
|
vmpstr
2015/07/16 21:30:11
nit: I think bind_id should be named flow_id here
|
| + INTERNAL_TRACE_MEMORY(category_group, name) \ |
| + INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, bind_id, flow_direction) |
|
vmpstr
2015/07/16 21:30:11
nit: run this through clang-format please (git cl
|
| #define TRACE_EVENT1(category_group, name, arg1_name, arg1_val) \ |
| INTERNAL_TRACE_MEMORY(category_group, name) \ |
| INTERNAL_TRACE_EVENT_ADD_SCOPED(category_group, name, arg1_name, arg1_val) |
| +#define TRACE_EVENT_WITH_FLOW1(category_group, name, bind_id, flow_direction, arg1_name, arg1_val) \ |
| + INTERNAL_TRACE_MEMORY(category_group, name) \ |
| + INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, bind_id, flow_direction, arg1_name, arg1_val) |
| #define TRACE_EVENT2( \ |
| category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) \ |
| INTERNAL_TRACE_MEMORY(category_group, name) \ |
| INTERNAL_TRACE_EVENT_ADD_SCOPED( \ |
| category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) |
| +#define TRACE_EVENT_WITH_FLOW2( \ |
| + category_group, name, bind_id, flow_direction, arg1_name, arg1_val, arg2_name, arg2_val) \ |
| + INTERNAL_TRACE_MEMORY(category_group, name) \ |
| + INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW( \ |
| + category_group, name, bind_id, flow_direction, arg1_name, arg1_val, arg2_name, arg2_val) |
| // Records events like TRACE_EVENT2 but uses |memory_tag| for memory tracing. |
| // Use this where |name| is too generic to accurately aggregate allocations. |
| @@ -1055,7 +1066,8 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
| if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
| trace_event_internal::AddTraceEvent( \ |
| phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
| - trace_event_internal::kNoEventId, flags, ##__VA_ARGS__); \ |
| + trace_event_internal::kNoEventId, flags, \ |
| + trace_event_internal::kNoBindId, ##__VA_ARGS__); \ |
| } \ |
| } while (0) |
| @@ -1071,7 +1083,21 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
| TRACE_EVENT_PHASE_COMPLETE, \ |
| INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
| trace_event_internal::kNoEventId, TRACE_EVENT_FLAG_NONE, \ |
| - ##__VA_ARGS__); \ |
| + trace_event_internal::kNoBindId, ##__VA_ARGS__); \ |
| + INTERNAL_TRACE_EVENT_UID(tracer).Initialize( \ |
| + INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \ |
| + } |
| + |
| +#define INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, bind_id, flow_direction, ...) \ |
| + INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
| + trace_event_internal::ScopedTracer INTERNAL_TRACE_EVENT_UID(tracer); \ |
| + if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
| + base::trace_event::TraceEventHandle h = \ |
| + trace_event_internal::AddTraceEvent( \ |
| + TRACE_EVENT_PHASE_COMPLETE, \ |
| + INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
| + trace_event_internal::kNoEventId, flow_direction, \ |
| + bind_id, ##__VA_ARGS__); \ |
| INTERNAL_TRACE_EVENT_UID(tracer).Initialize( \ |
| INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \ |
| } |
| @@ -1089,7 +1115,7 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
| trace_event_internal::AddTraceEvent( \ |
| phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \ |
| name, trace_event_trace_id.data(), trace_event_flags, \ |
| - ##__VA_ARGS__); \ |
| + trace_event_internal::kNoBindId, ##__VA_ARGS__); \ |
| } \ |
| } while (0) |
| @@ -1108,7 +1134,7 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
| name, trace_event_trace_id.data(), \ |
| thread_id, base::TraceTicks::FromInternalValue(timestamp), \ |
| trace_event_flags | TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP, \ |
| - ##__VA_ARGS__); \ |
| + trace_event_internal::kNoBindId, ##__VA_ARGS__); \ |
| } \ |
| } while (0) |
| @@ -1150,6 +1176,8 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
| #define TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP (static_cast<unsigned int>(1 << 5)) |
| #define TRACE_EVENT_FLAG_ASYNC_TTS (static_cast<unsigned int>(1 << 6)) |
| #define TRACE_EVENT_FLAG_BIND_TO_ENCLOSING (static_cast<unsigned int>(1 << 7)) |
| +#define TRACE_EVENT_FLAG_FLOW_IN (static_cast<unsigned int>(1 << 8)) |
| +#define TRACE_EVENT_FLAG_FLOW_OUT (static_cast<unsigned int>(1 << 9)) |
| #define TRACE_EVENT_FLAG_SCOPE_MASK (static_cast<unsigned int>( \ |
| TRACE_EVENT_FLAG_SCOPE_OFFSET | TRACE_EVENT_FLAG_SCOPE_EXTRA)) |
| @@ -1180,6 +1208,7 @@ namespace trace_event_internal { |
| // used. |
| const int kZeroNumArgs = 0; |
| const unsigned long long kNoEventId = 0; |
| +const unsigned long long kNoBindId = 0; |
| // TraceID encapsulates an ID that can either be an integer or pointer. Pointers |
| // are by default mangled with the Process ID so that they are unlikely to |
| @@ -1393,6 +1422,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& |
| arg1_val) { |
| @@ -1400,7 +1430,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE }; |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, &arg1_name, arg_types, NULL, &arg1_val, flags); |
| + num_args, &arg1_name, arg_types, NULL, &arg1_val, flags, bind_id); |
| } |
| template<class ARG1_TYPE> |
| @@ -1413,6 +1443,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val, |
| const char* arg2_name, |
| @@ -1432,7 +1463,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, arg_names, arg_types, arg_values, convertable_values, flags); |
| + num_args, arg_names, arg_types, arg_values, convertable_values, flags, bind_id); |
| } |
| template<class ARG2_TYPE> |
| @@ -1445,6 +1476,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, |
| const char* arg2_name, |
| @@ -1464,7 +1496,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, arg_names, arg_types, arg_values, convertable_values, flags); |
| + num_args, arg_names, arg_types, arg_values, convertable_values, flags, bind_id); |
| } |
| static inline base::trace_event::TraceEventHandle |
| @@ -1476,6 +1508,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, |
| const char* arg2_name, |
| @@ -1490,7 +1523,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, arg_names, arg_types, NULL, convertable_values, flags); |
| + num_args, arg_names, arg_types, NULL, convertable_values, flags, bind_id); |
| } |
| static inline base::trace_event::TraceEventHandle |
| @@ -1501,10 +1534,11 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned long long id, |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| - unsigned int flags) { |
| + unsigned int flags, |
| + unsigned long long bind_id) { |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - kZeroNumArgs, NULL, NULL, NULL, NULL, flags); |
| + kZeroNumArgs, NULL, NULL, NULL, NULL, flags, bind_id); |
| } |
| static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| @@ -1512,11 +1546,13 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| const unsigned char* category_group_enabled, |
| const char* name, |
| unsigned long long id, |
| - unsigned int flags) { |
| + unsigned int flags, |
| + unsigned long long bind_id) { |
| const int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| const base::TraceTicks now = base::TraceTicks::Now(); |
| return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, |
| - name, id, thread_id, now, flags); |
| + name, id, thread_id, now, flags, |
| + bind_id); |
| } |
| template<class ARG1_TYPE> |
| @@ -1529,6 +1565,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val) { |
| const int num_args = 1; |
| @@ -1537,7 +1574,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, &arg1_name, arg_types, arg_values, NULL, flags); |
| + num_args, &arg1_name, arg_types, arg_values, NULL, flags, bind_id); |
| } |
| template<class ARG1_TYPE> |
| @@ -1547,12 +1584,14 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| const char* name, |
| unsigned long long id, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val) { |
| int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| base::TraceTicks now = base::TraceTicks::Now(); |
| return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, |
| name, id, thread_id, now, flags, |
| + bind_id, |
| arg1_name, arg1_val); |
| } |
| @@ -1566,6 +1605,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| int thread_id, |
| const base::TraceTicks& timestamp, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val, |
| const char* arg2_name, |
| @@ -1578,7 +1618,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]); |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, id, thread_id, timestamp, |
| - num_args, arg_names, arg_types, arg_values, NULL, flags); |
| + num_args, arg_names, arg_types, arg_values, NULL, flags, bind_id); |
| } |
| template<class ARG1_TYPE, class ARG2_TYPE> |
| @@ -1588,6 +1628,7 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| const char* name, |
| unsigned long long id, |
| unsigned int flags, |
| + unsigned long long bind_id, |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val, |
| const char* arg2_name, |
| @@ -1596,6 +1637,7 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| base::TraceTicks now = base::TraceTicks::Now(); |
| return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, |
| name, id, thread_id, now, flags, |
| + bind_id, |
| arg1_name, arg1_val, |
| arg2_name, arg2_val); |
| } |