| Index: pkg/fletchc/lib/vm_commands.dart
|
| diff --git a/pkg/fletchc/lib/vm_commands.dart b/pkg/fletchc/lib/vm_commands.dart
|
| deleted file mode 100644
|
| index 355b9ffa7d093feb236982b35f22c34623660b88..0000000000000000000000000000000000000000
|
| --- a/pkg/fletchc/lib/vm_commands.dart
|
| +++ /dev/null
|
| @@ -1,1535 +0,0 @@
|
| -// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE.md file.
|
| -
|
| -library fletchc.vm_commands;
|
| -
|
| -import 'dart:convert' show
|
| - UTF8;
|
| -
|
| -import 'dart:typed_data' show
|
| - Int32List,
|
| - Uint16List,
|
| - Uint8List;
|
| -
|
| -import 'bytecodes.dart' show
|
| - Bytecode,
|
| - MethodEnd;
|
| -
|
| -import 'src/shared_command_infrastructure.dart' show
|
| - CommandBuffer;
|
| -
|
| -abstract class VmCommand {
|
| - final VmCommandCode code;
|
| -
|
| - const VmCommand(this.code);
|
| -
|
| - factory VmCommand.fromBuffer(VmCommandCode code, Uint8List buffer) {
|
| - switch (code) {
|
| - case VmCommandCode.HandShakeResult:
|
| - bool success = CommandBuffer.readBoolFromBuffer(buffer, 0);
|
| - int versionLength = CommandBuffer.readInt32FromBuffer(buffer, 1);
|
| - String version =
|
| - CommandBuffer.readAsciiStringFromBuffer(buffer, 5, versionLength);
|
| - return new HandShakeResult(success, version);
|
| - case VmCommandCode.InstanceStructure:
|
| - int classId = CommandBuffer.readInt64FromBuffer(buffer, 0);
|
| - int fields = CommandBuffer.readInt32FromBuffer(buffer, 8);
|
| - return new InstanceStructure(classId, fields);
|
| - case VmCommandCode.Instance:
|
| - int classId = CommandBuffer.readInt64FromBuffer(buffer, 0);
|
| - return new Instance(classId);
|
| - case VmCommandCode.Class:
|
| - int classId = CommandBuffer.readInt64FromBuffer(buffer, 0);
|
| - return new ClassValue(classId);
|
| - case VmCommandCode.Integer:
|
| - int value = CommandBuffer.readInt64FromBuffer(buffer, 0);
|
| - return new Integer(value);
|
| - case VmCommandCode.Double:
|
| - return new Double(CommandBuffer.readDoubleFromBuffer(buffer, 0));
|
| - case VmCommandCode.Boolean:
|
| - return new Boolean(CommandBuffer.readBoolFromBuffer(buffer, 0));
|
| - case VmCommandCode.Null:
|
| - return const NullValue();
|
| - case VmCommandCode.String:
|
| - return new StringValue(
|
| - CommandBuffer.readStringFromBuffer(buffer, 0, buffer.length));
|
| - case VmCommandCode.StdoutData:
|
| - return new StdoutData(buffer);
|
| - case VmCommandCode.StderrData:
|
| - return new StderrData(buffer);
|
| - case VmCommandCode.ObjectId:
|
| - int id = CommandBuffer.readInt64FromBuffer(buffer, 0);
|
| - return new ObjectId(id);
|
| - case VmCommandCode.ProcessBacktrace:
|
| - int frames = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - ProcessBacktrace backtrace = new ProcessBacktrace(frames);
|
| - for (int i = 0; i < frames; i++) {
|
| - int offset = i * 16 + 4;
|
| - int functionId = CommandBuffer.readInt64FromBuffer(buffer, offset);
|
| - int bytecodeIndex =
|
| - CommandBuffer.readInt64FromBuffer(buffer, offset + 8);
|
| - backtrace.functionIds[i] = functionId;
|
| - backtrace.bytecodeIndices[i] = bytecodeIndex;
|
| - }
|
| - return backtrace;
|
| - case VmCommandCode.ProcessBreakpoint:
|
| - int breakpointId = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - int functionId = CommandBuffer.readInt64FromBuffer(buffer, 4);
|
| - int bytecodeIndex = CommandBuffer.readInt64FromBuffer(buffer, 12);
|
| - return new ProcessBreakpoint(breakpointId, functionId, bytecodeIndex);
|
| - case VmCommandCode.ProcessDeleteBreakpoint:
|
| - int id = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - return new ProcessDeleteBreakpoint(id);
|
| - case VmCommandCode.ProcessSetBreakpoint:
|
| - int value = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - return new ProcessSetBreakpoint(value);
|
| - case VmCommandCode.ProcessTerminated:
|
| - return const ProcessTerminated();
|
| - case VmCommandCode.ProcessCompileTimeError:
|
| - return const ProcessCompileTimeError();
|
| - case VmCommandCode.ProcessNumberOfStacks:
|
| - int value = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - return new ProcessNumberOfStacks(value);
|
| - case VmCommandCode.ProcessGetProcessIdsResult:
|
| - int count = CommandBuffer.readInt32FromBuffer(buffer, 0);
|
| - List<int> ids = new List(count);
|
| - for (int i = 0; i < count; ++i) {
|
| - ids[i] = CommandBuffer.readInt32FromBuffer(buffer, (i + 1) * 4);
|
| - }
|
| - return new ProcessGetProcessIdsResult(ids);
|
| - case VmCommandCode.UncaughtException:
|
| - return const UncaughtException();
|
| - case VmCommandCode.CommitChangesResult:
|
| - bool success = CommandBuffer.readBoolFromBuffer(buffer, 0);
|
| - String message = CommandBuffer.readAsciiStringFromBuffer(
|
| - buffer, 1, buffer.length - 1);
|
| - return new CommitChangesResult(success, message);
|
| - case VmCommandCode.WriteSnapshotResult:
|
| - if ((buffer.offsetInBytes % 4) != 0) {
|
| - buffer = new Uint8List.fromList(buffer);
|
| - }
|
| -
|
| - int offset = 0;
|
| -
|
| - int readInt() {
|
| - int number = CommandBuffer.readInt32FromBuffer(buffer, offset);
|
| - offset += 4;
|
| - return number;
|
| - }
|
| -
|
| - Int32List readArray(int length) {
|
| - Int32List classTable = new Int32List.view(
|
| - buffer.buffer, buffer.offsetInBytes + offset, length);
|
| - offset += 4 * length;
|
| - return classTable;
|
| - }
|
| -
|
| - int hashtag = readInt();
|
| -
|
| - int classEntries = readInt();
|
| - Int32List classTable = readArray(classEntries);
|
| -
|
| - int functionEntries = readInt();
|
| - Int32List functionTable = readArray(functionEntries);
|
| -
|
| - return new WriteSnapshotResult(classTable, functionTable, hashtag);
|
| - default:
|
| - throw 'Unhandled command in VmCommand.fromBuffer: $code';
|
| - }
|
| - }
|
| -
|
| - void addTo(Sink<List<int>> sink) {
|
| - internalAddTo(sink, new CommandBuffer<VmCommandCode>());
|
| - }
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer.sendOn(sink, code);
|
| - }
|
| -
|
| - /// Indicates the number of responses we expect after sending a [VmCommand].
|
| - /// If the number is unknown (e.g. one response determines whether more will
|
| - /// come) this will be `null`.
|
| - ///
|
| - /// Some of the [VmCommand]s will instruct the fletch-vm to continue running
|
| - /// the program. The response [VmCommand] can be one of
|
| - /// * ProcessBreakpoint
|
| - /// * ProcessTerminated
|
| - /// * ProcessCompileTimeError
|
| - /// * UncaughtException
|
| - int get numberOfResponsesExpected => null;
|
| -
|
| - String valuesToString();
|
| -
|
| - String toString() => "$code(${valuesToString()})";
|
| -}
|
| -
|
| -class HandShake extends VmCommand {
|
| - final String value;
|
| -
|
| - const HandShake(this.value)
|
| - : super(VmCommandCode.HandShake);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> payload = UTF8.encode(value);
|
| - buffer
|
| - ..addUint32(payload.length)
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - // Expects a HandShakeResult reply.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class HandShakeResult extends VmCommand {
|
| - final bool success;
|
| - final String version;
|
| -
|
| - const HandShakeResult(this.success, this.version)
|
| - : super(VmCommandCode.HandShakeResult);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> payload = UTF8.encode(version);
|
| - buffer
|
| - ..addUint8(success ? 1 : 0)
|
| - ..addUint32(payload.length)
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$success, $version";
|
| -}
|
| -
|
| -class Dup extends VmCommand {
|
| - const Dup()
|
| - : super(VmCommandCode.Dup);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class PushNewOneByteString extends VmCommand {
|
| - final Uint8List value;
|
| -
|
| - const PushNewOneByteString(this.value)
|
| - : super(VmCommandCode.PushNewOneByteString);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> payload = value;
|
| - buffer
|
| - ..addUint32(payload.length)
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "'${new String.fromCharCodes(value)}'";
|
| -}
|
| -
|
| -class PushNewTwoByteString extends VmCommand {
|
| - final Uint16List value;
|
| -
|
| - const PushNewTwoByteString(this.value)
|
| - : super(VmCommandCode.PushNewTwoByteString);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> payload = value.buffer.asUint8List();
|
| - buffer
|
| - ..addUint32(payload.length)
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "'${new String.fromCharCodes(value)}'";
|
| -}
|
| -
|
| -class PushNewInstance extends VmCommand {
|
| - const PushNewInstance()
|
| - : super(VmCommandCode.PushNewInstance);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class PushNewClass extends VmCommand {
|
| - final int fields;
|
| -
|
| - const PushNewClass(this.fields)
|
| - : super(VmCommandCode.PushNewClass);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(fields)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$fields";
|
| -}
|
| -
|
| -class PushBuiltinClass extends VmCommand {
|
| - final int name;
|
| - final int fields;
|
| -
|
| - const PushBuiltinClass(this.name, this.fields)
|
| - : super(VmCommandCode.PushBuiltinClass);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(name)
|
| - ..addUint32(fields)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$name, $fields";
|
| -}
|
| -
|
| -class PushConstantList extends VmCommand {
|
| - final int entries;
|
| -
|
| - const PushConstantList(this.entries)
|
| - : super(VmCommandCode.PushConstantList);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(entries)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$entries";
|
| -}
|
| -
|
| -class PushConstantByteList extends VmCommand {
|
| - final int entries;
|
| -
|
| - const PushConstantByteList(this.entries)
|
| - : super(VmCommandCode.PushConstantByteList);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(entries)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$entries";
|
| -}
|
| -
|
| -class PushConstantMap extends VmCommand {
|
| - final int entries;
|
| -
|
| - const PushConstantMap(this.entries)
|
| - : super(VmCommandCode.PushConstantMap);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(entries)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$entries";
|
| -}
|
| -
|
| -class Generic extends VmCommand {
|
| - final List<int> payload;
|
| -
|
| - const Generic(VmCommandCode code, this.payload)
|
| - : super(code);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - // We do not know who many commands to expect as a response.
|
| - int get numberOfResponsesExpected => null;
|
| -
|
| - String valuesToString() => "$payload";
|
| -
|
| - String toString() => "Generic($code, ${valuesToString()})";
|
| -}
|
| -
|
| -class NewMap extends VmCommand {
|
| - final MapId map;
|
| -
|
| - const NewMap(this.map)
|
| - : super(VmCommandCode.NewMap);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(map.index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$map";
|
| -}
|
| -
|
| -class DeleteMap extends VmCommand {
|
| - final MapId map;
|
| -
|
| - const DeleteMap(this.map)
|
| - : super(VmCommandCode.DeleteMap);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(map.index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$map";
|
| -}
|
| -
|
| -abstract class MapAccess extends VmCommand {
|
| - final MapId map;
|
| - final int index;
|
| -
|
| - const MapAccess(this.map, this.index, VmCommandCode code)
|
| - : super(code);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(map.index)
|
| - ..addUint64(index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -}
|
| -
|
| -class PopToMap extends MapAccess {
|
| - const PopToMap(MapId map, int index)
|
| - : super(map, index, VmCommandCode.PopToMap);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$map, $index";
|
| -}
|
| -
|
| -class PushFromMap extends MapAccess {
|
| - const PushFromMap(MapId map, int index)
|
| - : super(map, index, VmCommandCode.PushFromMap);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$map, $index";
|
| -}
|
| -
|
| -class RemoveFromMap extends MapAccess {
|
| - const RemoveFromMap(MapId map, int index)
|
| - : super(map, index, VmCommandCode.RemoveFromMap);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$map, $index";
|
| -}
|
| -
|
| -class Drop extends VmCommand {
|
| - final int value;
|
| -
|
| - const Drop(this.value)
|
| - : super(VmCommandCode.Drop);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(value)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class PushNull extends VmCommand {
|
| - const PushNull()
|
| - : super(VmCommandCode.PushNull);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class PushBoolean extends VmCommand {
|
| - final bool value;
|
| -
|
| - const PushBoolean(this.value)
|
| - : super(VmCommandCode.PushBoolean);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint8(value ? 1 : 0)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => '$value';
|
| -}
|
| -
|
| -class BytecodeSink implements Sink<List<int>> {
|
| - List<int> bytes = <int>[];
|
| -
|
| - void add(List<int> data) {
|
| - bytes.addAll(data);
|
| - }
|
| -
|
| - void close() {
|
| - }
|
| -}
|
| -
|
| -class PushNewFunction extends VmCommand {
|
| - final int arity;
|
| -
|
| - final int literals;
|
| -
|
| - final List<Bytecode> bytecodes;
|
| -
|
| - final List<int> catchRanges;
|
| -
|
| - const PushNewFunction(
|
| - this.arity,
|
| - this.literals,
|
| - this.bytecodes,
|
| - this.catchRanges)
|
| - : super(VmCommandCode.PushNewFunction);
|
| -
|
| - List<int> computeBytes(List<Bytecode> bytecodes) {
|
| - BytecodeSink sink = new BytecodeSink();
|
| - for (Bytecode bytecode in bytecodes) {
|
| - bytecode.addTo(sink);
|
| - }
|
| - return sink.bytes;
|
| - }
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> bytes = computeBytes(bytecodes);
|
| - int size = bytes.length;
|
| - if (catchRanges.isNotEmpty) size += 4 + catchRanges.length * 4;
|
| - buffer
|
| - ..addUint32(arity)
|
| - ..addUint32(literals)
|
| - ..addUint32(size)
|
| - ..addUint8List(bytes);
|
| - if (catchRanges.isNotEmpty) {
|
| - buffer.addUint32(catchRanges.length ~/ 3);
|
| - catchRanges.forEach(buffer.addUint32);
|
| - }
|
| - buffer.sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$arity, $literals, $bytecodes, $catchRanges";
|
| -}
|
| -
|
| -class PushNewInitializer extends VmCommand {
|
| - const PushNewInitializer()
|
| - : super(VmCommandCode.PushNewInitializer);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ChangeStatics extends VmCommand {
|
| - final int count;
|
| -
|
| - const ChangeStatics(this.count)
|
| - : super(VmCommandCode.ChangeStatics);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(count)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$count";
|
| -}
|
| -
|
| -class ChangeMethodLiteral extends VmCommand {
|
| - final int index;
|
| -
|
| - const ChangeMethodLiteral(this.index)
|
| - : super(VmCommandCode.ChangeMethodLiteral);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$index";
|
| -}
|
| -
|
| -class ChangeMethodTable extends VmCommand {
|
| - final int count;
|
| -
|
| - const ChangeMethodTable(this.count)
|
| - : super(VmCommandCode.ChangeMethodTable);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(count)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$count";
|
| -}
|
| -
|
| -class ChangeSuperClass extends VmCommand {
|
| - const ChangeSuperClass()
|
| - : super(VmCommandCode.ChangeSuperClass);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ChangeSchemas extends VmCommand {
|
| - final int count;
|
| - final int delta;
|
| -
|
| - const ChangeSchemas(this.count, this.delta)
|
| - : super(VmCommandCode.ChangeSchemas);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(count)
|
| - ..addUint32(delta)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => '$count, $delta';
|
| -}
|
| -
|
| -class PrepareForChanges extends VmCommand {
|
| - const PrepareForChanges()
|
| - : super(VmCommandCode.PrepareForChanges);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class CommitChanges extends VmCommand {
|
| - final int count;
|
| -
|
| - const CommitChanges(this.count)
|
| - : super(VmCommandCode.CommitChanges);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(count)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with [CommitChangesResult].
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => '$count';
|
| -}
|
| -
|
| -class CommitChangesResult extends VmCommand {
|
| - final bool successful;
|
| - final String message;
|
| -
|
| - const CommitChangesResult(this.successful, this.message)
|
| - : super(VmCommandCode.CommitChangesResult);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addBool(successful)
|
| - ..addAsciiString(message)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => 'success: $successful, message: $message';
|
| -}
|
| -
|
| -class UncaughtException extends VmCommand {
|
| - const UncaughtException()
|
| - : super(VmCommandCode.UncaughtException);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class MapLookup extends VmCommand {
|
| - final MapId mapId;
|
| -
|
| - const MapLookup(this.mapId)
|
| - : super(VmCommandCode.MapLookup);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(mapId.index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with [ObjectId].
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$mapId";
|
| -}
|
| -
|
| -class ObjectId extends VmCommand {
|
| - final int id;
|
| -
|
| - const ObjectId(this.id)
|
| - : super(VmCommandCode.ObjectId);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint64(id)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$id";
|
| -}
|
| -
|
| -class PushNewArray extends VmCommand {
|
| - final int length;
|
| -
|
| - const PushNewArray(this.length)
|
| - : super(VmCommandCode.PushNewArray);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(length)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => '$length';
|
| -}
|
| -
|
| -class PushNewInteger extends VmCommand {
|
| - final int value;
|
| -
|
| - const PushNewInteger(this.value)
|
| - : super(VmCommandCode.PushNewInteger);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint64(value)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class PushNewBigInteger extends VmCommand {
|
| - final bool negative;
|
| - final List<int> parts;
|
| - final MapId classMap;
|
| - final int bigintClassId;
|
| - final int uint32DigitsClassId;
|
| -
|
| - const PushNewBigInteger(this.negative,
|
| - this.parts,
|
| - this.classMap,
|
| - this.bigintClassId,
|
| - this.uint32DigitsClassId)
|
| - : super(VmCommandCode.PushNewBigInteger);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint8(negative ? 1 : 0)
|
| - ..addUint32(parts.length)
|
| - ..addUint32(classMap.index)
|
| - ..addUint64(bigintClassId)
|
| - ..addUint64(uint32DigitsClassId);
|
| - parts.forEach((part) => buffer.addUint32(part));
|
| - buffer.sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() {
|
| - return "$negative, $parts, $classMap, $bigintClassId, $uint32DigitsClassId";
|
| - }
|
| -}
|
| -
|
| -class PushNewDouble extends VmCommand {
|
| - final double value;
|
| -
|
| - const PushNewDouble(this.value)
|
| - : super(VmCommandCode.PushNewDouble);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addDouble(value)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class ProcessSpawnForMain extends VmCommand {
|
| - const ProcessSpawnForMain()
|
| - : super(VmCommandCode.ProcessSpawnForMain);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessDebugInterrupt extends VmCommand {
|
| - const ProcessDebugInterrupt()
|
| - : super(VmCommandCode.ProcessDebugInterrupt);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessRun extends VmCommand {
|
| - const ProcessRun()
|
| - : super(VmCommandCode.ProcessRun);
|
| -
|
| - /// It depends whether the connection is a "debugging session" or a
|
| - /// "normal session". For a normal session, we do not expect to get any
|
| - /// response, but for a debugging session we expect this to result in any of
|
| - /// the responses noted further up at [Command.numberOfResponsesExpected].
|
| - int get numberOfResponsesExpected => null;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessSetBreakpoint extends VmCommand {
|
| - final int value;
|
| -
|
| - const ProcessSetBreakpoint(this.value)
|
| - : super(VmCommandCode.ProcessSetBreakpoint);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(value)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with [ProcessSetBreakpoint]
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class ProcessDeleteBreakpoint extends VmCommand {
|
| - final int id;
|
| -
|
| - const ProcessDeleteBreakpoint(this.id)
|
| - : super(VmCommandCode.ProcessDeleteBreakpoint);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(id)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with [ProcessDeleteBreakpoint]
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$id";
|
| -}
|
| -
|
| -class ProcessBacktrace extends VmCommand {
|
| - final int frames;
|
| - final List<int> functionIds;
|
| - final List<int> bytecodeIndices;
|
| -
|
| - ProcessBacktrace(int frameCount)
|
| - : frames = frameCount,
|
| - functionIds = new List<int>(frameCount),
|
| - bytecodeIndices = new List<int>(frameCount),
|
| - super(VmCommandCode.ProcessBacktrace);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - throw new UnimplementedError();
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$frames, $functionIds, $bytecodeIndices";
|
| -}
|
| -
|
| -class ProcessBacktraceRequest extends VmCommand {
|
| - final int processId;
|
| -
|
| - // TODO(zerny): Make the process id non-optional and non-negative.
|
| - const ProcessBacktraceRequest([this.processId = -1])
|
| - : super(VmCommandCode.ProcessBacktraceRequest);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(processId + 1)
|
| - ..sendOn(sink, code);
|
| - }
|
| - /// Peer will respond with [ProcessBacktrace]
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$processId";
|
| -}
|
| -
|
| -class ProcessFiberBacktraceRequest extends VmCommand {
|
| - final int fiber;
|
| -
|
| - const ProcessFiberBacktraceRequest(this.fiber)
|
| - : super(VmCommandCode.ProcessFiberBacktraceRequest);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint64(fiber)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with [ProcessBacktrace]
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$fiber";
|
| -}
|
| -
|
| -class ProcessUncaughtExceptionRequest extends VmCommand {
|
| - const ProcessUncaughtExceptionRequest()
|
| - : super(VmCommandCode.ProcessUncaughtExceptionRequest);
|
| -
|
| - /// Peer will respond with a [DartValue] or [InstanceStructure] and a number
|
| - /// of [DartValue]s.
|
| - ///
|
| - /// The number of responses is not fixed.
|
| - int get numberOfResponsesExpected => null;
|
| -
|
| - String valuesToString() => '';
|
| -}
|
| -
|
| -class ProcessBreakpoint extends VmCommand {
|
| - final int breakpointId;
|
| - final int functionId;
|
| - final int bytecodeIndex;
|
| -
|
| - const ProcessBreakpoint(
|
| - this.breakpointId, this.functionId, this.bytecodeIndex)
|
| - : super(VmCommandCode.ProcessBreakpoint);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - throw new UnimplementedError();
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$breakpointId, $functionId, $bytecodeIndex";
|
| -}
|
| -
|
| -class ProcessLocal extends VmCommand {
|
| - final int frame;
|
| - final int slot;
|
| -
|
| - const ProcessLocal(this.frame, this.slot)
|
| - : super(VmCommandCode.ProcessLocal);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(frame)
|
| - ..addUint32(slot)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with a [DartValue].
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$frame, $slot";
|
| -}
|
| -
|
| -class ProcessLocalStructure extends VmCommand {
|
| - final int frame;
|
| - final int slot;
|
| -
|
| - const ProcessLocalStructure(this.frame, this.slot)
|
| - : super(VmCommandCode.ProcessLocalStructure);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(frame)
|
| - ..addUint32(slot)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will respond with a [DartValue] or [InstanceStructure] and a number
|
| - /// of [DartValue]s.
|
| - ///
|
| - /// The number of responses is not fixed.
|
| - int get numberOfResponsesExpected => null;
|
| -
|
| - String valuesToString() => "$frame, $slot";
|
| -}
|
| -
|
| -class ProcessRestartFrame extends VmCommand {
|
| - final int frame;
|
| -
|
| - const ProcessRestartFrame(this.frame)
|
| - : super(VmCommandCode.ProcessRestartFrame);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(frame)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will continue program -- see [Command.numberOfResponsesExpected] for
|
| - /// possible responses.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$frame";
|
| -}
|
| -
|
| -class ProcessStep extends VmCommand {
|
| - const ProcessStep()
|
| - : super(VmCommandCode.ProcessStep);
|
| -
|
| - /// Peer will continue program -- see [Command.numberOfResponsesExpected] for
|
| - /// possible responses.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessStepOver extends VmCommand {
|
| - const ProcessStepOver()
|
| - : super(VmCommandCode.ProcessStepOver);
|
| -
|
| - /// Peer will respond with a [ProcessSetBreakpoint] response and continues
|
| - /// the program -- see [Command.numberOfResponsesExpected] for possible
|
| - /// responses.
|
| - int get numberOfResponsesExpected => 2;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessStepOut extends VmCommand {
|
| - const ProcessStepOut()
|
| - : super(VmCommandCode.ProcessStepOut);
|
| -
|
| - /// Peer will respond with a [ProcessSetBreakpoint] response and continues
|
| - /// the program -- see [Command.numberOfResponsesExpected] for possible
|
| - /// responses.
|
| - int get numberOfResponsesExpected => 2;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessStepTo extends VmCommand {
|
| - final int functionId;
|
| - final int bcp;
|
| -
|
| - const ProcessStepTo(this.functionId, this.bcp)
|
| - : super(VmCommandCode.ProcessStepTo);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint64(functionId)
|
| - ..addUint32(bcp)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - /// Peer will continue program -- see [Command.numberOfResponsesExpected] for
|
| - /// possible responses.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "$functionId, $bcp";
|
| -}
|
| -
|
| -class ProcessContinue extends VmCommand {
|
| - const ProcessContinue()
|
| - : super(VmCommandCode.ProcessContinue);
|
| -
|
| - /// Peer will continue program -- see [Command.numberOfResponsesExpected] for
|
| - /// possible responses.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessTerminated extends VmCommand {
|
| - const ProcessTerminated()
|
| - : super(VmCommandCode.ProcessTerminated);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessCompileTimeError extends VmCommand {
|
| - const ProcessCompileTimeError()
|
| - : super(VmCommandCode.ProcessCompileTimeError);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessAddFibersToMap extends VmCommand {
|
| - const ProcessAddFibersToMap()
|
| - : super(VmCommandCode.ProcessAddFibersToMap);
|
| -
|
| - /// The peer will respond with [ProcessNumberOfStacks].
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessNumberOfStacks extends VmCommand {
|
| - final int value;
|
| -
|
| - const ProcessNumberOfStacks(this.value)
|
| - : super(VmCommandCode.ProcessNumberOfStacks);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class ProcessGetProcessIds extends VmCommand {
|
| - const ProcessGetProcessIds()
|
| - : super(VmCommandCode.ProcessGetProcessIds);
|
| -
|
| - /// The peer will respond with [ProcessGetProcessIdsResult].
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class ProcessGetProcessIdsResult extends VmCommand {
|
| - final List<int> ids;
|
| -
|
| - const ProcessGetProcessIdsResult(this.ids)
|
| - : super(VmCommandCode.ProcessGetProcessIdsResult);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$ids";
|
| -}
|
| -
|
| -class SessionEnd extends VmCommand {
|
| - const SessionEnd()
|
| - : super(VmCommandCode.SessionEnd);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class Debugging extends VmCommand {
|
| - const Debugging()
|
| - : super(VmCommandCode.Debugging);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint32(MapId.methods.index)
|
| - ..addUint32(MapId.classes.index)
|
| - ..addUint32(MapId.fibers.index)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class DisableStandardOutput extends VmCommand {
|
| - const DisableStandardOutput()
|
| - : super(VmCommandCode.DisableStandardOutput);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "";
|
| -}
|
| -
|
| -class StdoutData extends VmCommand {
|
| - final Uint8List value;
|
| -
|
| - const StdoutData(this.value)
|
| - : super(VmCommandCode.StdoutData);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class StderrData extends VmCommand {
|
| - final Uint8List value;
|
| -
|
| - const StderrData(this.value)
|
| - : super(VmCommandCode.StderrData);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$value";
|
| -}
|
| -
|
| -class WriteSnapshot extends VmCommand {
|
| - final String value;
|
| -
|
| - const WriteSnapshot(this.value)
|
| - : super(VmCommandCode.WriteSnapshot);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - List<int> payload = UTF8.encode(value).toList()..add(0);
|
| - buffer
|
| - ..addUint32(payload.length)
|
| - ..addUint8List(payload)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - // Response is a [WriteSnapshotResult] message.
|
| - int get numberOfResponsesExpected => 1;
|
| -
|
| - String valuesToString() => "'$value'";
|
| -}
|
| -
|
| -// Contains two tables with information about function/class offsets in the
|
| -// program heap (when loaded from a snapshot).
|
| -//
|
| -// Both offset tables have the form:
|
| -// [
|
| -// [class/function id1, config{1,2,3,4}-offset]
|
| -// [class/function id2, ...],
|
| -// ...,
|
| -// ]
|
| -// Each id/offset is represented as a 4 byte integer (which may be -1).
|
| -//
|
| -// All offsets are relative to the start of the program heap if a snapshot was
|
| -// loaded into memory.
|
| -//
|
| -// The offsets are different for our 4 different configurations:
|
| -//
|
| -// config1: "64 bit double"
|
| -// config2: "64 bit float"
|
| -// config3: "32 bit double"
|
| -// config4: "32 bit float"
|
| -//
|
| -class WriteSnapshotResult extends VmCommand {
|
| - final Int32List classOffsetTable;
|
| - final Int32List functionOffsetTable;
|
| - final int hashtag;
|
| -
|
| - const WriteSnapshotResult(this.classOffsetTable,
|
| - this.functionOffsetTable,
|
| - this.hashtag)
|
| - : super(VmCommandCode.WriteSnapshotResult);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - throw new UnimplementedError();
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$classOffsetTable, $functionOffsetTable";
|
| -}
|
| -
|
| -class InstanceStructure extends VmCommand {
|
| - final int classId;
|
| - final int fields;
|
| -
|
| - const InstanceStructure(this.classId, this.fields)
|
| - : super(VmCommandCode.InstanceStructure);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - throw new UnimplementedError();
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$classId, $fields";
|
| -}
|
| -
|
| -abstract class DartValue extends VmCommand {
|
| - const DartValue(VmCommandCode code)
|
| - : super(code);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - throw new UnimplementedError();
|
| - }
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => dartToString();
|
| -
|
| - String dartToString();
|
| -}
|
| -
|
| -class Instance extends DartValue {
|
| - final int classId;
|
| -
|
| - const Instance(this.classId)
|
| - : super(VmCommandCode.Instance);
|
| -
|
| - String valuesToString() => "$classId";
|
| -
|
| - String dartToString() => "Instance of $classId";
|
| -}
|
| -
|
| -class ClassValue extends DartValue {
|
| - final int classId;
|
| -
|
| - const ClassValue(this.classId)
|
| - : super(VmCommandCode.Class);
|
| -
|
| - String valuesToString() => "$classId";
|
| -
|
| - String dartToString() => "Class with id $classId";
|
| -}
|
| -
|
| -class Integer extends DartValue {
|
| - final int value;
|
| -
|
| - const Integer(this.value)
|
| - : super(VmCommandCode.Integer);
|
| -
|
| - void internalAddTo(
|
| - Sink<List<int>> sink, CommandBuffer<VmCommandCode> buffer) {
|
| - buffer
|
| - ..addUint64(value)
|
| - ..sendOn(sink, code);
|
| - }
|
| -
|
| - String dartToString() => '$value';
|
| -}
|
| -
|
| -class Double extends DartValue {
|
| - final double value;
|
| -
|
| - const Double(this.value)
|
| - : super(VmCommandCode.Double);
|
| -
|
| - String dartToString() => '$value';
|
| -}
|
| -
|
| -class Boolean extends DartValue {
|
| - final bool value;
|
| -
|
| - const Boolean(this.value)
|
| - : super(VmCommandCode.Boolean);
|
| -
|
| - String dartToString() => '$value';
|
| -}
|
| -
|
| -class NullValue extends DartValue {
|
| - const NullValue()
|
| - : super(VmCommandCode.Null);
|
| -
|
| - String valuesToString() => '';
|
| -
|
| - String dartToString() => 'null';
|
| -}
|
| -
|
| -class StringValue extends DartValue {
|
| - final String value;
|
| -
|
| - const StringValue(this.value)
|
| - : super(VmCommandCode.String);
|
| -
|
| - String dartToString() => "'$value'";
|
| -}
|
| -
|
| -class ConnectionError extends VmCommand {
|
| - final error;
|
| -
|
| - final StackTrace trace;
|
| -
|
| - const ConnectionError(this.error, this.trace)
|
| - : super(VmCommandCode.ConnectionError);
|
| -
|
| - int get numberOfResponsesExpected => 0;
|
| -
|
| - String valuesToString() => "$error, $trace";
|
| -}
|
| -
|
| -// Any change in [VmCommandCode] must also be done in [Opcode] in
|
| -// src/shared/connection.h.
|
| -enum VmCommandCode {
|
| - // DO NOT MOVE! The handshake opcodes needs to be the first one as
|
| - // it is used to verify the compiler and vm versions.
|
| - HandShake,
|
| - HandShakeResult,
|
| -
|
| - // Session opcodes.
|
| - // TODO(ahe): Understand what "Session opcodes" mean and turn it into a
|
| - // proper documentation comment (the comment was copied from
|
| - // src/bridge/opcodes.dart).
|
| - ConnectionError,
|
| - CompilerError,
|
| - SessionEnd,
|
| - Debugging,
|
| - DisableStandardOutput,
|
| - StdoutData,
|
| - StderrData,
|
| -
|
| - ProcessDebugInterrupt,
|
| - ProcessSpawnForMain,
|
| - ProcessRun,
|
| - ProcessSetBreakpoint,
|
| - ProcessDeleteBreakpoint,
|
| - ProcessStep,
|
| - ProcessStepOver,
|
| - ProcessStepOut,
|
| - ProcessStepTo,
|
| - ProcessContinue,
|
| - ProcessBacktraceRequest,
|
| - ProcessFiberBacktraceRequest,
|
| - ProcessBacktrace,
|
| - ProcessUncaughtExceptionRequest,
|
| - ProcessBreakpoint,
|
| - ProcessLocal,
|
| - ProcessLocalStructure,
|
| - ProcessRestartFrame,
|
| - ProcessTerminated,
|
| - ProcessCompileTimeError,
|
| - ProcessAddFibersToMap,
|
| - ProcessNumberOfStacks,
|
| -
|
| - ProcessGetProcessIds,
|
| - ProcessGetProcessIdsResult,
|
| -
|
| - WriteSnapshot,
|
| - WriteSnapshotResult,
|
| - CollectGarbage,
|
| -
|
| - NewMap,
|
| - DeleteMap,
|
| - PushFromMap,
|
| - PopToMap,
|
| - RemoveFromMap,
|
| -
|
| - Dup,
|
| - Drop,
|
| - PushNull,
|
| - PushBoolean,
|
| - PushNewInteger,
|
| - PushNewBigInteger,
|
| - PushNewDouble,
|
| - PushNewOneByteString,
|
| - PushNewTwoByteString,
|
| - PushNewInstance,
|
| - PushNewArray,
|
| - PushNewFunction,
|
| - PushNewInitializer,
|
| - PushNewClass,
|
| - PushBuiltinClass,
|
| - PushConstantList,
|
| - PushConstantByteList,
|
| - PushConstantMap,
|
| -
|
| - ChangeSuperClass,
|
| - ChangeMethodTable,
|
| - ChangeMethodLiteral,
|
| - ChangeStatics,
|
| - ChangeSchemas,
|
| -
|
| - PrepareForChanges,
|
| - CommitChanges,
|
| - CommitChangesResult,
|
| - DiscardChange,
|
| -
|
| - UncaughtException,
|
| -
|
| - MapLookup,
|
| - ObjectId,
|
| -
|
| - Integer,
|
| - Boolean,
|
| - Null,
|
| - Double,
|
| - String,
|
| - Instance,
|
| - Class,
|
| - InstanceStructure
|
| -}
|
| -
|
| -enum MapId {
|
| - methods,
|
| - classes,
|
| - constants,
|
| - fibers,
|
| -}
|
|
|