Index: base/trace_event/trace_event.h |
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h |
index e0249f5539a181175127ba4df1cc7fc489328f44..57a6850a957e2deba5e50e57ea499a4ab8c8bbce 100644 |
--- a/base/trace_event/trace_event.h |
+++ b/base/trace_event/trace_event.h |
@@ -234,6 +234,19 @@ |
INTERNAL_TRACE_EVENT_ADD_SCOPED( \ |
category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) |
+// Records a pair of begin and end events called "name" for the current scope |
+// with 1 or 2 associated arguments. These events are associated with id. If the |
+// category is not enabled, this does nothing. |
+// - category and name strings must have application lifetime (statics or |
+// literals). They may not include " chars. |
+#define TRACE_EVENT_ID1(category_group, name, id, arg1_name, arg1_val) \ |
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_ID( \ |
+ category_group, name, id, arg1_name, arg1_val) |
Sami
2015/04/29 15:01:51
It's not clear what |id| refers to here. Does it n
Dan Beam
2015/04/30 04:40:13
yes
|
+#define TRACE_EVENT_ID2( \ |
+ category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \ |
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_ID( \ |
+ category_group, name, id, 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. |
#define TRACE_EVENT_WITH_MEMORY_TAG2( \ |
@@ -1009,6 +1022,26 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ |
INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \ |
} |
+// 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_WITH_ID(category_group, name, id, ...) \ |
+ 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 char trace_event_flags = TRACE_EVENT_FLAG_HAS_ID; \ |
+ trace_event_internal::TraceID trace_event_trace_id( \ |
+ 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_trace_id.data(), trace_event_flags, \ |
+ ##__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, \ |