| Index: runtime/vm/service/service.idl
|
| diff --git a/runtime/vm/service/service.idl b/runtime/vm/service/service.idl
|
| index 1b825a19d42f0b238edc67486aafb91988ae47ef..e9afc3757e20559aab07d1f38410400ca565030c 100644
|
| --- a/runtime/vm/service/service.idl
|
| +++ b/runtime/vm/service/service.idl
|
| @@ -3,12 +3,22 @@
|
| //
|
|
|
| interface Service {
|
| + // Returns global information about the Dart VM.
|
| getVM() VM
|
|
|
| + // Changes the debugging name for some isolate.
|
| + setName(isolateId string, name string) Response
|
| +
|
| + // Returns information about an isolate.
|
| + getIsolate(isolateId string) Isolate
|
| +
|
| + // Returns a list of vm flags and their values.
|
| getFlagList() FlagList
|
|
|
| + // Sets the value of a vm flag
|
| setFlag(name string, value string) Response
|
|
|
| + // Loads an object by id from an isolate.
|
| getObject(isolateId string, objectId string) Object
|
|
|
| // The response is a subtype of Object or ObjectRef.
|
| @@ -48,7 +58,7 @@ interface Service {
|
| getCoverage(isolateId string, targetId string) CodeCoverage
|
|
|
| // Returns call site cache information for a function.
|
| - getCallSiteData(isolateId string, targetId string) _CallSiteData
|
| + _getCallSiteData(isolateId string, targetId string) _CallSiteData
|
|
|
| // Returns a full cpu profile for an isolate.
|
| //
|
| @@ -97,21 +107,27 @@ interface Service {
|
| getTypeArgumentsList(isolateId string,
|
| onlyWithInstantiations bool) TypeArgumentsList
|
|
|
| + // Gets a list of isolate metrics.
|
| getIsolateMetricList(isolateId string,
|
| type MetricSelector) MetricList
|
|
|
| + // Gets a specific isolate metric by id.
|
| getIsolateMetric(isolateId string,
|
| metricId string) Metric
|
|
|
| + // Gets a list of vm metrics.
|
| getVMMetricList() MetricList
|
|
|
| + // Gets a specific vm metric by id.
|
| getVMMetric(metricId string) Metric
|
|
|
| + // A test rpc for vm requests.
|
| + _echoVM(text string) _EchoResponse
|
| +
|
| + // A test rpc for isolate requests.
|
| _echo(isolateId string,
|
| text string) _EchoResponse
|
|
|
| - _echoVM(text string) _EchoResponse
|
| -
|
| // Triggers a ServiceEvent with EventType '_Echo'.
|
| _triggerEchoEvent(isolateId string,
|
| text string) _EchoResponse
|
| @@ -142,99 +158,390 @@ struct Response {
|
| }
|
|
|
|
|
| +// An asynchronous notification from the VM Service.
|
| +struct ServiceEvent extends Response {
|
| + // What kind of event is this?
|
| + eventType ServiceEventType
|
| +
|
| + // The isolate with which this event is associated.
|
| + isolate IsolateRef
|
| +
|
| + // The breakpoint associated with this event, if applicable.
|
| + //
|
| + // This is provided for the events:
|
| + // <code>PauseBreakpoint</code>
|
| + // <code>BreakpointAdded</code>
|
| + // <code>BreakpointRemoved</code>
|
| + // <code>BreakpointResolved</code>
|
| + breakpoint Breakpoint [optional]
|
| +
|
| + // The top stack frame associated with this event, if applicable.
|
| + //
|
| + // This is provided for the events:
|
| + // <code>PauseBreakpoint</code>
|
| + // <code>PauseInterrupted</code>
|
| + // <code>PauseException</code>
|
| + //
|
| + // For the <code>Resume</code> event, the top frame is provided at
|
| + // all times except for the initial resume event that is delivered
|
| + // when an isolate begins execution.
|
| + topFrame Frame [optional]
|
| +
|
| + // The exception associated with this event, if this is a
|
| + // <code>PauseException</code> event.
|
| + exception InstanceRef [optional]
|
| +}
|
| +
|
| +
|
| +// The type of a service event.
|
| +enum ServiceEventType {
|
| + // Notification that a new isolate has started.
|
| + IsolateStart
|
| +
|
| + // Notification that an isolate has exited.
|
| + IsolateExit
|
| +
|
| + // Notification that isolate identifying information has changed.
|
| + // Currently used to notify of changes to the isolate debugging name
|
| + // via <code>setName</code>.
|
| + IsolateUpdate
|
| +
|
| + // An isolate has paused at start, before executing code.
|
| + PauseStart
|
| +
|
| + // An isolate has paused at exit, before terminating.
|
| + PauseExit
|
| +
|
| + // An isolate has paused at a breakpoint or due to stepping.
|
| + PauseBreakpoint
|
| +
|
| + // An isolate has paused due to interruption via <code>pause</code>.
|
| + PauseInterrupted
|
| +
|
| + // An isolate has paused due to an exception.
|
| + //
|
| + // TODO(turnidge): Allow user to toggle pause-on-exceptions.
|
| + PauseException
|
| +
|
| + // An isolate has started or resumed execution.
|
| + Resume
|
| +
|
| + // A breakpoint has been added for an isolate.
|
| + BreakpointAdded
|
| +
|
| + // An unresolved breakpoint has been resolved for an isolate.
|
| + BreakpointResolved
|
| +
|
| + // A breakpoint has been removed.
|
| + BreakpointRemoved
|
| +
|
| + // A garbage collection event.
|
| + GC
|
| +
|
| + // The object graph is being delivered. This is triggered via
|
| + // <code>requestHeapSnapshot</code>.
|
| + _Graph
|
| +}
|
| +
|
| +
|
| struct VM extends Response {
|
| - placeholder int
|
| + // Word length on target architecture (e.g. 32, 64).
|
| + architectureBits int
|
| +
|
| + // The CPU we are generating code for.
|
| + targetCPU string
|
| +
|
| + // The CPU we are actually running on.
|
| + hostCPU string
|
| +
|
| + // The Dart VM version string.
|
| + version string
|
| +
|
| + // The process id for the VM.
|
| + pid string
|
| +
|
| + // The time that the VM started in milliseconds since the epoch.
|
| + //
|
| + // Suitable to pass to DateTime.fromMillisecondsSinceEpoch.
|
| + startTime int
|
| +
|
| + // A list of isolates running in the VM.
|
| + isolates []IsolateRef
|
| +
|
| + // Are assertions enabled in the VM?
|
| + //
|
| + // TODO(turnidge): Move to some sort of general settings list?
|
| + _assertsEnabled bool
|
| +
|
| + // Are type checks enabled in the VM?
|
| + //
|
| + // TODO(turnidge): Move to some sort of general settings list?
|
| + _typeChecksEnabled bool
|
| }
|
|
|
|
|
| -struct FlagList extends Response {
|
| - placeholder int
|
| +// A reference to an an isolate.
|
| +struct IsolateRef extends Object {
|
| + // A numeric id for this isolate, represented as a string. Unique.
|
| + number string
|
| +
|
| + // A name identifying this isolate. Not guaranteed to be unique.
|
| + name string
|
| }
|
|
|
|
|
| -struct _EchoResponse extends Response {
|
| - text string
|
| +// An isolate running in the VM.
|
| +struct Isolate {
|
| + // A numeric id for this isolate, represented as a string. Unique.
|
| + number string
|
| +
|
| + // A name identifying this isolate. Not guaranteed to be unique.
|
| + name string
|
| +
|
| + // The time that the VM started in milliseconds since the epoch.
|
| + //
|
| + // Suitable to pass to DateTime.fromMillisecondsSinceEpoch.
|
| + startTime int
|
| +
|
| + // The entry function for this isolate.
|
| + entry FunctionRef [optional]
|
| +
|
| + // The number of live ports for this isolate.
|
| + livePorts int
|
| +
|
| + // Will this isolate pause when exiting?
|
| + pauseOnExit bool
|
| +
|
| + // The last pause event delivered to the isolate. If the isolate is
|
| + // running, this will be a resume event.
|
| + pauseEvent ServiceEvent
|
| +
|
| + // The error that is causing this isolate to exit, if applicable.
|
| + error Error [optional]
|
| +
|
| + // The root library for this isolate.
|
| + rootLib LibraryRef
|
| +
|
| + // A list of all libraries for this isolate.
|
| + libraries []LibraryRef
|
| +
|
| + // A list of all breakpoints for this isolate.
|
| + breakpoints []Breakpoint
|
| +
|
| + // A list of features enabled for this isolate.
|
| + features []string
|
| +
|
| + // TODO
|
| + heaps int
|
| +
|
| + // TODO
|
| + tagCounters int
|
| }
|
|
|
|
|
| -// Persistent objects in the vm are returned as subclasses of Object.
|
| -struct Object extends Response {
|
| - // The object <code>id</code> can be used to refer to a persistent
|
| - // object inside the vm or an isolate.
|
| - id string
|
| +// A list of flags.
|
| +struct FlagList extends Response {
|
| + // A list of all flags which are set to default values.
|
| + unmodifiedFlags []Flag
|
| +
|
| + // A list of all flags which have been modified by the user.
|
| + modifiedFlags []Flag
|
| }
|
|
|
|
|
| -// An <code>Instance</code> represents a Dart-language object.
|
| -struct Instance extends Object {
|
| - placeholder int
|
| +// A single flag.
|
| +struct Flag {
|
| + // The name of the flag.
|
| + name string
|
| +
|
| + // A description of the flag.
|
| + comment string
|
| +
|
| + // The type of the flag.
|
| + flagType FlagType
|
| }
|
|
|
|
|
| -// A <code>Breakpoint</code> describes a debugger breakpoint.
|
| -struct Breakpoint extends Object {
|
| - breakpointNumber int
|
| - resolved bool
|
| - location Location
|
| +// The type of a flag.
|
| +enum FlagType {
|
| + bool
|
| + int
|
| + uint64_t
|
| + string
|
| }
|
|
|
|
|
| -// References to persistent objects in the vm are returned as
|
| -// subclasses of ObjectRef.
|
| +// A reference to a persistent object that lives in some isolate.
|
| struct ObjectRef extends Response {
|
| - // The object <code>id</code> can be used to refer to a persistent
|
| - // object inside the vm or an isolate.
|
| - id string
|
| + // A unique identifier for an object. Passed to
|
| + // <code>getObject</code> to load the full object.
|
| + id string
|
| }
|
|
|
|
|
| -// A <code>CodeRef</code> encodes a reference to a <code>Code</code> object.
|
| -struct CodeRef extends ObjectRef {
|
| - placeholder int
|
| +// A persistent object that lives in some isolate.
|
| +struct Object extends Response {
|
| + // A unique identifier for this object.
|
| + id string
|
| }
|
|
|
|
|
| +// TODO(turnidge): null type
|
| +// TODO(turnidge): VMObject.
|
| +
|
| +
|
| +// A reference to a Dart language class.
|
| struct ClassRef extends ObjectRef {
|
| - placeholder int
|
| + // The name of this class.
|
| + name string
|
| +
|
| + // A vm internal name, provided only when it is different than name.
|
| + _vmName string
|
| }
|
|
|
|
|
| +// A Dart language class.
|
| +struct Class extends Object {
|
| + // The name of this class.
|
| + name string
|
| +
|
| + // A vm internal name, provided only when it is different than name.
|
| + _vmName string
|
| +
|
| + // The error which occurred during class finalization, if it exists.
|
| + error InstanceRef [optional]
|
| +
|
| + // Is this an abstract class?
|
| + abstract bool
|
| +
|
| + // Is this a const class?
|
| + const bool
|
| +
|
| + // Has this class been finalized?
|
| + finalized bool
|
| +
|
| + // Is this class implemented?
|
| + implemented bool
|
| +
|
| + // Is this a vm patch class?
|
| + patch bool
|
| +
|
| + // The library which contains this class.
|
| + library LibraryRef
|
| +
|
| + // The script which defines this class. May be missing for some
|
| + // classes.
|
| + script ScriptRef
|
| +
|
| + // The superclass of this class, if any.
|
| + super ClassRef [optional]
|
| +
|
| + // A list of interface types for this class.
|
| + interfaces []TypeRef
|
| +
|
| + // A list of fields in this class. Does not include fields from
|
| + // superclasses.
|
| + fields []FieldRef
|
| +
|
| + // A list of functions in this class. Does not include functions
|
| + // from superclasses.
|
| + functions []FunctionRef
|
| +
|
| + // A list of subclasses of this class.
|
| + subclasses []ClassRef
|
| +
|
| + // Allocation statistics for this class, if available.
|
| + allocationStats ClassHeapStats [optional]
|
| +}
|
| +
|
| +
|
| +struct ClassHeapStats extends Response {
|
| + TODO int
|
| +}
|
| +
|
| +
|
| +// A reference to a type arguments vector.
|
| struct TypeArgumentsRef extends ObjectRef {
|
| - placeholder int
|
| + // A name for this type argument list.
|
| + name string
|
| +
|
| + // A vm internal name, provided only when it is different than name.
|
| + _vmName string
|
| }
|
|
|
|
|
| -// A <code>FunctionRef</code> encodes a reference to a <code>Function</code> object.
|
| -struct FunctionRef extends ObjectRef {
|
| - placeholder int
|
| +// The type argument vector for some instantiated generic type.
|
| +struct TypeArguments extends Object {
|
| + // A name for this type argument list.
|
| + name string
|
| +
|
| + // A vm internal name, provided only when it is different than name.
|
| + _vmName string
|
| +
|
| + // A list of types.
|
| + types []TypeRef
|
| }
|
|
|
|
|
| -// A <code>FieldRef</code> encodes a reference to a <code>Field</code> object.
|
| -struct FieldRef extends ObjectRef {
|
| - placeholder int
|
| +// Represents an error object inside the VM.
|
| +struct Error extends Object {
|
| + // An error message
|
| + message string
|
| }
|
|
|
|
|
| -// A <code>InstanceRef</code> encodes a reference to a <code>Instance</code> object.
|
| +// A <code>InstanceRef</code> encodes a reference to a
|
| +// <code>Instance</code> object.
|
| struct InstanceRef extends ObjectRef {
|
| - placeholder int
|
| + TODO int
|
| }
|
|
|
|
|
| -// A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object.
|
| -struct ScriptRef extends ObjectRef {
|
| - placeholder int
|
| +struct TypeRef extends InstanceRef {
|
| + TODO2 int
|
| }
|
|
|
|
|
| -struct Class extends Object {
|
| - placeholder int
|
| +// An <code>Instance</code> represents a Dart-language object.
|
| +struct Instance extends Object {
|
| + TODO int
|
| }
|
|
|
|
|
| -struct TypeArguments extends Object {
|
| - placeholder int
|
| +// A <code>Breakpoint</code> describes a debugger breakpoint.
|
| +struct Breakpoint extends Object {
|
| + breakpointNumber int
|
| + resolved bool
|
| + location Location
|
| +}
|
| +
|
| +
|
| +// A <code>CodeRef</code> encodes a reference to a <code>Code</code> object.
|
| +struct CodeRef extends ObjectRef {
|
| + TODO int
|
| +}
|
| +
|
| +
|
| +struct LibraryRef extends ObjectRef {
|
| + TODO int
|
| +}
|
| +
|
| +
|
| +// A <code>FunctionRef</code> encodes a reference to a <code>Function</code> object.
|
| +struct FunctionRef extends ObjectRef {
|
| + TODO int
|
| +}
|
| +
|
| +
|
| +// A <code>FieldRef</code> encodes a reference to a <code>Field</code> object.
|
| +struct FieldRef extends ObjectRef {
|
| + TODO int
|
| +}
|
| +
|
| +
|
| +// A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object.
|
| +struct ScriptRef extends ObjectRef {
|
| + TODO int
|
| }
|
|
|
|
|
| @@ -273,7 +580,7 @@ struct Stack extends Response {
|
|
|
|
|
| struct CodeCoverage extends Response {
|
| - placeholder int
|
| + TODO int
|
| }
|
|
|
|
|
| @@ -392,14 +699,14 @@ struct Metric extends Response {
|
|
|
|
|
| struct Gauge extends Metric {
|
| - value double
|
| - min double
|
| - max double
|
| + value float
|
| + min float
|
| + max float
|
| }
|
|
|
|
|
| struct Counter extends Metric {
|
| - value double
|
| + value float
|
| }
|
|
|
|
|
| @@ -430,6 +737,11 @@ enum TagSelector {
|
| // A <code>MetricSelector</code> is used to indicate which list of metrics
|
| // should be retrieved from an isolate.
|
| enum MetricSelector {
|
| - Dart,
|
| - Native,
|
| + Dart
|
| + Native
|
| +}
|
| +
|
| +
|
| +struct _EchoResponse extends Response {
|
| + text string
|
| }
|
|
|