| Index: Source/platform/TraceEvent.h
|
| diff --git a/Source/platform/TraceEvent.h b/Source/platform/TraceEvent.h
|
| index 6bddc14b77ff51bdfbaee86e23300e302dd6a688..a416fe542cbe776f4f7858e9d9551770a7c971a4 100644
|
| --- a/Source/platform/TraceEvent.h
|
| +++ b/Source/platform/TraceEvent.h
|
| @@ -451,6 +451,55 @@
|
| category, name, id, TRACE_EVENT_FLAG_COPY, \
|
| arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
| +
|
| +// Records a single FLOW_BEGIN event called "name" immediately, with 0, 1 or 2
|
| +// associated arguments. If the category is not enabled, then this
|
| +// does nothing.
|
| +// - category and name strings must have application lifetime (statics or
|
| +// literals). They may not include " chars.
|
| +// - |id| is used to match the FLOW_BEGIN event with the FLOW_END event. FLOW
|
| +// events are considered to match if their category_group, name and id values
|
| +// all match. |id| must either be a pointer or an integer value up to 64 bits.
|
| +// If it's a pointer, the bits will be xored with a hash of the process ID so
|
| +// that the same pointer on two different processes will not collide.
|
| +// FLOW events are different from ASYNC events in how they are drawn by the
|
| +// tracing UI. A FLOW defines asynchronous data flow, such as posting a task
|
| +// (FLOW_BEGIN) and later executing that task (FLOW_END). Expect FLOWs to be
|
| +// drawn as lines or arrows from FLOW_BEGIN scopes to FLOW_END scopes. Similar
|
| +// to ASYNC, a FLOW can consist of multiple phases. The first phase is defined
|
| +// by the FLOW_BEGIN calls. Additional phases can be defined using the FLOW_STEP
|
| +// macros. When the operation completes, call FLOW_END. An async operation can
|
| +// span threads and processes, but all events in that operation must use the
|
| +// same |name| and |id|. Each event can have its own args.
|
| +
|
| +#define TRACE_EVENT_FLOW_BEGIN0(category, name, id) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE)
|
| +#define TRACE_EVENT_FLOW_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
| +#define TRACE_EVENT_FLOW_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
| + arg2_name, arg2_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE, \
|
| + arg1_name, arg1_val, arg2_name, arg2_val)
|
| +
|
| +
|
| +// Records a single ASYNC_END event for "name" immediately. If the category
|
| +// is not enabled, then this does nothing.
|
| +#define TRACE_EVENT_FLOW_END0(category, name, id) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE)
|
| +#define TRACE_EVENT_FLOW_END1(category, name, id, arg1_name, arg1_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
| +#define TRACE_EVENT_FLOW_END2(category, name, id, arg1_name, arg1_val, \
|
| + arg2_name, arg2_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
| + category, name, id, TRACE_EVENT_FLAG_NONE, \
|
| + arg1_name, arg1_val, arg2_name, arg2_val)
|
| +
|
| +
|
| // Creates a scope of a sampling state with the given category and name (both must
|
| // be constant strings). These states are intended for a sampling profiler.
|
| // Implementation note: we store category and name together because we don't
|
| @@ -648,6 +697,8 @@
|
| #define TRACE_EVENT_PHASE_CREATE_OBJECT ('N')
|
| #define TRACE_EVENT_PHASE_SNAPSHOT_OBJECT ('O')
|
| #define TRACE_EVENT_PHASE_DELETE_OBJECT ('D')
|
| +#define TRACE_EVENT_PHASE_FLOW_BEGIN ('s')
|
| +#define TRACE_EVENT_PHASE_FLOW_END ('f')
|
|
|
| // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT.
|
| #define TRACE_EVENT_FLAG_NONE (static_cast<unsigned char>(0))
|
|
|