| Index: base/debug/trace_event.h
|
| diff --git a/base/debug/trace_event.h b/base/debug/trace_event.h
|
| index f9dc1c94d6d65b885772a4b1bf3b16005c58c2e9..db78f74414e0e667d8cea2cf1c40eb257668806a 100644
|
| --- a/base/debug/trace_event.h
|
| +++ b/base/debug/trace_event.h
|
| @@ -510,7 +510,9 @@
|
| value1_name, static_cast<int>(value1_val), \
|
| value2_name, static_cast<int>(value2_val))
|
|
|
| -
|
| +// ASYNC_STEP_* APIs should be only used by legacy code. New code should
|
| +// consider using NESTABLE_ASYNC_* APIs to describe substeps within an async
|
| +// event.
|
| // Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
| // associated arguments. If the category is not enabled, then this
|
| // does nothing.
|
| @@ -634,6 +636,45 @@
|
| static_cast<int>(base::PlatformThread::CurrentId()), \
|
| timestamp, TRACE_EVENT_FLAG_NONE)
|
|
|
| +// NESTABLE_ASYNC_* APIs are used to describe an async operation, which can
|
| +// be nested within a NESTABLE_ASYNC event and/or have inner NESTABLE_ASYNC
|
| +// events.
|
| +// - category and name strings must have application lifetime (statics or
|
| +// literals). They may not include " chars.
|
| +// - |id| is used to match the NESTABLE_ASYNC_BEGIN event with the
|
| +// NESTABLE_ASYNC_END event. 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.
|
| +//
|
| +// Unmatched NESTABLE_ASYNC_END event will be parsed as an instant event,
|
| +// and unmatched NESTABLE_ASYNC_BEGIN event will be parsed as an event that
|
| +// ends at the last NESTABLE_ASYNC_END event of that |id|.
|
| +
|
| +// Records a single NESTABLE_ASYNC_BEGIN event called "name" immediately, with 2
|
| +// associated arguments. If the category is not enabled, then this does nothing.
|
| +#define TRACE_EVENT_NESTABLE_ASYNC_BEGIN2(category_group, name, id, arg1_name, \
|
| + arg1_val, arg2_name, arg2_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, \
|
| + category_group, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
| + arg2_name, arg2_val)
|
| +// Records a single NESTABLE_ASYNC_END event called "name" immediately, with 2
|
| +// associated arguments. If the category is not enabled, then this does nothing.
|
| +#define TRACE_EVENT_NESTABLE_ASYNC_END2(category_group, name, id, arg1_name, \
|
| + arg1_val, arg2_name, arg2_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, \
|
| + category_group, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
| + arg2_name, arg2_val)
|
| +// Records a single NESTABLE_ASYNC_INSTANT event called "name" immediately,
|
| +// with 2 associated arguments. If the category is not enabled, then this
|
| +// does nothing.
|
| +#define TRACE_EVENT_NESTABLE_ASYNC_INSTANT2(category_group, name, id, \
|
| + arg1_name, arg1_val, arg2_name, arg2_val) \
|
| + INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT, \
|
| + category_group, name, id, TRACE_EVENT_FLAG_NONE, 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.
|
| @@ -963,6 +1004,9 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
|
| #define TRACE_EVENT_PHASE_ASYNC_STEP_INTO ('T')
|
| #define TRACE_EVENT_PHASE_ASYNC_STEP_PAST ('p')
|
| #define TRACE_EVENT_PHASE_ASYNC_END ('F')
|
| +#define TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN ('b')
|
| +#define TRACE_EVENT_PHASE_NESTABLE_ASYNC_END ('e')
|
| +#define TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT ('n')
|
| #define TRACE_EVENT_PHASE_FLOW_BEGIN ('s')
|
| #define TRACE_EVENT_PHASE_FLOW_STEP ('t')
|
| #define TRACE_EVENT_PHASE_FLOW_END ('f')
|
|
|