Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: runtime/vm/service/service.idl

Issue 1053053002: Tidy up the service protocol. Begin improving the documentation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // 1 //
2 // TODO(turnidge): Finish writing an idl description of the service protocol. 2 // TODO(turnidge): Finish writing an idl description of the service protocol.
3 // 3 //
4 4
5 interface Service { 5 interface Service {
6 // Returns global information about the Dart VM.
6 getVM() VM 7 getVM() VM
7 8
9 // Changes the debugging name for some isolate.
10 setName(name string) Response
Cutch 2015/04/02 18:11:41 add missing isolateId
turnidge 2015/04/02 18:27:30 Done.
11
12 // Returns information about an isolate.
13 getIsolate(isolateId string) Isolate
14
15 // Returns a list of vm flags and their values.
8 getFlagList() FlagList 16 getFlagList() FlagList
9 17
18 // Sets the value of a vm flag
10 setFlag(name string, value string) Response 19 setFlag(name string, value string) Response
11 20
21 // Loads an object by id from an isolate.
12 getObject(isolateId string, objectId string) Object 22 getObject(isolateId string, objectId string) Object
13 23
14 // The response is a subtype of Object or ObjectRef. 24 // The response is a subtype of Object or ObjectRef.
15 getObjectByAddress(address string, ref bool) Response 25 getObjectByAddress(address string, ref bool) Response
16 26
17 // Adds a breakpoint at the specified line. 27 // Adds a breakpoint at the specified line.
18 // 28 //
19 // TODO(turnidge): Make line an int instead of a string. 29 // TODO(turnidge): Make line an int instead of a string.
20 addBreakpoint(isolateId string, 30 addBreakpoint(isolateId string,
21 scriptId string, 31 scriptId string,
(...skipping 19 matching lines...) Expand all
41 eval(isolateId string, targetId string, expression string) InstanceRef 51 eval(isolateId string, targetId string, expression string) InstanceRef
42 52
43 // Returns the current execution stack for an isolate. 53 // Returns the current execution stack for an isolate.
44 getStack(isolateId string) Stack 54 getStack(isolateId string) Stack
45 55
46 // Returns code coverage information for a library, script, class, 56 // Returns code coverage information for a library, script, class,
47 // or function. 57 // or function.
48 getCoverage(isolateId string, targetId string) CodeCoverage 58 getCoverage(isolateId string, targetId string) CodeCoverage
49 59
50 // Returns call site cache information for a function. 60 // Returns call site cache information for a function.
51 getCallSiteData(isolateId string, targetId string) _CallSiteData 61 _getCallSiteData(isolateId string, targetId string) _CallSiteData
52 62
53 // Returns a full cpu profile for an isolate. 63 // Returns a full cpu profile for an isolate.
54 // 64 //
55 // <code>tagSelector</code> is optional with default 'UserVM'. 65 // <code>tagSelector</code> is optional with default 'UserVM'.
56 getCpuProfile(isolateId string, tags TagSelector) CpuProfile 66 getCpuProfile(isolateId string, tags TagSelector) CpuProfile
57 67
58 68
59 // Returns a simple tag-based profile for an isolate. 69 // Returns a simple tag-based profile for an isolate.
60 getTagProfile(isolateId string) TagProfile 70 getTagProfile(isolateId string) TagProfile
61 71
(...skipping 28 matching lines...) Expand all
90 limit int) InboundReferences 100 limit int) InboundReferences
91 101
92 getClassList(isolateId string) ClassList 102 getClassList(isolateId string) ClassList
93 103
94 // When <code>onlyWithInstantiations</code> is true, the list only includes 104 // When <code>onlyWithInstantiations</code> is true, the list only includes
95 // type arguments with instantiations. Otherwise, all type arguments are 105 // type arguments with instantiations. Otherwise, all type arguments are
96 // returned. 106 // returned.
97 getTypeArgumentsList(isolateId string, 107 getTypeArgumentsList(isolateId string,
98 onlyWithInstantiations bool) TypeArgumentsList 108 onlyWithInstantiations bool) TypeArgumentsList
99 109
110 // Gets a list of isolate metrics.
100 getIsolateMetricList(isolateId string, 111 getIsolateMetricList(isolateId string,
101 type MetricSelector) MetricList 112 type MetricSelector) MetricList
102 113
114 // Gets a specific isolate metric by id.
103 getIsolateMetric(isolateId string, 115 getIsolateMetric(isolateId string,
104 metricId string) Metric 116 metricId string) Metric
105 117
118 // Gets a list of vm metrics.
106 getVMMetricList() MetricList 119 getVMMetricList() MetricList
107 120
121 // Gets a specific vm metric by id.
108 getVMMetric(metricId string) Metric 122 getVMMetric(metricId string) Metric
109 123
124 // A test rpc for vm requests.
125 _echoVM(text string) _EchoResponse
126
127 // A test rpc for isolate requests.
110 _echo(isolateId string, 128 _echo(isolateId string,
111 text string) _EchoResponse 129 text string) _EchoResponse
112 130
113 _echoVM(text string) _EchoResponse
114
115 // Triggers a ServiceEvent with EventType '_Echo'. 131 // Triggers a ServiceEvent with EventType '_Echo'.
116 _triggerEchoEvent(isolateId string, 132 _triggerEchoEvent(isolateId string,
117 text string) _EchoResponse 133 text string) _EchoResponse
118 134
119 // Response is bad JSON. 135 // Response is bad JSON.
120 _respondWithMalformedJson(isolateId string) Response 136 _respondWithMalformedJson(isolateId string) Response
121 137
122 // Response is not an object. 138 // Response is not an object.
123 _respondWithMalformedObject(isolateId string) Response 139 _respondWithMalformedObject(isolateId string) Response
124 } 140 }
(...skipping 10 matching lines...) Expand all
135 type string 151 type string
136 152
137 // Some responses will have the <code>_vmType</code> property. This 153 // Some responses will have the <code>_vmType</code> property. This
138 // provides the VM-internal type name of an object, and is provided 154 // provides the VM-internal type name of an object, and is provided
139 // only when this type name differs from the <code>type</code> 155 // only when this type name differs from the <code>type</code>
140 // property. 156 // property.
141 _vmType string [optional] 157 _vmType string [optional]
142 } 158 }
143 159
144 160
161 struct ServiceEvent extends Response {
162 // What kind of event is this?
163 eventType ServiceEventType
164
165 // The isolate with which this event is associated.
166 isolate string
Cutch 2015/04/02 18:11:41 s/string/isolateRef
turnidge 2015/04/02 18:27:30 Nice catch. Done.
167
168 // The breakpoint associated with this event, if applicable.
169 //
170 // This is provided for the events:
171 // <code>PauseBreakpoint</code>
172 // <code>BreakpointAdded</code>
173 // <code>BreakpointRemoved</code>
174 // <code>BreakpointResolved</code>
175 breakpoint Breakpoint [optional]
176
177 // The top stack frame associated with this event, if applicable.
178 //
179 // This is provided for the events:
180 // <code>PauseBreakpoint</code>
181 // <code>PauseInterrupted</code>
182 // <code>PauseException</code>
183 //
184 // For the <code>Resume</code> event, the top frame is provided at
185 // all times except for the initial resume event that is delivered
186 // when an isolate begins execution.
187 topFrame Frame [optional]
188
189 // The exception associated with this event, if this is a
190 // <code>PauseException</code> event.
191 exception InstanceRef [optional]
192 }
193
194
195 enum ServiceEventType {
196 // Notification that a new isolate has started.
197 IsolateStart
198
199 // Notification that an isolate has exited.
200 IsolateExit
201
202 // Notification that isolate identifying information has changed.
203 // Currently used to notify of changes to the isolate debugging name
204 // via <code>setName</code>.
205 IsolateUpdate
206
207 // An isolate has paused at start, before executing code.
208 PauseStart
209
210 // An isolate has paused at exit, before terminating.
211 PauseExit
212
213 // An isolate has paused at a breakpoint or due to stepping.
214 PauseBreakpoint
215
216 // An isolate has paused due to interruption via <code>pause</code>.
217 PauseInterrupted
218
219 // An isolate has paused due to an exception.
220 //
221 // TODO(turnidge): Allow user to toggle pause-on-exceptions.
222 PauseException
223
224 // An isolate has started or resumed execution.
225 Resume
226
227 // A breakpoint has been added for an isolate.
228 BreakpointAdded
229
230 // An unresolved breakpoint has been resolved for an isolate.
231 BreakpointResolved
232
233 // A breakpoint has been removed.
234 BreakpointRemoved
235
236 // A garbage collection event.
237 GC
238
239 // The object graph is being delivered. This is triggered via
240 // <code>requestHeapSnapshot</code>.
241 _Graph
242 }
243
244
145 struct VM extends Response { 245 struct VM extends Response {
146 placeholder int 246 // Word length on target architecture (e.g. 32, 64).
147 } 247 architectureBits int
148 248
149 249 // The CPU we are generating code for.
250 targetCPU string
251
252 // The CPU we are actually running on.
253 hostCPU string
254
255 // The Dart VM version string.
256 version string
257
258 // The process id for the VM.
259 pid string
260
261 // The time that the VM started in milliseconds since the epoch.
262 //
263 // Suitable to pass to DateTime.fromMillisecondsSinceEpoch.
264 startTime int
Cutch 2015/04/02 18:11:41 should we make a distinct type, e.g. "milliseconds
turnidge 2015/04/02 18:27:30 Acknowledged.
265
266 // A list of isolates running in the VM.
267 isolates []IsolateRef
268
269 // Are assertions enabled in the VM?
270 //
271 // TODO(turnidge): Move to some sort of general settings list?
272 _assertsEnabled bool
273
274 // Are type checks enabled in the VM?
275 //
276 // TODO(turnidge): Move to some sort of general settings list?
277 _typeChecksEnabled bool
278 }
279
280
281 // A reference to an an isolate.
282 struct IsolateRef extends Object {
283 // A numeric id for this isolate, represented as a string. Unique.
284 number string
285
286 // A name identifying this isolate. Not guaranteed to be unique.
287 name string
288 }
289
290
291 // An isolate running in the VM.
292 struct Isolate {
293 // A numeric id for this isolate, represented as a string. Unique.
294 number string
295
296 // A name identifying this isolate. Not guaranteed to be unique.
297 name string
298
299 // The time that the VM started in milliseconds since the epoch.
300 //
301 // Suitable to pass to DateTime.fromMillisecondsSinceEpoch.
302 startTime int
303
304 // The entry function for this isolate.
305 entry FunctionRef [optional]
306
307 // The number of live ports for this isolate.
308 livePorts int
309
310 // Will this isolate pause when exiting?
311 pauseOnExit bool
312
313 // The last pause event delivered to the isolate. If the isolate is
314 // running, this will be a resume event.
315 pauseEvent ServiceEvent
316
317 // The error that is causing this isolate to exit, if applicable.
318 error Error [optional]
319
320 // The root library for this isolate.
321 rootLib LibraryRef
322
323 // A list of all libraries for this isolate.
324 libraries []LibraryRef
325
326 // A list of all breakpoints for this isolate.
327 breakpoints []Breakpoint
328
329 // A list of features enabled for this isolate.
330 features []string
331
332 // placeholder
Cutch 2015/04/02 18:11:41 globally: s/placeholder/TODO ?
turnidge 2015/04/02 18:27:30 Done.
333 heaps int
334
335 // placeholder
336 tagCounters int
337 }
338
339
340 // A list of flags.
150 struct FlagList extends Response { 341 struct FlagList extends Response {
151 placeholder int 342 // A list of all flags which are set to default values.
152 } 343 unmodifiedFlags []Flag
153 344
154 345 // A list of all flags which have been modified by the user.
155 struct _EchoResponse extends Response { 346 modifiedFlags []Flag
156 text string 347 }
157 } 348
158 349
159 350 // A single flag.
160 // Persistent objects in the vm are returned as subclasses of Object. 351 struct Flag {
352 // The name of the flag.
353 name string
354
355 // A description of the flag.
356 comment string
357
358 // The type of the flag.
359 flagType FlagType
360 }
361
362
363 // The type of a flag.
364 enum FlagType {
365 bool
366 int
367 uint64_t
368 string
369 }
370
371
372 // A reference to a persistent object that lives in some isolate.
373 struct ObjectRef extends Response {
374 // A unique identifier for an object. Passed to <code>getObject</code> to loa d the full object.
Cutch 2015/04/02 18:11:41 column limit.
turnidge 2015/04/02 18:27:30 Done.
375 id string
376 }
377
378
379 // A persistent object that lives in some isolate.
161 struct Object extends Response { 380 struct Object extends Response {
162 // The object <code>id</code> can be used to refer to a persistent 381 // A unique identifier for this object.
163 // object inside the vm or an isolate. 382 id string
164 id string 383 }
384
385
386 // TODO(turnidge): null type
387 // TODO(turnidge): VMObject.
388
389
390 // A reference to a Dart language class.
391 struct ClassRef extends ObjectRef {
392 // The name of this class.
393 name string
394
395 // A vm internal name, provided only when it is different than name.
396 _vmName string
397 }
398
399
400 // A Dart language class.
401 struct Class extends Object {
402 // The name of this class.
403 name string
404
405 // A vm internal name, provided only when it is different than name.
406 _vmName string
407
408 // The error which occurred during class finalization, if it exists.
409 error InstanceRef [optional]
410
411 // Is this an abstract class?
412 abstract bool
413
414 // Is this a const class?
415 const bool
416
417 // Has this class been finalized?
418 finalized bool
419
420 // Is this class implemented?
421 implemented bool
422
423 // Is this a vm patch class?
424 patch bool
425
426 // The library which contains this class.
427 library LibraryRef
428
429 // The script which defines this class. May be missing for some
430 // classes.
431 script ScriptRef
432
433 // The superclass of this class, if any.
434 super ClassRef [optional]
435
436 // A list of interface types for this class.
437 interfaces []TypeRef
438
439 // A list of fields in this class. Does not include fields from
440 // superclasses.
441 fields []FieldRef
442
443 // A list of functions in this class. Does not include functions
444 // from superclasses.
445 functions []FunctionRef
446
447 // A list of subclasses of this class.
448 subclasses []ClassRef
449
450 // Allocation statistics for this class, if available.
451 allocationStats ClassHeapStats [optional]
452 }
453
454
455 struct ClassHeapStats extends Response {
456 placeholder int
457 }
458
459
460 // A reference to a type arguments vector.
461 struct TypeArgumentsRef extends ObjectRef {
462 // A name for this type argument list.
463 name string
464
465 // A vm internal name, provided only when it is different than name.
466 _vmName string
467 }
468
469
470 // The type argument vector for some instantiated generic type.
471 struct TypeArguments extends Object {
472 // A name for this type argument list.
473 name string
474
475 // A vm internal name, provided only when it is different than name.
476 _vmName string
477
478 // A list of types.
479 types []TypeRef
480 }
481
482
483 // Represents an error object inside the VM.
484 struct Error extends Object {
485 // An error message
486 message string
487 }
488
489
490 // A <code>InstanceRef</code> encodes a reference to a
491 // <code>Instance</code> object.
492 struct InstanceRef extends ObjectRef {
493 placeholder int
494 }
495
496
497 struct TypeRef extends InstanceRef {
498 placeholder2 int
165 } 499 }
166 500
167 501
168 // An <code>Instance</code> represents a Dart-language object. 502 // An <code>Instance</code> represents a Dart-language object.
169 struct Instance extends Object { 503 struct Instance extends Object {
170 placeholder int 504 placeholder int
171 } 505 }
172 506
173 507
174 // A <code>Breakpoint</code> describes a debugger breakpoint. 508 // A <code>Breakpoint</code> describes a debugger breakpoint.
175 struct Breakpoint extends Object { 509 struct Breakpoint extends Object {
176 breakpointNumber int 510 breakpointNumber int
177 resolved bool 511 resolved bool
178 location Location 512 location Location
179 } 513 }
180 514
181 515
182 // References to persistent objects in the vm are returned as
183 // subclasses of ObjectRef.
184 struct ObjectRef extends Response {
185 // The object <code>id</code> can be used to refer to a persistent
186 // object inside the vm or an isolate.
187 id string
188 }
189
190
191 // A <code>CodeRef</code> encodes a reference to a <code>Code</code> object. 516 // A <code>CodeRef</code> encodes a reference to a <code>Code</code> object.
192 struct CodeRef extends ObjectRef { 517 struct CodeRef extends ObjectRef {
193 placeholder int 518 placeholder int
194 } 519 }
195 520
196 521
197 struct ClassRef extends ObjectRef { 522 struct LibraryRef extends ObjectRef {
198 placeholder int
199 }
200
201
202 struct TypeArgumentsRef extends ObjectRef {
203 placeholder int 523 placeholder int
204 } 524 }
205 525
206 526
207 // A <code>FunctionRef</code> encodes a reference to a <code>Function</code> obj ect. 527 // A <code>FunctionRef</code> encodes a reference to a <code>Function</code> obj ect.
208 struct FunctionRef extends ObjectRef { 528 struct FunctionRef extends ObjectRef {
209 placeholder int 529 placeholder int
210 } 530 }
211 531
212 532
213 // A <code>FieldRef</code> encodes a reference to a <code>Field</code> object. 533 // A <code>FieldRef</code> encodes a reference to a <code>Field</code> object.
214 struct FieldRef extends ObjectRef { 534 struct FieldRef extends ObjectRef {
215 placeholder int 535 placeholder int
216 } 536 }
217 537
218 538
219 // A <code>InstanceRef</code> encodes a reference to a <code>Instance</code> obj ect.
220 struct InstanceRef extends ObjectRef {
221 placeholder int
222 }
223
224
225 // A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object. 539 // A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object.
226 struct ScriptRef extends ObjectRef { 540 struct ScriptRef extends ObjectRef {
227 placeholder int 541 placeholder int
228 } 542 }
229 543
230
231 struct Class extends Object {
232 placeholder int
233 }
234
235
236 struct TypeArguments extends Object {
237 placeholder int
238 }
239
240 544
241 // A <code>Location</code> encodes a location withing a dart script. 545 // A <code>Location</code> encodes a location withing a dart script.
242 // 546 //
243 // TODO(turnidge): Should this really be broken out as its own type? 547 // TODO(turnidge): Should this really be broken out as its own type?
244 // If so, we should use it more consistently in the api. For example, 548 // If so, we should use it more consistently in the api. For example,
245 // in Frame. 549 // in Frame.
246 struct Location { 550 struct Location {
247 script ScriptRef 551 script ScriptRef
248 tokenPos int 552 tokenPos int
249 } 553 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 } 689 }
386 690
387 691
388 struct Metric extends Response { 692 struct Metric extends Response {
389 name string 693 name string
390 description string 694 description string
391 } 695 }
392 696
393 697
394 struct Gauge extends Metric { 698 struct Gauge extends Metric {
395 value double 699 value float
Cutch 2015/04/02 18:11:41 why the switch from double to float?
turnidge 2015/04/02 18:27:30 The tool expects this.
396 min double 700 min float
397 max double 701 max float
398 } 702 }
399 703
400 704
401 struct Counter extends Metric { 705 struct Counter extends Metric {
402 value double 706 value float
403 } 707 }
404 708
405 709
406 // A <code>GCOption</code> is used to indicate which form of garbage 710 // A <code>GCOption</code> is used to indicate which form of garbage
407 // collection is requested. 711 // collection is requested.
408 enum GCOption { 712 enum GCOption {
409 full 713 full
410 } 714 }
411 715
412 // A <code>StepOption</code> is used to indicate which form of 716 // A <code>StepOption</code> is used to indicate which form of
(...skipping 10 matching lines...) Expand all
423 UserVM 727 UserVM
424 UserOnly 728 UserOnly
425 VMUser 729 VMUser
426 VMOnly 730 VMOnly
427 None 731 None
428 } 732 }
429 733
430 // A <code>MetricSelector</code> is used to indicate which list of metrics 734 // A <code>MetricSelector</code> is used to indicate which list of metrics
431 // should be retrieved from an isolate. 735 // should be retrieved from an isolate.
432 enum MetricSelector { 736 enum MetricSelector {
433 Dart, 737 Dart
434 Native, 738 Native
435 } 739 }
740
741
742 struct _EchoResponse extends Response {
743 text string
744 }
OLDNEW
« runtime/vm/isolate.cc ('K') | « runtime/vm/service.cc ('k') | runtime/vm/service_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698