| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef INCLUDE_DART_TOOLS_API_H_ | 5 #ifndef INCLUDE_DART_TOOLS_API_H_ |
| 6 #define INCLUDE_DART_TOOLS_API_H_ | 6 #define INCLUDE_DART_TOOLS_API_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 | 9 |
| 10 /** \mainpage Dart Tools Embedding API Reference | 10 /** \mainpage Dart Tools Embedding API Reference |
| (...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 /** Timeline stream for Dart provided events */ | 895 /** Timeline stream for Dart provided events */ |
| 896 #define DART_TIMELINE_STREAM_DART (1 << 2) | 896 #define DART_TIMELINE_STREAM_DART (1 << 2) |
| 897 /** Timeline stream for debugger provided events */ | 897 /** Timeline stream for debugger provided events */ |
| 898 #define DART_TIMELINE_STREAM_DEBUGGER (1 << 3) | 898 #define DART_TIMELINE_STREAM_DEBUGGER (1 << 3) |
| 899 /** Timeline stream for embedder provided events */ | 899 /** Timeline stream for embedder provided events */ |
| 900 #define DART_TIMELINE_STREAM_EMBEDDER (1 << 4) | 900 #define DART_TIMELINE_STREAM_EMBEDDER (1 << 4) |
| 901 /** Timeline stream for GC events */ | 901 /** Timeline stream for GC events */ |
| 902 #define DART_TIMELINE_STREAM_GC (1 << 5) | 902 #define DART_TIMELINE_STREAM_GC (1 << 5) |
| 903 /** Timeline stream for isolate events */ | 903 /** Timeline stream for isolate events */ |
| 904 #define DART_TIMELINE_STREAM_ISOLATE (1 << 6) | 904 #define DART_TIMELINE_STREAM_ISOLATE (1 << 6) |
| 905 | |
| 906 /** Timeline stream for VM events */ | 905 /** Timeline stream for VM events */ |
| 907 #define DART_TIMELINE_STREAM_VM (1 << 7) | 906 #define DART_TIMELINE_STREAM_VM (1 << 7) |
| 908 | 907 |
| 909 /** Enable all timeline stream recording for an isolate */ | 908 /** All timeline streams */ |
| 910 #define DART_TIMELINE_STREAM_ALL (DART_TIMELINE_STREAM_API | \ | 909 #define DART_TIMELINE_STREAM_ALL (DART_TIMELINE_STREAM_API | \ |
| 911 DART_TIMELINE_STREAM_COMPILER | \ | 910 DART_TIMELINE_STREAM_COMPILER | \ |
| 912 DART_TIMELINE_STREAM_DART | \ | 911 DART_TIMELINE_STREAM_DART | \ |
| 913 DART_TIMELINE_STREAM_DEBUGGER | \ | 912 DART_TIMELINE_STREAM_DEBUGGER | \ |
| 914 DART_TIMELINE_STREAM_EMBEDDER | \ | 913 DART_TIMELINE_STREAM_EMBEDDER | \ |
| 915 DART_TIMELINE_STREAM_GC | \ | 914 DART_TIMELINE_STREAM_GC | \ |
| 916 DART_TIMELINE_STREAM_ISOLATE) | 915 DART_TIMELINE_STREAM_ISOLATE | \ |
| 916 DART_TIMELINE_STREAM_VM) |
| 917 | 917 |
| 918 /** Disable all timeline stream recording */ | 918 /** Disable all timeline stream recording */ |
| 919 #define DART_TIMELINE_STREAM_DISABLE 0 | 919 #define DART_TIMELINE_STREAM_DISABLE 0 |
| 920 | 920 |
| 921 /** | |
| 922 * Start recording timeline events for the current isolate. | |
| 923 * | |
| 924 * \param stream_mask A bitmask of streams that should be recorded. | |
| 925 * | |
| 926 * NOTE: Calling with 0 disables recording of all streams. | |
| 927 */ | |
| 928 DART_EXPORT void Dart_TimelineSetRecordedStreams(int64_t stream_mask); | |
| 929 | |
| 930 | 921 |
| 931 /** | 922 /** |
| 932 * Start recording timeline events for the entire VM (including all isolates). | 923 * Start recording timeline events for the entire VM (including all isolates). |
| 933 * | 924 * |
| 934 * NOTE: When enabled, the global flag, will override the per-isolate flag. | |
| 935 * | |
| 936 * \param stream_mask A bitmask of streams that should be recorded. | 925 * \param stream_mask A bitmask of streams that should be recorded. |
| 937 * | 926 * |
| 938 * NOTE: Calling with 0 disables recording of all streams. | 927 * NOTE: Calling with 0 disables recording of all streams. |
| 939 */ | 928 */ |
| 940 DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask); | 929 DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask); |
| 941 | 930 |
| 942 | 931 |
| 943 typedef enum { | 932 typedef enum { |
| 944 /** Indicates a new stream is being output */ | 933 /** Indicates a new stream is being output */ |
| 945 Dart_StreamConsumer_kStart = 0, | 934 Dart_StreamConsumer_kStart = 0, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 970 * At the end of each stream state will be DART_STREAM_CONSUMER_STATE_FINISH | 959 * At the end of each stream state will be DART_STREAM_CONSUMER_STATE_FINISH |
| 971 * and buffer will be NULL. | 960 * and buffer will be NULL. |
| 972 */ | 961 */ |
| 973 typedef void (*Dart_StreamConsumer)( | 962 typedef void (*Dart_StreamConsumer)( |
| 974 Dart_StreamConsumer_State state, | 963 Dart_StreamConsumer_State state, |
| 975 const char* stream_name, | 964 const char* stream_name, |
| 976 const uint8_t* buffer, | 965 const uint8_t* buffer, |
| 977 intptr_t buffer_length, | 966 intptr_t buffer_length, |
| 978 void* stream_callback_data); | 967 void* stream_callback_data); |
| 979 | 968 |
| 980 | |
| 981 /** | |
| 982 * Get the timeline for the current isolate in trace-event format | |
| 983 * | |
| 984 * \param consumer A Dart_StreamConsumer. | |
| 985 * \param user_data User data passed into consumer. | |
| 986 * | |
| 987 * NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M | |
| 988 * | |
| 989 * \return True if a stream was output. | |
| 990 */ | |
| 991 DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer, | |
| 992 void* user_data); | |
| 993 | |
| 994 /** | 969 /** |
| 995 * Get the timeline for entire VM (including all isolates). | 970 * Get the timeline for entire VM (including all isolates). |
| 996 * | 971 * |
| 997 * NOTE: The timeline retrieved from this API call may not include the most | 972 * NOTE: The timeline retrieved from this API call may not include the most |
| 998 * recent events. | 973 * recent events. |
| 999 * | 974 * |
| 1000 * \param consumer A Dart_StreamConsumer. | 975 * \param consumer A Dart_StreamConsumer. |
| 1001 * \param user_data User data passed into consumer. | 976 * \param user_data User data passed into consumer. |
| 1002 * | 977 * |
| 1003 * NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M | 978 * NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M |
| 1004 * | 979 * |
| 1005 * \return True if a stream was output. | 980 * \return True if a stream was output. |
| 1006 */ | 981 */ |
| 1007 DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, | 982 DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, |
| 1008 void* user_data); | 983 void* user_data); |
| 1009 | 984 |
| 985 typedef enum { |
| 986 Dart_Timeline_Event_Begin, |
| 987 Dart_Timeline_Event_End, |
| 988 Dart_Timeline_Event_Instant, |
| 989 Dart_Timeline_Event_Duration, |
| 990 } Dart_Timeline_Event_Type; |
| 991 |
| 1010 /** | 992 /** |
| 1011 * Add a duration timeline event to the embedder stream for the current isolate. | 993 * Add a timeline event to the embedder stream. |
| 994 * |
| 995 * \param label The name of the evnet. |
| 996 * \param timestamp0 The first timestamp of the event. |
| 997 * \param timestamp1_or_async_id The second timestamp of the event or |
| 998 * the async id. |
| 999 * \param argument_count The number of argument names and values. |
| 1000 * \param argument_names An array of names of the arguments. |
| 1001 * \param argument_values An array of values of the arguments. |
| 1002 */ |
| 1003 DART_EXPORT void Dart_TimelineEvent(const char* label, |
| 1004 int64_t timestamp0, |
| 1005 int64_t timestamp1_or_async_id, |
| 1006 Dart_Timeline_Event_Type type, |
| 1007 intptr_t argument_count, |
| 1008 const char** argument_names, |
| 1009 const char** argument_values); |
| 1010 |
| 1011 /** |
| 1012 * Add a duration timeline event to the embedder stream. |
| 1012 * | 1013 * |
| 1013 * \param label The name of the event. | 1014 * \param label The name of the event. |
| 1014 * \param start_micros The start of the duration (in microseconds) | 1015 * \param start_micros The start of the duration (in microseconds) |
| 1015 * \param end_micros The end of the duration (in microseconds) | 1016 * \param end_micros The end of the duration (in microseconds) |
| 1016 * | 1017 * |
| 1017 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. | 1018 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
| 1018 */ | 1019 */ |
| 1019 DART_EXPORT Dart_Handle Dart_TimelineDuration(const char* label, | 1020 DART_EXPORT void Dart_TimelineDuration(const char* label, |
| 1020 int64_t start_micros, | 1021 int64_t start_micros, |
| 1021 int64_t end_micros); | 1022 int64_t end_micros); |
| 1022 | 1023 |
| 1023 | 1024 |
| 1024 /** | 1025 /** |
| 1025 * Add an instant timeline event to the embedder stream for the current isolate. | 1026 * Add an instant timeline event to the embedder stream. |
| 1026 * | 1027 * |
| 1027 * \param label The name of event. | 1028 * \param label The name of event. |
| 1028 * | 1029 * |
| 1029 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. | 1030 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
| 1030 */ | 1031 */ |
| 1031 DART_EXPORT Dart_Handle Dart_TimelineInstant(const char* label); | 1032 DART_EXPORT void Dart_TimelineInstant(const char* label); |
| 1032 | 1033 |
| 1033 | 1034 |
| 1034 /** | 1035 /** |
| 1035 * Adds an asynchronous begin timeline event to the embedder stream for the | 1036 * Adds an asynchronous begin timeline event to the embedder stream. |
| 1036 * current isolate. | |
| 1037 * | 1037 * |
| 1038 * \param label The name of event. | 1038 * \param label The name of event. |
| 1039 * | 1039 * \param async_id Pointer that receives the asynchronous id for this async |
| 1040 * \return Returns an asynchronous id that must be passed to | 1040 * operation. If it is less than 0 the event was not added to the timeline. |
| 1041 * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. If the asynchronous | |
| 1042 * id is less than 0 the event was not added to the timeline and subsequent | |
| 1043 * calls to Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd will become | |
| 1044 * no-ops. | |
| 1045 * | 1041 * |
| 1046 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. | 1042 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
| 1047 */ | 1043 */ |
| 1048 DART_EXPORT Dart_Handle Dart_TimelineAsyncBegin(const char* label, | 1044 DART_EXPORT void Dart_TimelineAsyncBegin(const char* label, |
| 1049 int64_t* async_id); | 1045 int64_t* async_id); |
| 1050 | 1046 |
| 1051 | 1047 |
| 1052 /** | 1048 /** |
| 1053 * Adds an asynchronous instant timeline event to the embedder stream for the | 1049 * Adds an asynchronous instant timeline event to the embedder stream. |
| 1054 * current isolate. | |
| 1055 * | 1050 * |
| 1056 * \param label The name of event. | 1051 * \param label The name of event. |
| 1057 * | 1052 * \param async_id the asynchronous id received by Dart_TimelineAsyncBegin. |
| 1058 * \return Returns an asynchronous id that must be passed to | |
| 1059 * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. | |
| 1060 * | 1053 * |
| 1061 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. | 1054 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
| 1062 */ | 1055 */ |
| 1063 DART_EXPORT Dart_Handle Dart_TimelineAsyncInstant(const char* label, | 1056 DART_EXPORT void Dart_TimelineAsyncInstant(const char* label, |
| 1064 int64_t async_id); | 1057 int64_t async_id); |
| 1065 | 1058 |
| 1066 | 1059 |
| 1067 /** | 1060 /** |
| 1068 * Adds an asynchronous end timeline event to the embedder stream for the | 1061 * Adds an asynchronous end timeline event to the embedder stream. |
| 1069 * current isolate. | |
| 1070 * | 1062 * |
| 1071 * \param label The name of event. | 1063 * \param label The name of event. |
| 1072 * | 1064 * \param async_id the asynchronous id received by Dart_TimelineAsyncBegin. |
| 1073 * \return Returns an asynchronous id that must be passed to | |
| 1074 * Dart_TimelineAsyncInstant and Dart_TimelineAsyncEnd. | |
| 1075 * | 1065 * |
| 1076 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. | 1066 * NOTE: All timestamps should be acquired from Dart_TimelineGetMicros. |
| 1077 */ | 1067 */ |
| 1078 DART_EXPORT Dart_Handle Dart_TimelineAsyncEnd(const char* label, | 1068 DART_EXPORT void Dart_TimelineAsyncEnd(const char* label, |
| 1079 int64_t async_id); | 1069 int64_t async_id); |
| 1080 | 1070 |
| 1081 | 1071 |
| 1082 /** | 1072 /** |
| 1083 * Called by the VM to let the embedder know when to start recording into their | 1073 * Called by the VM to let the embedder know when to start recording into the |
| 1084 * own timeline implementation. Can be called from any thread. | 1074 * timeline. Can be called from any thread. |
| 1085 */ | 1075 */ |
| 1086 typedef void (*Dart_EmbedderTimelineStartRecording)(); | 1076 typedef void (*Dart_EmbedderTimelineStartRecording)(); |
| 1087 | 1077 |
| 1088 /** | 1078 /** |
| 1089 * Called by the VM to let the embedder know when to stop recording into their | 1079 * Called by the VM to let the embedder know when to stop recording into the |
| 1090 * own timeline implementation. Can be called from any thread. | 1080 * timeline. Can be called from any thread. |
| 1091 */ | 1081 */ |
| 1092 typedef void (*Dart_EmbedderTimelineStopRecording)(); | 1082 typedef void (*Dart_EmbedderTimelineStopRecording)(); |
| 1093 | 1083 |
| 1094 /** | 1084 /** |
| 1095 * Called by the VM to request data from the embedder's private timeline | |
| 1096 * implementation. Can be called from any thread and must complete | |
| 1097 * synchronously. | |
| 1098 * | |
| 1099 * \param stream_consumer The embedder must only call the stream_consumer with | |
| 1100 * the Dart_StreamConsumer_kData state. See Dart_StreamConsumer above. | |
| 1101 * \param user_data | |
| 1102 * | |
| 1103 * \return Returns true on success. | |
| 1104 * | |
| 1105 */ | |
| 1106 typedef bool (*Dart_EmbedderTimelineGetTimeline)( | |
| 1107 Dart_StreamConsumer stream_consumer, | |
| 1108 void* user_data); | |
| 1109 | |
| 1110 | |
| 1111 /** | |
| 1112 * Sets the embedder timeline callbacks. These callbacks are used by the VM | 1085 * Sets the embedder timeline callbacks. These callbacks are used by the VM |
| 1113 * to notify the embedder of timeline recording state changes and to request | 1086 * to notify the embedder of timeline recording state changes. |
| 1114 * data from the embedder. | |
| 1115 * | 1087 * |
| 1116 * \param start_recording See Dart_EmbedderTimelineStartRecording. | 1088 * \param start_recording See Dart_EmbedderTimelineStartRecording. |
| 1117 * \param stop_recording See Dart_EmbedderTimelineStopRecording. | 1089 * \param stop_recording See Dart_EmbedderTimelineStopRecording. |
| 1118 * \param get_timeline See Dart_EmbedderTimelineGetTimeline. | |
| 1119 * | 1090 * |
| 1120 * NOTE: To avoid races, this should be called before Dart_Initialize. | 1091 * NOTE: To avoid races, this should be called before Dart_Initialize. |
| 1121 */ | 1092 */ |
| 1122 DART_EXPORT void Dart_SetEmbedderTimelineCallbacks( | 1093 DART_EXPORT void Dart_SetEmbedderTimelineCallbacks( |
| 1123 Dart_EmbedderTimelineStartRecording start_recording, | 1094 Dart_EmbedderTimelineStartRecording start_recording, |
| 1124 Dart_EmbedderTimelineStopRecording stop_recording, | 1095 Dart_EmbedderTimelineStopRecording stop_recording); |
| 1125 Dart_EmbedderTimelineGetTimeline get_timeline); | |
| 1126 | 1096 |
| 1127 #endif // INCLUDE_DART_TOOLS_API_H_ | 1097 #endif // INCLUDE_DART_TOOLS_API_H_ |
| OLD | NEW |