Index: runtime/include/dart_tools_api.h |
diff --git a/runtime/include/dart_tools_api.h b/runtime/include/dart_tools_api.h |
index 8b9b0137135e7318c2be7d80ea4e2de6acd9ff37..c880e17c0872c813493ddfd48b1dba9a667861ee 100644 |
--- a/runtime/include/dart_tools_api.h |
+++ b/runtime/include/dart_tools_api.h |
@@ -902,37 +902,26 @@ DART_EXPORT int64_t Dart_TimelineGetMicros(); |
#define DART_TIMELINE_STREAM_GC (1 << 5) |
/** Timeline stream for isolate events */ |
#define DART_TIMELINE_STREAM_ISOLATE (1 << 6) |
- |
/** Timeline stream for VM events */ |
#define DART_TIMELINE_STREAM_VM (1 << 7) |
-/** Enable all timeline stream recording for an isolate */ |
+/** All timeline streams */ |
#define DART_TIMELINE_STREAM_ALL (DART_TIMELINE_STREAM_API | \ |
DART_TIMELINE_STREAM_COMPILER | \ |
DART_TIMELINE_STREAM_DART | \ |
DART_TIMELINE_STREAM_DEBUGGER | \ |
DART_TIMELINE_STREAM_EMBEDDER | \ |
DART_TIMELINE_STREAM_GC | \ |
- DART_TIMELINE_STREAM_ISOLATE) |
+ DART_TIMELINE_STREAM_ISOLATE | \ |
+ DART_TIMELINE_STREAM_VM) |
/** Disable all timeline stream recording */ |
#define DART_TIMELINE_STREAM_DISABLE 0 |
-/** |
- * Start recording timeline events for the current isolate. |
- * |
- * \param stream_mask A bitmask of streams that should be recorded. |
- * |
- * NOTE: Calling with 0 disables recording of all streams. |
- */ |
-DART_EXPORT void Dart_TimelineSetRecordedStreams(int64_t stream_mask); |
- |
/** |
* Start recording timeline events for the entire VM (including all isolates). |
* |
- * NOTE: When enabled, the global flag, will override the per-isolate flag. |
- * |
* \param stream_mask A bitmask of streams that should be recorded. |
* |
* NOTE: Calling with 0 disables recording of all streams. |
@@ -977,20 +966,6 @@ typedef void (*Dart_StreamConsumer)( |
intptr_t buffer_length, |
void* stream_callback_data); |
- |
-/** |
- * Get the timeline for the current isolate in trace-event format |
- * |
- * \param consumer A Dart_StreamConsumer. |
- * \param user_data User data passed into consumer. |
- * |
- * NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M |
- * |
- * \return True if a stream was output. |
- */ |
-DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer, |
- void* user_data); |
- |
/** |
* Get the timeline for entire VM (including all isolates). |
* |
@@ -1007,8 +982,34 @@ DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer, |
DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, |
void* user_data); |
+typedef enum { |
+ Dart_Timeline_Event_Begin, // Phase = 'B'. |
+ Dart_Timeline_Event_End, // Phase = 'E'. |
+ Dart_Timeline_Event_Instant, // Phase = 'i'. |
+ Dart_Timeline_Event_Duration, // Phase = 'X'. |
+} Dart_Timeline_Event_Type; |
+ |
+/** |
+ * Add a timeline event to the embedder stream. |
+ * |
+ * \param label The name of the evnet. |
+ * \param timestamp0 The first timestamp of the event. |
+ * \param timestamp1_or_async_id The second timestamp of the event or |
+ * the async id. |
+ * \param argument_count The number of argument names and values. |
+ * \param argument_names An array of names of the arguments. |
+ * \param argument_values An array of values of the arguments. |
+ */ |
+DART_EXPORT void Dart_TimelineEvent(const char* label, |
+ int64_t timestamp0, |
+ int64_t timestamp1_or_async_id, |
+ Dart_Timeline_Event_Type type, |
+ intptr_t argument_count, |
+ const char** argument_names, |
+ const char** argument_values); |
+ |
/** |
- * Add a duration timeline event to the embedder stream for the current isolate. |
+ * Add a duration timeline event to the embedder stream. |
* |
* \param label The name of the event. |
* \param start_micros The start of the duration (in microseconds) |
@@ -1016,112 +1017,81 @@ DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, |
* |
* NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
*/ |
-DART_EXPORT Dart_Handle Dart_TimelineDuration(const char* label, |
- int64_t start_micros, |
- int64_t end_micros); |
+DART_EXPORT void Dart_TimelineDuration(const char* label, |
+ int64_t start_micros, |
+ int64_t end_micros); |
/** |
- * Add an instant timeline event to the embedder stream for the current isolate. |
+ * Add an instant timeline event to the embedder stream. |
* |
* \param label The name of event. |
* |
* NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
*/ |
-DART_EXPORT Dart_Handle Dart_TimelineInstant(const char* label); |
+DART_EXPORT void Dart_TimelineInstant(const char* label); |
/** |
- * Adds an asynchronous begin timeline event to the embedder stream for the |
- * current isolate. |
+ * Adds an asynchronous begin timeline event to the embedder stream. |
* |
* \param label The name of event. |
- * |
- * \return Returns an asynchronous id that must be passed to |
- * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. If the asynchronous |
- * id is less than 0 the event was not added to the timeline and subsequent |
- * calls to Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd will become |
- * no-ops. |
+ * \param async_id Pointer that receives the asynchronous id for this async |
+ * operation. If it is less than 0 the event was not added to the timeline. |
* |
* NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
*/ |
-DART_EXPORT Dart_Handle Dart_TimelineAsyncBegin(const char* label, |
- int64_t* async_id); |
+DART_EXPORT void Dart_TimelineAsyncBegin(const char* label, |
+ int64_t* async_id); |
/** |
- * Adds an asynchronous instant timeline event to the embedder stream for the |
- * current isolate. |
+ * Adds an asynchronous instant timeline event to the embedder stream. |
* |
* \param label The name of event. |
- * |
- * \return Returns an asynchronous id that must be passed to |
- * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. |
+ * \param async_id the asynchronous id received by Dart_TimelineAsyncBegin. |
* |
* NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
*/ |
-DART_EXPORT Dart_Handle Dart_TimelineAsyncInstant(const char* label, |
- int64_t async_id); |
+DART_EXPORT void Dart_TimelineAsyncInstant(const char* label, |
+ int64_t async_id); |
/** |
- * Adds an asynchronous end timeline event to the embedder stream for the |
- * current isolate. |
+ * Adds an asynchronous end timeline event to the embedder stream. |
* |
* \param label The name of event. |
- * |
- * \return Returns an asynchronous id that must be passed to |
- * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. |
+ * \param async_id the asynchronous id received by Dart_TimelineAsyncBegin. |
* |
* NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
*/ |
-DART_EXPORT Dart_Handle Dart_TimelineAsyncEnd(const char* label, |
- int64_t async_id); |
+DART_EXPORT void Dart_TimelineAsyncEnd(const char* label, |
+ int64_t async_id); |
/** |
- * Called by the VM to let the embedder know when to start recording into their |
- * own timeline implementation. Can be called from any thread. |
+ * Called by the VM to let the embedder know when to start recording into the |
+ * timeline. Can be called from any thread. |
*/ |
typedef void (*Dart_EmbedderTimelineStartRecording)(); |
/** |
- * Called by the VM to let the embedder know when to stop recording into their |
- * own timeline implementation. Can be called from any thread. |
+ * Called by the VM to let the embedder know when to stop recording into the |
+ * timeline. Can be called from any thread. |
*/ |
typedef void (*Dart_EmbedderTimelineStopRecording)(); |
/** |
- * Called by the VM to request data from the embedder's private timeline |
- * implementation. Can be called from any thread and must complete |
- * synchronously. |
- * |
- * \param stream_consumer The embedder must only call the stream_consumer with |
- * the Dart_StreamConsumer_kData state. See Dart_StreamConsumer above. |
- * \param user_data |
- * |
- * \return Returns true on success. |
- * |
- */ |
-typedef bool (*Dart_EmbedderTimelineGetTimeline)( |
- Dart_StreamConsumer stream_consumer, |
- void* user_data); |
- |
- |
-/** |
* Sets the embedder timeline callbacks. These callbacks are used by the VM |
- * to notify the embedder of timeline recording state changes and to request |
- * data from the embedder. |
+ * to notify the embedder of timeline recording state changes. |
* |
* \param start_recording See Dart_EmbedderTimelineStartRecording. |
* \param stop_recording See Dart_EmbedderTimelineStopRecording. |
- * \param get_timeline See Dart_EmbedderTimelineGetTimeline. |
* |
* NOTE: To avoid races, this should be called before Dart_Initialize. |
*/ |
DART_EXPORT void Dart_SetEmbedderTimelineCallbacks( |
Dart_EmbedderTimelineStartRecording start_recording, |
- Dart_EmbedderTimelineStopRecording stop_recording, |
- Dart_EmbedderTimelineGetTimeline get_timeline); |
+ Dart_EmbedderTimelineStopRecording stop_recording); |
#endif // INCLUDE_DART_TOOLS_API_H_ |