 Chromium Code Reviews
 Chromium Code Reviews Issue 1221873002:
  Change sampler code events phase from instant to meta.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1221873002:
  Change sampler code events phase from instant to meta.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: base/trace_event/trace_event.h | 
| diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h | 
| index ed49fe4656f9326b232f973e69936ad3f31f4af9..a7bdeb917598145849d04f498922ad14e9082b9c 100644 | 
| --- a/base/trace_event/trace_event.h | 
| +++ b/base/trace_event/trace_event.h | 
| @@ -7,7 +7,7 @@ | 
| // This header file defines implementation details of how the trace macros in | 
| // trace_event_common.h collect and store trace events. Anything not | 
| -// implementation-specific should go in trace_macros_common.h instead of here. | 
| +// implementation-specific should go in trace_event_common.h instead of here. | 
| #include <stddef.h> | 
| #include <stdint.h> | 
| @@ -187,9 +187,14 @@ | 
| // Adds a metadata event to the trace log. The |AppendValueAsTraceFormat| method | 
| // on the convertable value will be called at flush time. | 
| 
fmeawad
2016/02/16 21:47:37
After a second thought I think it is better to eli
 
alph
2016/02/16 23:19:28
ok. done
 | 
| // TRACE_EVENT_API_ADD_METADATA_EVENT( | 
| -// const char* event_name, | 
| -// const char* arg_name, | 
| -// scoped_refptr<ConvertableToTraceFormat> arg_value) | 
| +// const char* event_name, | 
| +// const char* arg_name, | 
| +// scoped_refptr<ConvertableToTraceFormat> arg_value) | 
| +// TRACE_EVENT_API_ADD_METADATA_EVENT( | 
| +// const unsigned char* category_group_enabled, | 
| +// const char* event_name, | 
| +// const char* arg_name, | 
| +// scoped_refptr<ConvertableToTraceFormat> arg_value) | 
| #define TRACE_EVENT_API_ADD_METADATA_EVENT \ | 
| trace_event_internal::AddMetadataEvent | 
| @@ -347,8 +352,20 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ | 
| } \ | 
| } while (0) | 
| -// Implementation detail: internal macro to enter and leave a context based on | 
| -// the current scope. | 
| +// Implementation detail: internal macro to create static category and add | 
| +// metadata event if the category is enabled. | 
| +#define INTERNAL_TRACE_EVENT_METADATA_ADD(category_group, name, ...) \ | 
| + do { \ | 
| + INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ | 
| + if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ | 
| + TRACE_EVENT_API_ADD_METADATA_EVENT( \ | 
| + INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ | 
| + ##__VA_ARGS__); \ | 
| + } \ | 
| + } while (0) | 
| + | 
| +// Implementation detail: internal macro to enter and leave a | 
| +// context based on the current scope. | 
| #define INTERNAL_TRACE_EVENT_SCOPED_CONTEXT(category_group, name, context) \ | 
| struct INTERNAL_TRACE_EVENT_UID(ScopedContext) { \ | 
| public: \ | 
| @@ -853,6 +870,39 @@ static inline void AddMetadataEvent( | 
| convertable_values, TRACE_EVENT_FLAG_NONE); | 
| } | 
| +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) { | 
| + 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}; | 
| + base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( | 
| + category_group_enabled, event_name, | 
| + 1, // num_args | 
| + arg_names, arg_types, | 
| + nullptr, // arg_values | 
| + convertable_values, TRACE_EVENT_FLAG_NONE); | 
| +} | 
| + | 
| +template <class ARG1_TYPE> | 
| +static void AddMetadataEvent(const unsigned char* category_group_enabled, | 
| + const char* event_name, | 
| + const char* arg_name, | 
| + const ARG1_TYPE& arg_val) { | 
| + const int num_args = 1; | 
| + const char* arg_names[1] = {arg_name}; | 
| + unsigned char arg_types[1]; | 
| + unsigned long long arg_values[1]; | 
| + SetTraceValue(arg_val, &arg_types[0], &arg_values[0]); | 
| + | 
| + base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( | 
| + category_group_enabled, event_name, num_args, arg_names, arg_types, | 
| + arg_values, nullptr, TRACE_EVENT_FLAG_NONE); | 
| +} | 
| + | 
| template <class ARG1_TYPE> | 
| static void AddMetadataEvent(const char* event_name, | 
| const char* arg_name, |