OLD | NEW |
1 # Dart VM Service Protocol 0.0 | 1 # Dart VM Service Protocol 0.0 |
2 | 2 |
3 This document describes _version 0.0_ of the Dart VM Service Protocol. | 3 This document describes _version 0.0_ of the Dart VM Service Protocol. |
4 This protocol is used to communicate with a running Dart Virtual | 4 This protocol is used to communicate with a running Dart Virtual |
5 Machine. | 5 Machine. |
6 | 6 |
7 To use the Service Protocol, start the VM with the *--observe* flag. | 7 To use the Service Protocol, start the VM with the *--observe* flag. |
8 The VM will start a webserver which services protocol requests via WebSocket. | 8 The VM will start a webserver which services protocol requests via WebSocket. |
9 It is possible to make HTTP (non-WebSocket) requests, | 9 It is possible to make HTTP (non-WebSocket) requests, |
10 but this does not allow access to VM _events_ and is not documented | 10 but this does not allow access to VM _events_ and is not documented |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 - [Double](#double) | 52 - [Double](#double) |
53 - [Error](#error) | 53 - [Error](#error) |
54 - [Event](#event) | 54 - [Event](#event) |
55 - [EventType](#eventtype) | 55 - [EventType](#eventtype) |
56 - [Field](#field) | 56 - [Field](#field) |
57 - [Flag](#flag) | 57 - [Flag](#flag) |
58 - [FlagList](#flaglist) | 58 - [FlagList](#flaglist) |
59 - [FlagType](#flagtype) | 59 - [FlagType](#flagtype) |
60 - [Frame](#frame) | 60 - [Frame](#frame) |
61 - [Function](#function) | 61 - [Function](#function) |
62 - [FunctionKind](#functionkind) | |
63 - [Instance](#instance) | 62 - [Instance](#instance) |
64 - [Int](#int) | 63 - [Int](#int) |
65 - [Isolate](#isolate) | 64 - [Isolate](#isolate) |
66 - [Library](#library) | 65 - [Library](#library) |
67 - [List](#list) | 66 - [List](#list) |
68 - [ListElement](#listelement) | 67 - [ListElement](#listelement) |
69 - [Message](#message) | 68 - [Message](#message) |
70 - [Null](#null) | 69 - [Null](#null) |
71 - [Object](#object) | 70 - [Object](#object) |
72 - [Sentinel](#sentinel) | 71 - [Sentinel](#sentinel) |
73 - [SentinelType](#sentineltype) | 72 - [SentinelType](#sentineltype) |
74 - [Script](#script) | 73 - [Script](#script) |
75 - [ScriptKind](#scriptkind) | |
76 - [Stack](#stack) | 74 - [Stack](#stack) |
77 - [StepOption](#stepoption) | 75 - [StepOption](#stepoption) |
78 - [String](#string) | 76 - [String](#string) |
79 - [Success](#success) | 77 - [Success](#success) |
80 - [Type](#type) | 78 - [Type](#type) |
81 - [TypeArguments](#typearguments) | 79 - [TypeArguments](#typearguments) |
82 - [Response](#response) | 80 - [Response](#response) |
83 - [Version](#version) | 81 - [Version](#version) |
84 - [VM](#vm) | 82 - [VM](#vm) |
85 - [Revision History](#revision-history) | 83 - [Revision History](#revision-history) |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 If an error occurs while evaluating the expression, an [@Error](#error) | 411 If an error occurs while evaluating the expression, an [@Error](#error) |
414 reference will be returned. | 412 reference will be returned. |
415 | 413 |
416 If the expression is evaluated successfully, an [@Instance](#instance) | 414 If the expression is evaluated successfully, an [@Instance](#instance) |
417 reference will be returned. | 415 reference will be returned. |
418 | 416 |
419 ### evaluateInFrame | 417 ### evaluateInFrame |
420 | 418 |
421 ``` | 419 ``` |
422 @Instance|@Error evaluateInFrame(string isolateId, | 420 @Instance|@Error evaluateInFrame(string isolateId, |
423 int frame, | 421 int frameIndex, |
424 string expression) | 422 string expression) |
425 ``` | 423 ``` |
426 | 424 |
427 The _evaluateInFrame_ RPC is used to evaluate an expression in the context of | 425 The _evaluateInFrame_ RPC is used to evaluate an expression in the |
428 a particular stack frame. _frame_ is the index of the desired [Frame](#frame), | 426 context of a particular stack frame. _frameIndex_ is the index of the |
429 with an index of _0_ indicating the top (most recent) frame. | 427 desired [Frame](#frame), with an index of _0_ indicating the top (most |
| 428 recent) frame. |
430 | 429 |
431 If an error occurs while evaluating the expression, an [@Error](#error) | 430 If an error occurs while evaluating the expression, an [@Error](#error) |
432 reference will be returned. | 431 reference will be returned. |
433 | 432 |
434 If the expression is evaluated successfully, an [@Instance](#instance) | 433 If the expression is evaluated successfully, an [@Instance](#instance) |
435 reference will be returned. | 434 reference will be returned. |
436 | 435 |
437 ### getFlagList | 436 ### getFlagList |
438 | 437 |
439 ``` | 438 ``` |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 @Type declaredType; | 1023 @Type declaredType; |
1025 | 1024 |
1026 // Is this field const? | 1025 // Is this field const? |
1027 bool const; | 1026 bool const; |
1028 | 1027 |
1029 // Is this field final? | 1028 // Is this field final? |
1030 bool final; | 1029 bool final; |
1031 | 1030 |
1032 // Is this field static? | 1031 // Is this field static? |
1033 bool static; | 1032 bool static; |
1034 | |
1035 // The value of this field, if the field is static. | |
1036 @Instance value [optional]; | |
1037 } | 1033 } |
1038 ``` | 1034 ``` |
1039 | 1035 |
1040 An _@Field_ is a reference to a _Field_. | 1036 An _@Field_ is a reference to a _Field_. |
1041 | 1037 |
1042 ``` | 1038 ``` |
1043 class Field extends Object { | 1039 class Field extends Object { |
1044 // The name of this field. | 1040 // The name of this field. |
1045 string name; | 1041 string name; |
1046 | 1042 |
1047 // The owner of this field, which can be either a Library or a | 1043 // The owner of this field, which can be either a Library or a |
1048 // Class. | 1044 // Class. |
1049 @Object owner; | 1045 @Object owner; |
1050 | 1046 |
1051 // The declared type of this field. | 1047 // The declared type of this field. |
1052 @Type declaredType; | 1048 @Type declaredType; |
1053 | 1049 |
1054 // Is this field const? | 1050 // Is this field const? |
1055 bool const; | 1051 bool const; |
1056 | 1052 |
1057 // Is this field final? | 1053 // Is this field final? |
1058 bool final; | 1054 bool final; |
1059 | 1055 |
1060 // Is this field static? | 1056 // Is this field static? |
1061 bool static; | 1057 bool static; |
1062 | 1058 |
1063 // The value of this field, if the field is static. | 1059 // The value of this field, if the field is static. |
1064 @Instance value [optional]; | 1060 @Instance staticValue [optional]; |
1065 | 1061 |
1066 // The script containing this feild. | 1062 // The script containing this feild. |
1067 @Script script [optional]; | 1063 @Script script [optional]; |
1068 | 1064 |
1069 // The token position of this field. | 1065 // The token position of this field. |
1070 int tokenPos [optional]; | 1066 int tokenPos [optional]; |
1071 } | 1067 } |
1072 ``` | 1068 ``` |
1073 | 1069 |
1074 A _Field_ provides information about a Dart language field or | 1070 A _Field_ provides information about a Dart language field or |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1141 | 1137 |
1142 ``` | 1138 ``` |
1143 class @Function extends @Object { | 1139 class @Function extends @Object { |
1144 // The name of this function. | 1140 // The name of this function. |
1145 string name; | 1141 string name; |
1146 | 1142 |
1147 // The owner of this field, which can be a Library, Class, or a | 1143 // The owner of this field, which can be a Library, Class, or a |
1148 // Function. | 1144 // Function. |
1149 @Library|@Class|@Function owner; | 1145 @Library|@Class|@Function owner; |
1150 | 1146 |
1151 // What kind of function is this? | 1147 // Is this function static? |
1152 FunctionKind kind; | 1148 bool static |
| 1149 |
| 1150 // Is this function const? |
| 1151 bool const; |
| 1152 |
1153 } | 1153 } |
1154 ``` | 1154 ``` |
1155 | 1155 |
1156 An _@Function_ is a reference to a _Function_. | 1156 An _@Function_ is a reference to a _Function_. |
1157 | 1157 |
1158 | 1158 |
1159 ``` | 1159 ``` |
1160 // A Dart language function. | 1160 // A Dart language function. |
1161 class Function extends Object { | 1161 class Function extends Object { |
1162 // The name of this function. | 1162 // The name of this function. |
1163 string name; | 1163 string name; |
1164 | 1164 |
1165 // The owner of this field, which can be a Library, Class, or a | 1165 // The owner of this field, which can be a Library, Class, or a |
1166 // Function. | 1166 // Function. |
1167 @Library|@Class|@Function owner; | 1167 @Library|@Class|@Function owner; |
1168 | 1168 |
1169 // What kind of function is this? | |
1170 FunctionKind kind; | |
1171 | |
1172 // Is this function static? | |
1173 bool static | |
1174 | |
1175 // Is this function const? | |
1176 bool const; | |
1177 | |
1178 // The script containing this function. | 1169 // The script containing this function. |
1179 @Script script [optional]; | 1170 @Script script [optional]; |
1180 | 1171 |
1181 // The first token position of this function. | 1172 // The first token position of this function. |
1182 int tokenPos [optional]; | 1173 int tokenPos [optional]; |
1183 | 1174 |
1184 // The last token position of this function. | 1175 // The last token position of this function. |
1185 int endTokenPos [optional]; | 1176 int endTokenPos [optional]; |
1186 | 1177 |
1187 // The compiled code associated with this function. | 1178 // The compiled code associated with this function. |
1188 @Code code [optional]; | 1179 @Code code [optional]; |
1189 } | 1180 } |
1190 ``` | 1181 ``` |
1191 | 1182 |
1192 A _Function_ represents a Dart language function. | 1183 A _Function_ represents a Dart language function. |
1193 | 1184 |
1194 ### FunctionKind | |
1195 | |
1196 ``` | |
1197 enum FunctionKind { | |
1198 RegularFunction, | |
1199 ClosureFunction, | |
1200 GetterFunction, | |
1201 SetterFunction, | |
1202 Constructor, | |
1203 ImplicitGetter, | |
1204 ImplicitSetter, | |
1205 ImplicitStaticFinalGetter, | |
1206 IrregexpFunction, | |
1207 StaticInitializer, | |
1208 MethodExtractor, | |
1209 NoSuchMethodDispatcher, | |
1210 InvokeFieldDispatcher, | |
1211 Collected, | |
1212 Native, | |
1213 Stub, | |
1214 Tag | |
1215 } | |
1216 ``` | |
1217 | |
1218 TODO: Do we need to expose all of this? | |
1219 | |
1220 ### Instance | 1185 ### Instance |
1221 | 1186 |
1222 ``` | 1187 ``` |
1223 class @Instance extends @Object { | 1188 class @Instance extends @Object { |
1224 // Instance references include their class. | 1189 // Instance references include their class. |
1225 @Class class; | 1190 @Class class; |
1226 } | 1191 } |
1227 ``` | 1192 ``` |
1228 | 1193 |
1229 _@Instance_ is a reference to an _Instance_. | 1194 _@Instance_ is a reference to an _Instance_. |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1398 ``` | 1363 ``` |
1399 | 1364 |
1400 ### Message | 1365 ### Message |
1401 | 1366 |
1402 ``` | 1367 ``` |
1403 class Message { | 1368 class Message { |
1404 int index; | 1369 int index; |
1405 string name; | 1370 string name; |
1406 string messageObjectId; | 1371 string messageObjectId; |
1407 int size; | 1372 int size; |
1408 int priority; | |
1409 @Function handlerFunction [optional]; | 1373 @Function handlerFunction [optional]; |
1410 @Script handleScript [optional]; | 1374 @Script handleScript [optional]; |
1411 int handlerTokenPos [optional]; | 1375 int handlerTokenPos [optional]; |
1412 } | 1376 } |
1413 ``` | 1377 ``` |
1414 | 1378 |
1415 ### Null | 1379 ### Null |
1416 | 1380 |
1417 ``` | 1381 ``` |
1418 class @Null extends @Instance { | 1382 class @Null extends @Instance { |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1729 // A list of isolates running in the VM. | 1693 // A list of isolates running in the VM. |
1730 @Isolate[] isolates | 1694 @Isolate[] isolates |
1731 } | 1695 } |
1732 ``` | 1696 ``` |
1733 | 1697 |
1734 ## Revision History | 1698 ## Revision History |
1735 | 1699 |
1736 version | comments | 1700 version | comments |
1737 ------- | -------- | 1701 ------- | -------- |
1738 0.0 | draft | 1702 0.0 | draft |
OLD | NEW |