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 30ec8d60c2c23a7017c747421d8506d70eb0309c..2321d7ad62bd66c38653ab49b5d28e664b8a861d 100644 |
| --- a/base/trace_event/trace_event.h |
| +++ b/base/trace_event/trace_event.h |
| @@ -110,7 +110,7 @@ |
| // const char** arg_names, |
| // const unsigned char* arg_types, |
| // const unsigned long long* arg_values, |
| -// const scoped_refptr<ConvertableToTraceFormat>* |
| +// scoped_ptr<ConvertableToTraceFormat>* |
| // convertable_values, |
| // unsigned int flags) |
| #define TRACE_EVENT_API_ADD_TRACE_EVENT \ |
| @@ -129,7 +129,7 @@ |
| // const char** arg_names, |
| // const unsigned char* arg_types, |
| // const unsigned long long* arg_values, |
| -// const scoped_refptr<ConvertableToTraceFormat>* |
| +// scoped_ptr<ConvertableToTraceFormat>* |
| // convertable_values, |
| // unsigned int flags) |
| #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID \ |
| @@ -149,7 +149,7 @@ |
| // const char** arg_names, |
| // const unsigned char* arg_types, |
| // const unsigned long long* arg_values, |
| -// const scoped_refptr<ConvertableToTraceFormat>* |
| +// scoped_ptr<ConvertableToTraceFormat>* |
| // convertable_values, |
| // unsigned int flags) |
| #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID \ |
| @@ -169,7 +169,7 @@ |
| // const char** arg_names, |
| // const unsigned char* arg_types, |
| // const unsigned long long* arg_values, |
| -// const scoped_refptr<ConvertableToTraceFormat>* |
| +// scoped_ptr<ConvertableToTraceFormat>* |
| // convertable_values, |
| // unsigned int flags) |
| #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \ |
| @@ -190,7 +190,7 @@ |
| // const unsigned char* category_group_enabled, |
| // const char* event_name, |
| // const char* arg_name, |
| -// scoped_refptr<ConvertableToTraceFormat> arg_value) |
| +// scoped_ptr<ConvertableToTraceFormat> arg_value) |
| #define TRACE_EVENT_API_ADD_METADATA_EVENT \ |
| trace_event_internal::AddMetadataEvent |
| @@ -611,6 +611,7 @@ static inline void SetTraceValue(const base::ThreadTicks arg, |
| // pointers to the internal c_str and pass through to the tracing API, |
| // the arg_values must live throughout these procedures. |
| +template <class ARG1_CONVERTABLE_TYPE> |
| static inline base::trace_event::TraceEventHandle |
| AddTraceEventWithThreadIdAndTimestamp( |
| char phase, |
| @@ -623,16 +624,18 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned int flags, |
| unsigned long long bind_id, |
| const char* arg1_name, |
| - const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& |
| - arg1_val) { |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) { |
| const int num_args = 1; |
| unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE }; |
| + scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| + convertable_values[1] = {std::move(arg1_val)}; |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, scope, id, bind_id, thread_id, |
| - timestamp, num_args, &arg1_name, arg_types, NULL, &arg1_val, flags); |
| + timestamp, num_args, &arg1_name, arg_types, NULL, convertable_values, |
| + flags); |
| } |
| -template<class ARG1_TYPE> |
| +template <class ARG1_TYPE, class ARG2_CONVERTABLE_TYPE> |
| static inline base::trace_event::TraceEventHandle |
| AddTraceEventWithThreadIdAndTimestamp( |
| char phase, |
| @@ -647,8 +650,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| const char* arg1_name, |
| const ARG1_TYPE& arg1_val, |
| const char* arg2_name, |
| - const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& |
| - arg2_val) { |
| + scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) { |
| const int num_args = 2; |
| const char* arg_names[2] = { arg1_name, arg2_name }; |
| @@ -656,18 +658,15 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned long long arg_values[2]; |
| SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); |
| arg_types[1] = TRACE_VALUE_TYPE_CONVERTABLE; |
| - |
| - scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| - convertable_values[2]; |
| - convertable_values[1] = arg2_val; |
| - |
| + scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| + convertable_values[2] = {nullptr, std::move(arg2_val)}; |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, scope, id, bind_id, thread_id, |
| timestamp, num_args, arg_names, arg_types, arg_values, convertable_values, |
| flags); |
| } |
| -template<class ARG2_TYPE> |
| +template <class ARG1_CONVERTABLE_TYPE, class ARG2_TYPE> |
| static inline base::trace_event::TraceEventHandle |
| AddTraceEventWithThreadIdAndTimestamp( |
| char phase, |
| @@ -680,7 +679,7 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned int flags, |
| unsigned long long bind_id, |
| const char* arg1_name, |
| - const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val, |
| const char* arg2_name, |
| const ARG2_TYPE& arg2_val) { |
| const int num_args = 2; |
| @@ -691,17 +690,15 @@ AddTraceEventWithThreadIdAndTimestamp( |
| arg_types[0] = TRACE_VALUE_TYPE_CONVERTABLE; |
| arg_values[0] = 0; |
| SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]); |
| - |
| - scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| - convertable_values[2]; |
| - convertable_values[0] = arg1_val; |
| - |
| + scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| + convertable_values[2] = {std::move(arg1_val), nullptr}; |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, scope, id, bind_id, thread_id, |
| timestamp, num_args, arg_names, arg_types, arg_values, convertable_values, |
| flags); |
| } |
| +template <class ARG1_CONVERTABLE_TYPE, class ARG2_CONVERTABLE_TYPE> |
| static inline base::trace_event::TraceEventHandle |
| AddTraceEventWithThreadIdAndTimestamp( |
| char phase, |
| @@ -714,17 +711,15 @@ AddTraceEventWithThreadIdAndTimestamp( |
| unsigned int flags, |
| unsigned long long bind_id, |
| const char* arg1_name, |
| - const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val, |
| const char* arg2_name, |
| - const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& |
| - arg2_val) { |
| + scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) { |
| const int num_args = 2; |
| const char* arg_names[2] = { arg1_name, arg2_name }; |
| unsigned char arg_types[2] = |
| { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE }; |
| - scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| - convertable_values[2] = {arg1_val, arg2_val}; |
| - |
| + scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| + convertable_values[2] = {std::move(arg1_val), std::move(arg2_val)}; |
| return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
| phase, category_group_enabled, name, scope, id, bind_id, thread_id, |
| timestamp, num_args, arg_names, arg_types, NULL, convertable_values, |
| @@ -803,6 +798,24 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| bind_id, arg1_name, arg1_val); |
| } |
| +template <class ARG1_CONVERTABLE_TYPE> |
| +static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| + char phase, |
| + const unsigned char* category_group_enabled, |
| + const char* name, |
| + const char* scope, |
| + unsigned long long id, |
| + unsigned int flags, |
| + unsigned long long bind_id, |
| + const char* arg1_name, |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) { |
| + int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| + base::TimeTicks now = base::TimeTicks::Now(); |
| + return AddTraceEventWithThreadIdAndTimestamp( |
| + phase, category_group_enabled, name, scope, id, thread_id, now, flags, |
| + bind_id, arg1_name, std::move(arg1_val)); |
| +} |
| + |
| template<class ARG1_TYPE, class ARG2_TYPE> |
| static inline base::trace_event::TraceEventHandle |
| AddTraceEventWithThreadIdAndTimestamp( |
| @@ -830,6 +843,66 @@ AddTraceEventWithThreadIdAndTimestamp( |
| timestamp, num_args, arg_names, arg_types, arg_values, NULL, flags); |
| } |
| +template <class ARG1_CONVERTABLE_TYPE, class ARG2_TYPE> |
|
oystein (OOO til 10th of July)
2016/02/26 19:46:55
nit: No technical difference, but 'typename' for A
Primiano Tucci (use gerrit)
2016/02/26 22:52:50
Yeah I know I was very tempted, the thing is that
oystein (OOO til 10th of July)
2016/02/26 23:14:36
sgtm!
|
| +static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| + char phase, |
| + const unsigned char* category_group_enabled, |
| + const char* name, |
| + const char* scope, |
| + unsigned long long id, |
| + unsigned int flags, |
| + unsigned long long bind_id, |
| + const char* arg1_name, |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val, |
| + const char* arg2_name, |
| + const ARG2_TYPE& arg2_val) { |
| + int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| + base::TimeTicks now = base::TimeTicks::Now(); |
| + return AddTraceEventWithThreadIdAndTimestamp( |
| + phase, category_group_enabled, name, scope, id, thread_id, now, flags, |
| + bind_id, arg1_name, std::move(arg1_val), arg2_name, arg2_val); |
| +} |
| + |
| +template <class ARG1_TYPE, class ARG2_CONVERTABLE_TYPE> |
| +static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| + char phase, |
| + const unsigned char* category_group_enabled, |
| + const char* name, |
| + const char* scope, |
| + 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, |
| + scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) { |
| + int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| + base::TimeTicks now = base::TimeTicks::Now(); |
| + return AddTraceEventWithThreadIdAndTimestamp( |
| + phase, category_group_enabled, name, scope, id, thread_id, now, flags, |
| + bind_id, arg1_name, arg1_val, arg2_name, std::move(arg2_val)); |
| +} |
| + |
| +template <class ARG1_CONVERTABLE_TYPE, class ARG2_CONVERTABLE_TYPE> |
| +static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| + char phase, |
| + const unsigned char* category_group_enabled, |
| + const char* name, |
| + const char* scope, |
| + unsigned long long id, |
| + unsigned int flags, |
| + unsigned long long bind_id, |
| + const char* arg1_name, |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val, |
| + const char* arg2_name, |
| + scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) { |
| + int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| + base::TimeTicks now = base::TimeTicks::Now(); |
| + return AddTraceEventWithThreadIdAndTimestamp( |
| + phase, category_group_enabled, name, scope, id, thread_id, now, flags, |
| + bind_id, arg1_name, std::move(arg1_val), arg2_name, std::move(arg2_val)); |
| +} |
| + |
| template<class ARG1_TYPE, class ARG2_TYPE> |
| static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| char phase, |
| @@ -850,15 +923,16 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( |
| bind_id, arg1_name, arg1_val, arg2_name, arg2_val); |
| } |
| +template <class ARG1_CONVERTABLE_TYPE> |
| static inline void AddMetadataEvent( |
| const unsigned char* category_group_enabled, |
| const char* event_name, |
| const char* arg_name, |
| - scoped_refptr<base::trace_event::ConvertableToTraceFormat> arg_value) { |
| + scoped_ptr<ARG1_CONVERTABLE_TYPE> arg_value) { |
| const char* arg_names[1] = {arg_name}; |
| - scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| - convertable_values[1] = {arg_value}; |
| unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE}; |
| + scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| + convertable_values[1] = {std::move(arg_value)}; |
| base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( |
| category_group_enabled, event_name, |
| 1, // num_args |