Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: base/trace_event/trace_event.h

Issue 1239593002: Implement a new flow event API that allows binding flow events and regular events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove a redundant macro. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/trace_event/trace_event_impl.h » ('j') | ipc/ipc_channel_reader.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/trace_event.h
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h
index 07018b93e0799c1e9134d694ae170961f5303919..edbbb8abf512b7e4809f0fa76f11738a35300385 100644
--- a/base/trace_event/trace_event.h
+++ b/base/trace_event/trace_event.h
@@ -228,11 +228,19 @@
#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_EVENT1_WITH_FLOW(category_group, name, arg1_name, arg1_val) \
dsinclair 2015/07/14 13:52:10 These should be TRACE_EVENT_WITH_FLOW1 We put the
+ INTERNAL_TRACE_MEMORY(category_group, name) \
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, 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_EVENT2_WITH_FLOW( \
dsinclair 2015/07/14 13:52:10 Why no TRACE_EVENT_WITH_FLOW0?
+ category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) \
+ INTERNAL_TRACE_MEMORY(category_group, name) \
+ INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW( \
+ category_group, name, 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.
@@ -852,6 +860,9 @@
#define TRACE_EVENT_FLOW_END0(category_group, name, id) \
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
category_group, name, id, TRACE_EVENT_FLAG_NONE)
+#define APPEND_TRACE_EVENT_FLOW_END0(category_group, name, id) \
+ appendFlowEvent(trace_event_internal::constructFlowEvent(TRACE_EVENT_PHASE_FLOW_END, \
+ category_group, name, id, TRACE_EVENT_FLAG_NONE))
#define TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0(category_group, name, id) \
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
category_group, name, id, TRACE_EVENT_FLAG_BIND_TO_ENCLOSING)
@@ -1076,6 +1087,22 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, h); \
}
+#define INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, ...) \
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \
+ trace_event_internal::ScopedTracer INTERNAL_TRACE_EVENT_UID(tracer); \
+ base::trace_event::TraceEventHandle h = {0, 0, 0}; \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
+ 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); \
+ } \
+ base::trace_event::TraceEventHandleWrapper INTERNAL_TRACE_EVENT_UID(wrapper) (h); \
+ INTERNAL_TRACE_EVENT_UID(wrapper)
+
// 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, \
@@ -1093,6 +1120,21 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
} \
} while (0)
+#define INTERNAL_TRACE_EVENT_ADD_WITH_ID_RETURN(phase, category_group, name, id, \
+ flags, ...) \
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
+ unsigned char trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \
+ trace_event_internal::TraceID trace_event_trace_id( \
+ id, &trace_event_flags); \
+ return trace_event_internal::AddTraceEvent( \
+ phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
+ name, trace_event_trace_id.data(), trace_event_flags, \
+ ##__VA_ARGS__); \
+ } \
+ base::trace_event::TraceEventHandle h = {0, 0, 0}; \
+ return h;
+
// 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, \
@@ -1174,6 +1216,10 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
#define TRACE_EVENT_SCOPE_NAME_PROCESS ('p')
#define TRACE_EVENT_SCOPE_NAME_THREAD ('t')
+// Type values for identifying flow event direction.
+#define FLOW_IN (static_cast<unsigned char>(0))
+#define FLOW_OUT (static_cast<unsigned char>(1))
dsinclair 2015/07/14 13:52:10 These should be TRACE_EVENT_FLAG_FLOW_IN/OUT. fmea
fmeawad 2015/07/14 17:32:57 The CL has landed.
+
namespace trace_event_internal {
// Specify these values when the corresponding argument of AddTraceEvent is not
@@ -1600,6 +1646,15 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent(
arg2_name, arg2_val);
}
+static inline base::trace_event::TraceEventHandle constructFlowEvent(
+ char phase,
+ const char *category_group,
+ const char *name,
+ unsigned long long id,
+ unsigned char flags) {
+ INTERNAL_TRACE_EVENT_ADD_WITH_ID_RETURN(phase, category_group, name, id, flags);
+}
+
// Used by TRACE_EVENTx macros. Do not use directly.
class TRACE_EVENT_API_CLASS_EXPORT ScopedTracer {
public:
« no previous file with comments | « no previous file | base/trace_event/trace_event_impl.h » ('j') | ipc/ipc_channel_reader.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698