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..36c0bd9893483ba9b506e231c22e237ef772c5d9 100644 |
--- a/base/trace_event/trace_event.h |
+++ b/base/trace_event/trace_event.h |
@@ -225,14 +225,29 @@ |
#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) \ |
+ INTERNAL_TRACE_MEMORY(category_group, name) \ |
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, bind_id, \ |
+ flow_direction) |
#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. |
@@ -242,6 +257,15 @@ |
INTERNAL_TRACE_EVENT_ADD_SCOPED( \ |
category, name, arg1_name, arg1_val, arg2_name, arg2_val) |
+#define TRACE_EVENT_WITH_MEMORY_TAG_WITH_FLOW2(category, name, memory_tag, \ |
+ bind_id, flow_direction, \ |
+ arg1_name, arg1_val, arg2_name, \ |
+ arg2_val) \ |
+ INTERNAL_TRACE_MEMORY(category, memory_tag) \ |
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category, name, bind_id, \ |
+ flow_direction, arg1_name, \ |
+ arg1_val, arg2_name, arg2_val) |
+ |
// UNSHIPPED_TRACE_EVENT* are like TRACE_EVENT* except that they are not |
// included in official builds. |
@@ -535,23 +559,23 @@ |
value2_name, static_cast<int>(value2_val)) |
// TRACE_EVENT_SAMPLE_* events are injected by the sampling profiler. |
-#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP0(category_group, name, \ |
- thread_id, timestamp) \ |
- INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
+#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP0(category_group, name, \ |
+ thread_id, timestamp) \ |
+ INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
TRACE_EVENT_PHASE_SAMPLE, category_group, name, 0, thread_id, timestamp, \ |
TRACE_EVENT_FLAG_NONE) |
-#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP1( \ |
- category_group, name, thread_id, timestamp, arg1_name, arg1_val) \ |
- INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
+#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP1( \ |
+ category_group, name, thread_id, timestamp, arg1_name, arg1_val) \ |
+ INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
TRACE_EVENT_PHASE_SAMPLE, category_group, name, 0, thread_id, timestamp, \ |
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val) |
-#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP2(category_group, name, \ |
- thread_id, timestamp, \ |
- arg1_name, arg1_val, \ |
- arg2_name, arg2_val) \ |
- INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
+#define TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP2(category_group, name, \ |
+ thread_id, timestamp, \ |
+ arg1_name, arg1_val, \ |
+ arg2_name, arg2_val) \ |
+ INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
TRACE_EVENT_PHASE_SAMPLE, category_group, name, 0, thread_id, timestamp, \ |
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val) |
@@ -1050,67 +1074,86 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
// Implementation detail: internal macro to create static category and add |
// event if the category is enabled. |
#define INTERNAL_TRACE_EVENT_ADD(phase, category_group, name, flags, ...) \ |
- do { \ |
- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
- 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__); \ |
- } \ |
- } while (0) |
+ do { \ |
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
+ 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::kNoId, flags, \ |
+ trace_event_internal::kNoId, ##__VA_ARGS__); \ |
+ } \ |
+ } while (0) |
// Implementation detail: internal macro to create static category and add begin |
// event if the category is enabled. Also adds the end event when the scope |
// ends. |
#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category_group, name, ...) \ |
- 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, TRACE_EVENT_FLAG_NONE, \ |
- ##__VA_ARGS__); \ |
- INTERNAL_TRACE_EVENT_UID(tracer).Initialize( \ |
- INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \ |
- } |
+ 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::kNoId, TRACE_EVENT_FLAG_NONE, \ |
+ trace_event_internal::kNoId, ##__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()) { \ |
+ unsigned int trace_event_flags = flow_direction; \ |
+ trace_event_internal::TraceID trace_event_bind_id(bind_id, \ |
+ &trace_event_flags); \ |
+ base::trace_event::TraceEventHandle h = \ |
+ trace_event_internal::AddTraceEvent( \ |
+ TRACE_EVENT_PHASE_COMPLETE, \ |
+ INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
+ trace_event_internal::kNoId, trace_event_flags, \ |
+ trace_event_bind_id.data(), ##__VA_ARGS__); \ |
+ INTERNAL_TRACE_EVENT_UID(tracer).Initialize( \ |
+ INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \ |
+ } |
// Implementation detail: internal macro to create static category and add |
// event if the category is enabled. |
#define INTERNAL_TRACE_EVENT_ADD_WITH_ID(phase, category_group, name, id, \ |
flags, ...) \ |
- do { \ |
- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
- if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
- unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \ |
- trace_event_internal::TraceID trace_event_trace_id( \ |
- id, &trace_event_flags); \ |
- trace_event_internal::AddTraceEvent( \ |
- phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \ |
- name, trace_event_trace_id.data(), trace_event_flags, \ |
- ##__VA_ARGS__); \ |
- } \ |
- } while (0) |
+ do { \ |
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
+ unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \ |
+ trace_event_internal::TraceID trace_event_trace_id(id, \ |
+ &trace_event_flags); \ |
+ trace_event_internal::AddTraceEvent( \ |
+ phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
+ trace_event_trace_id.data(), trace_event_flags, \ |
+ trace_event_internal::kNoId, ##__VA_ARGS__); \ |
+ } \ |
+ } while (0) |
// Implementation detail: internal macro to create static category and add |
// event if the category is enabled. |
-#define INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(phase, \ |
- category_group, name, id, thread_id, timestamp, flags, ...) \ |
- do { \ |
- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
- if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
- unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \ |
- trace_event_internal::TraceID trace_event_trace_id( \ |
- id, &trace_event_flags); \ |
- trace_event_internal::AddTraceEventWithThreadIdAndTimestamp( \ |
- phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \ |
- name, trace_event_trace_id.data(), \ |
- thread_id, base::TraceTicks::FromInternalValue(timestamp), \ |
- trace_event_flags | TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP, \ |
- ##__VA_ARGS__); \ |
- } \ |
- } while (0) |
+#define INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ |
+ phase, category_group, name, id, thread_id, timestamp, flags, ...) \ |
+ do { \ |
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
+ unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \ |
+ trace_event_internal::TraceID trace_event_trace_id(id, \ |
+ &trace_event_flags); \ |
+ trace_event_internal::AddTraceEventWithThreadIdAndTimestamp( \ |
+ phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
+ trace_event_trace_id.data(), thread_id, \ |
+ base::TraceTicks::FromInternalValue(timestamp), \ |
+ trace_event_flags | TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP, \ |
+ trace_event_internal::kNoId, ##__VA_ARGS__); \ |
+ } \ |
+ } while (0) |
// Notes regarding the following definitions: |
// New values can be added and propagated to third party libraries, but existing |
@@ -1150,6 +1193,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)) |
@@ -1179,7 +1224,7 @@ namespace trace_event_internal { |
// Specify these values when the corresponding argument of AddTraceEvent is not |
// used. |
const int kZeroNumArgs = 0; |
-const unsigned long long kNoEventId = 0; |
+const unsigned long long kNoId = 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,17 +1438,18 @@ 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 int num_args = 1; |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ &arg1_name, arg_types, NULL, &arg1_val, flags); |
} |
-template<class ARG1_TYPE> |
+template <class ARG1_TYPE> |
static inline base::trace_event::TraceEventHandle |
AddTraceEventWithThreadIdAndTimestamp( |
char phase, |
@@ -1413,6 +1459,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, |
@@ -1431,11 +1478,11 @@ AddTraceEventWithThreadIdAndTimestamp( |
convertable_values[1] = arg2_val; |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ arg_names, arg_types, arg_values, convertable_values, flags); |
} |
-template<class ARG2_TYPE> |
+template <class ARG2_TYPE> |
static inline base::trace_event::TraceEventHandle |
AddTraceEventWithThreadIdAndTimestamp( |
char phase, |
@@ -1445,6 +1492,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, |
@@ -1463,8 +1511,8 @@ AddTraceEventWithThreadIdAndTimestamp( |
convertable_values[0] = arg1_val; |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ arg_names, arg_types, arg_values, convertable_values, flags); |
} |
static inline base::trace_event::TraceEventHandle |
@@ -1476,6 +1524,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, |
@@ -1489,8 +1538,8 @@ AddTraceEventWithThreadIdAndTimestamp( |
convertable_values[2] = {arg1_val, arg2_val}; |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ arg_names, arg_types, NULL, convertable_values, flags); |
} |
static inline base::trace_event::TraceEventHandle |
@@ -1501,9 +1550,10 @@ 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, |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, |
kZeroNumArgs, NULL, NULL, NULL, NULL, flags); |
} |
@@ -1512,14 +1562,15 @@ 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); |
+ return AddTraceEventWithThreadIdAndTimestamp( |
+ phase, category_group_enabled, name, id, thread_id, now, flags, bind_id); |
} |
-template<class ARG1_TYPE> |
+template <class ARG1_TYPE> |
static inline base::trace_event::TraceEventHandle |
AddTraceEventWithThreadIdAndTimestamp( |
char phase, |
@@ -1529,6 +1580,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; |
@@ -1536,27 +1588,28 @@ AddTraceEventWithThreadIdAndTimestamp( |
unsigned long long arg_values[1]; |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ &arg1_name, arg_types, arg_values, NULL, flags); |
} |
-template<class ARG1_TYPE> |
+template <class ARG1_TYPE> |
static inline base::trace_event::TraceEventHandle AddTraceEvent( |
char phase, |
const unsigned char* category_group_enabled, |
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, |
- arg1_name, arg1_val); |
+ bind_id, arg1_name, arg1_val); |
} |
-template<class ARG1_TYPE, class ARG2_TYPE> |
+template <class ARG1_TYPE, class ARG2_TYPE> |
static inline base::trace_event::TraceEventHandle |
AddTraceEventWithThreadIdAndTimestamp( |
char phase, |
@@ -1566,6 +1619,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, |
@@ -1577,27 +1631,27 @@ AddTraceEventWithThreadIdAndTimestamp( |
SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); |
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); |
+ phase, category_group_enabled, name, id, thread_id, bind_id, timestamp, num_args, |
+ arg_names, arg_types, arg_values, NULL, flags); |
} |
-template<class ARG1_TYPE, class ARG2_TYPE> |
+template <class ARG1_TYPE, class ARG2_TYPE> |
static inline base::trace_event::TraceEventHandle AddTraceEvent( |
char phase, |
const unsigned char* category_group_enabled, |
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, |
const ARG2_TYPE& arg2_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, |
- arg1_name, arg1_val, |
- arg2_name, arg2_val); |
+ return AddTraceEventWithThreadIdAndTimestamp( |
+ phase, category_group_enabled, name, id, thread_id, now, flags, bind_id, |
+ arg1_name, arg1_val, arg2_name, arg2_val); |
} |
// Used by TRACE_EVENTx macros. Do not use directly. |