mirror of
https://github.com/dart-lang/sdk
synced 2024-10-02 23:59:16 +00:00
Revert "Reland "[ Service / dart:isolate ] Added getPorts RPC and 'debugName' optional""
This reverts commita5d4511847
. Reason for revert: Failure in test standalone_2/io/unix_socket_test on reload bots, see https://github.com/dart-lang/sdk/issues/43952. Original change's description: > Reland "[ Service / dart:isolate ] Added getPorts RPC and 'debugName' optional" > > This reverts commitb71477a2a6
. > > Change-Id: Iba11c41e43ec8c08b48147bbd07b71a151c3d1e6 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/169243 > Reviewed-by: Ryan Macnak <rmacnak@google.com> > Commit-Queue: Ben Konyi <bkonyi@google.com> TBR=bkonyi@google.com,rmacnak@google.com Change-Id: I2ac1f18fef03d29bf74df4f49a91406a26f1ce26 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/169323 Reviewed-by: Tess Strickland <sstrickl@google.com> Commit-Queue: Tess Strickland <sstrickl@google.com>
This commit is contained in:
parent
5a3e7bf18f
commit
f78c40e32a
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -4,14 +4,8 @@
|
|||
|
||||
#### `dart:io`
|
||||
|
||||
* `HttpRequest` will now correctly follow HTTP 308 redirects
|
||||
(`HttpStatus.permanentRedirect`).
|
||||
|
||||
#### `dart:isolate`
|
||||
|
||||
* Added `debugName` positional parameter to `ReceivePort` and `RawReceivePort`
|
||||
constructors, a name which can be associated with the port and displayed in
|
||||
tooling.
|
||||
* `HttpRequest` will now correctly follow HTTP 308 redirects
|
||||
(`HttpStatus.permanentRedirect`).
|
||||
|
||||
### Dart VM
|
||||
|
||||
|
|
|
@ -1,12 +1,4 @@
|
|||
# Changelog
|
||||
|
||||
## 5.4.0
|
||||
- Update to version `3.41.0` of the spec.
|
||||
- Added `PortList` class.
|
||||
- Added `getPorts` RPC.
|
||||
- Added optional properties `portId`, `allocationLocation`, and `debugName` to
|
||||
`InstanceRef` and `Instance`.
|
||||
|
||||
## 5.3.1
|
||||
- Rename `State` class to `_State` to avoid class name conflicts with Flutter.
|
||||
|
||||
|
@ -14,6 +6,7 @@
|
|||
- Added support for `dart:io` extensions version 1.5.
|
||||
- Added combination getter/setter `socketProfilingEnabled`.
|
||||
- Deprecated `startSocketProfiling` and `pauseSocketProfiling`.
|
||||
- Added support for `dart:io` extensions version 1.4.
|
||||
- Update to version `3.40.0` of the spec.
|
||||
- Added `IsolateFlag` class.
|
||||
- Added `isolateFlags` property to `Isolate`.
|
||||
|
|
|
@ -192,7 +192,6 @@ String assertInstanceKind(String obj) {
|
|||
if (obj == "MirrorReference") return obj;
|
||||
if (obj == "Null") return obj;
|
||||
if (obj == "PlainInstance") return obj;
|
||||
if (obj == "ReceivePort") return obj;
|
||||
if (obj == "RegExp") return obj;
|
||||
if (obj == "StackTrace") return obj;
|
||||
if (obj == "String") return obj;
|
||||
|
@ -913,13 +912,6 @@ vms.Obj assertObj(vms.Obj obj) {
|
|||
return obj;
|
||||
}
|
||||
|
||||
vms.PortList assertPortList(vms.PortList obj) {
|
||||
assertNotNull(obj);
|
||||
assertString(obj.type);
|
||||
assertListOfInstanceRef(obj.ports);
|
||||
return obj;
|
||||
}
|
||||
|
||||
vms.ProfileFunction assertProfileFunction(vms.ProfileFunction obj) {
|
||||
assertNotNull(obj);
|
||||
assertString(obj.kind);
|
||||
|
|
2
pkg/vm_service/java/.gitignore
vendored
2
pkg/vm_service/java/.gitignore
vendored
|
@ -25,7 +25,6 @@ src/org/dartlang/vm/service/consumer/GetStackConsumer.java
|
|||
src/org/dartlang/vm/service/consumer/InvokeConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/KillConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/PauseConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/PortListConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/ProcessMemoryUsageConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/ProtocolListConsumer.java
|
||||
src/org/dartlang/vm/service/consumer/ReloadSourcesConsumer.java
|
||||
|
@ -96,7 +95,6 @@ src/org/dartlang/vm/service/element/Null.java
|
|||
src/org/dartlang/vm/service/element/NullRef.java
|
||||
src/org/dartlang/vm/service/element/Obj.java
|
||||
src/org/dartlang/vm/service/element/ObjRef.java
|
||||
src/org/dartlang/vm/service/element/PortList.java
|
||||
src/org/dartlang/vm/service/element/ProcessMemoryItem.java
|
||||
src/org/dartlang/vm/service/element/ProcessMemoryUsage.java
|
||||
src/org/dartlang/vm/service/element/ProfileFunction.java
|
||||
|
|
|
@ -1 +1 @@
|
|||
version=3.41
|
||||
version=3.40
|
||||
|
|
|
@ -28,7 +28,7 @@ export 'snapshot_graph.dart'
|
|||
HeapSnapshotObjectNoData,
|
||||
HeapSnapshotObjectNullData;
|
||||
|
||||
const String vmServiceVersion = '3.41.0';
|
||||
const String vmServiceVersion = '3.40.0';
|
||||
|
||||
/// @optional
|
||||
const String optional = 'optional';
|
||||
|
@ -157,7 +157,6 @@ Map<String, Function> _typeFactories = {
|
|||
'Null': NullVal.parse,
|
||||
'@Object': ObjRef.parse,
|
||||
'Object': Obj.parse,
|
||||
'PortList': PortList.parse,
|
||||
'ProfileFunction': ProfileFunction.parse,
|
||||
'ProtocolList': ProtocolList.parse,
|
||||
'Protocol': Protocol.parse,
|
||||
|
@ -210,7 +209,6 @@ Map<String, List<String>> _methodReturnTypes = {
|
|||
'getIsolateGroupMemoryUsage': const ['MemoryUsage'],
|
||||
'getScripts': const ['ScriptList'],
|
||||
'getObject': const ['Obj'],
|
||||
'getPorts': const ['PortList'],
|
||||
'getRetainingPath': const ['RetainingPath'],
|
||||
'getProcessMemoryUsage': const ['ProcessMemoryUsage'],
|
||||
'getStack': const ['Stack'],
|
||||
|
@ -690,12 +688,6 @@ abstract class VmServiceInterface {
|
|||
int count,
|
||||
});
|
||||
|
||||
/// The `getPorts` RPC is used to retrieve the list of `ReceivePort` instances
|
||||
/// for a given isolate.
|
||||
///
|
||||
/// See [PortList].
|
||||
Future<PortList> getPorts(String isolateId);
|
||||
|
||||
/// The `getRetainingPath` RPC is used to lookup a path from an object
|
||||
/// specified by `targetId` to a GC root (i.e., the object which is preventing
|
||||
/// this object from being garbage collected).
|
||||
|
@ -1326,11 +1318,6 @@ class VmServerConnection {
|
|||
count: params['count'],
|
||||
);
|
||||
break;
|
||||
case 'getPorts':
|
||||
response = await _serviceImplementation.getPorts(
|
||||
params['isolateId'],
|
||||
);
|
||||
break;
|
||||
case 'getRetainingPath':
|
||||
response = await _serviceImplementation.getRetainingPath(
|
||||
params['isolateId'],
|
||||
|
@ -1783,10 +1770,6 @@ class VmService implements VmServiceInterface {
|
|||
if (count != null) 'count': count,
|
||||
});
|
||||
|
||||
@override
|
||||
Future<PortList> getPorts(String isolateId) =>
|
||||
_call('getPorts', {'isolateId': isolateId});
|
||||
|
||||
@override
|
||||
Future<RetainingPath> getRetainingPath(
|
||||
String isolateId, String targetId, int limit) =>
|
||||
|
@ -2449,9 +2432,6 @@ class InstanceKind {
|
|||
|
||||
/// An instance of the Dart class BoundedType.
|
||||
static const String kBoundedType = 'BoundedType';
|
||||
|
||||
/// An instance of the Dart class ReceivePort.
|
||||
static const String kReceivePort = 'ReceivePort';
|
||||
}
|
||||
|
||||
/// A `SentinelKind` is used to distinguish different kinds of `Sentinel`
|
||||
|
@ -4259,27 +4239,6 @@ class InstanceRef extends ObjRef {
|
|||
@optional
|
||||
ContextRef closureContext;
|
||||
|
||||
/// The port ID for a ReceivePort.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
int portId;
|
||||
|
||||
/// The stack trace associated with the allocation of a ReceivePort.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
InstanceRef allocationLocation;
|
||||
|
||||
/// A name associated with a ReceivePort used for debugging purposes.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
String debugName;
|
||||
|
||||
InstanceRef({
|
||||
@required this.kind,
|
||||
@required this.classRef,
|
||||
|
@ -4293,9 +4252,6 @@ class InstanceRef extends ObjRef {
|
|||
this.pattern,
|
||||
this.closureFunction,
|
||||
this.closureContext,
|
||||
this.portId,
|
||||
this.allocationLocation,
|
||||
this.debugName,
|
||||
}) : super(id: id);
|
||||
|
||||
InstanceRef._fromJson(Map<String, dynamic> json) : super._fromJson(json) {
|
||||
|
@ -4313,10 +4269,6 @@ class InstanceRef extends ObjRef {
|
|||
createServiceObject(json['closureFunction'], const ['FuncRef']);
|
||||
closureContext =
|
||||
createServiceObject(json['closureContext'], const ['ContextRef']);
|
||||
portId = json['portId'];
|
||||
allocationLocation =
|
||||
createServiceObject(json['allocationLocation'], const ['InstanceRef']);
|
||||
debugName = json['debugName'];
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -4336,9 +4288,6 @@ class InstanceRef extends ObjRef {
|
|||
_setIfNotNull(json, 'pattern', pattern?.toJson());
|
||||
_setIfNotNull(json, 'closureFunction', closureFunction?.toJson());
|
||||
_setIfNotNull(json, 'closureContext', closureContext?.toJson());
|
||||
_setIfNotNull(json, 'portId', portId);
|
||||
_setIfNotNull(json, 'allocationLocation', allocationLocation?.toJson());
|
||||
_setIfNotNull(json, 'debugName', debugName);
|
||||
return json;
|
||||
}
|
||||
|
||||
|
@ -4369,7 +4318,6 @@ class Instance extends Obj implements InstanceRef {
|
|||
/// - Double (suitable for passing to Double.parse())
|
||||
/// - Int (suitable for passing to int.parse())
|
||||
/// - String (value may be truncated)
|
||||
/// - StackTrace
|
||||
@optional
|
||||
String valueAsString;
|
||||
|
||||
|
@ -4606,27 +4554,6 @@ class Instance extends Obj implements InstanceRef {
|
|||
@optional
|
||||
InstanceRef bound;
|
||||
|
||||
/// The port ID for a ReceivePort.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
int portId;
|
||||
|
||||
/// The stack trace associated with the allocation of a ReceivePort.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
InstanceRef allocationLocation;
|
||||
|
||||
/// A name associated with a ReceivePort used for debugging purposes.
|
||||
///
|
||||
/// Provided for instance kinds:
|
||||
/// - ReceivePort
|
||||
@optional
|
||||
String debugName;
|
||||
|
||||
Instance({
|
||||
@required this.kind,
|
||||
@required this.classRef,
|
||||
|
@ -4655,9 +4582,6 @@ class Instance extends Obj implements InstanceRef {
|
|||
this.parameterIndex,
|
||||
this.targetType,
|
||||
this.bound,
|
||||
this.portId,
|
||||
this.allocationLocation,
|
||||
this.debugName,
|
||||
}) : super(id: id);
|
||||
|
||||
Instance._fromJson(Map<String, dynamic> json) : super._fromJson(json) {
|
||||
|
@ -4703,10 +4627,6 @@ class Instance extends Obj implements InstanceRef {
|
|||
parameterIndex = json['parameterIndex'];
|
||||
targetType = createServiceObject(json['targetType'], const ['InstanceRef']);
|
||||
bound = createServiceObject(json['bound'], const ['InstanceRef']);
|
||||
portId = json['portId'];
|
||||
allocationLocation =
|
||||
createServiceObject(json['allocationLocation'], const ['InstanceRef']);
|
||||
debugName = json['debugName'];
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -4743,9 +4663,6 @@ class Instance extends Obj implements InstanceRef {
|
|||
_setIfNotNull(json, 'parameterIndex', parameterIndex);
|
||||
_setIfNotNull(json, 'targetType', targetType?.toJson());
|
||||
_setIfNotNull(json, 'bound', bound?.toJson());
|
||||
_setIfNotNull(json, 'portId', portId);
|
||||
_setIfNotNull(json, 'allocationLocation', allocationLocation?.toJson());
|
||||
_setIfNotNull(json, 'debugName', debugName);
|
||||
return json;
|
||||
}
|
||||
|
||||
|
@ -5826,37 +5743,6 @@ class Obj extends Response implements ObjRef {
|
|||
String toString() => '[Obj type: ${type}, id: ${id}]';
|
||||
}
|
||||
|
||||
/// A `PortList` contains a list of ports associated with some isolate.
|
||||
///
|
||||
/// See [getPort].
|
||||
class PortList extends Response {
|
||||
static PortList parse(Map<String, dynamic> json) =>
|
||||
json == null ? null : PortList._fromJson(json);
|
||||
|
||||
List<InstanceRef> ports;
|
||||
|
||||
PortList({
|
||||
@required this.ports,
|
||||
});
|
||||
|
||||
PortList._fromJson(Map<String, dynamic> json) : super._fromJson(json) {
|
||||
ports = List<InstanceRef>.from(
|
||||
createServiceObject(json['ports'], const ['InstanceRef']) ?? []);
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
var json = <String, dynamic>{};
|
||||
json['type'] = 'PortList';
|
||||
json.addAll({
|
||||
'ports': ports.map((f) => f.toJson()).toList(),
|
||||
});
|
||||
return json;
|
||||
}
|
||||
|
||||
String toString() => '[PortList type: ${type}, ports: ${ports}]';
|
||||
}
|
||||
|
||||
/// A `ProfileFunction` contains profiling information about a Dart or native
|
||||
/// function.
|
||||
///
|
||||
|
|
|
@ -2,7 +2,7 @@ name: vm_service
|
|||
description: >-
|
||||
A library to communicate with a service implementing the Dart VM
|
||||
service protocol.
|
||||
version: 5.4.0
|
||||
version: 5.3.1
|
||||
|
||||
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/vm_service
|
||||
|
||||
|
|
|
@ -51,12 +51,11 @@ DEFINE_NATIVE_ENTRY(CapabilityImpl_get_hashcode, 0, 1) {
|
|||
return Smi::New(hash);
|
||||
}
|
||||
|
||||
DEFINE_NATIVE_ENTRY(RawReceivePortImpl_factory, 0, 2) {
|
||||
DEFINE_NATIVE_ENTRY(RawReceivePortImpl_factory, 0, 1) {
|
||||
ASSERT(
|
||||
TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull());
|
||||
GET_NON_NULL_NATIVE_ARGUMENT(String, debug_name, arguments->NativeArgAt(1));
|
||||
Dart_Port port_id = PortMap::CreatePort(isolate->message_handler());
|
||||
return ReceivePort::New(port_id, debug_name, false /* not control port */);
|
||||
return ReceivePort::New(port_id, false /* not control port */);
|
||||
}
|
||||
|
||||
DEFINE_NATIVE_ENTRY(RawReceivePortImpl_get_id, 0, 1) {
|
||||
|
|
|
@ -224,12 +224,4 @@ const StackTrace& GetCurrentStackTrace(int skip_frames) {
|
|||
return stacktrace;
|
||||
}
|
||||
|
||||
bool HasStack() {
|
||||
Thread* thread = Thread::Current();
|
||||
StackFrameIterator frames(ValidationPolicy::kDontValidateFrames, thread,
|
||||
StackFrameIterator::kNoCrossThreadIteration);
|
||||
StackFrame* frame = frames.NextFrame();
|
||||
return frame != nullptr;
|
||||
}
|
||||
|
||||
} // namespace dart
|
||||
|
|
|
@ -21,9 +21,6 @@ const StackTrace& GetCurrentStackTrace(int skip_frames);
|
|||
// Creates a StackTrace object to be attached to an exception.
|
||||
StackTracePtr GetStackTraceForException();
|
||||
|
||||
// Returns false if there is no Dart stack available.
|
||||
bool HasStack();
|
||||
|
||||
} // namespace dart
|
||||
|
||||
#endif // RUNTIME_LIB_STACKTRACE_H_
|
||||
|
|
|
@ -120,9 +120,6 @@ enum InstanceKind {
|
|||
|
||||
/// An instance of the Dart class TypeRef.
|
||||
typeRef,
|
||||
|
||||
/// An instance of the Dart class RawReceivePort
|
||||
receivePort,
|
||||
}
|
||||
|
||||
bool isTypedData(InstanceKind? kind) {
|
||||
|
|
|
@ -2781,8 +2781,6 @@ M.InstanceKind stringToInstanceKind(String s) {
|
|||
return M.InstanceKind.typeParameter;
|
||||
case 'TypeRef':
|
||||
return M.InstanceKind.typeRef;
|
||||
case 'ReceivePort':
|
||||
return M.InstanceKind.receivePort;
|
||||
}
|
||||
var message = 'Unrecognized instance kind: $s';
|
||||
Logger.root.severe(message);
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
// Copyright (c) 2020, the Dart 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 file.
|
||||
|
||||
import 'dart:isolate' hide Isolate;
|
||||
import 'package:observatory/service_io.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'test_helper.dart';
|
||||
|
||||
var port1;
|
||||
var port2;
|
||||
var port3;
|
||||
|
||||
void warmup() {
|
||||
port1 = RawReceivePort(null, 'port1');
|
||||
port2 = RawReceivePort((_) {});
|
||||
port3 = RawReceivePort((_) {}, 'port3');
|
||||
port3.close();
|
||||
RawReceivePort((_) {}, 'port4');
|
||||
}
|
||||
|
||||
int countNameMatches(ports, name) {
|
||||
var matches = 0;
|
||||
for (var port in ports) {
|
||||
if (port['debugName'] == name) {
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
|
||||
final tests = <IsolateTest>[
|
||||
(Isolate isolate) async {
|
||||
dynamic result = await isolate.invokeRpcNoUpgrade('getPorts', {});
|
||||
expect(result['type'], 'PortList');
|
||||
expect(result['ports'], isList);
|
||||
final ports = result['ports'];
|
||||
// There are at least three ports: the three created in warm up that
|
||||
// weren't closed. Some OSes will have other ports open but we do not try
|
||||
// and test for these.
|
||||
expect(ports.length, greaterThanOrEqualTo(3));
|
||||
expect(countNameMatches(ports, 'port1'), 1);
|
||||
expect(countNameMatches(ports, 'port3'), 0);
|
||||
expect(countNameMatches(ports, 'port4'), 1);
|
||||
expect(countNameMatches(ports, ''), greaterThanOrEqualTo(1));
|
||||
},
|
||||
];
|
||||
|
||||
main(args) async => runIsolateTests(args, tests, testeeBefore: warmup);
|
|
@ -9,12 +9,12 @@ import 'test_helper.dart';
|
|||
|
||||
var tests = <VMTest>[
|
||||
(VM vm) async {
|
||||
final result = await vm.invokeRpcNoUpgrade('getVersion', {});
|
||||
expect(result['type'], 'Version');
|
||||
expect(result['major'], 3);
|
||||
expect(result['minor'], 41);
|
||||
expect(result['_privateMajor'], 0);
|
||||
expect(result['_privateMinor'], 0);
|
||||
var result = await vm.invokeRpcNoUpgrade('getVersion', {});
|
||||
expect(result['type'], equals('Version'));
|
||||
expect(result['major'], equals(3));
|
||||
expect(result['minor'], equals(40));
|
||||
expect(result['_privateMajor'], equals(0));
|
||||
expect(result['_privateMinor'], equals(0));
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
@ -120,9 +120,6 @@ enum InstanceKind {
|
|||
|
||||
/// An instance of the Dart class TypeRef.
|
||||
typeRef,
|
||||
|
||||
/// An instance of the Dart class RawReceivePort
|
||||
receivePort,
|
||||
}
|
||||
|
||||
bool isTypedData(InstanceKind kind) {
|
||||
|
|
|
@ -2790,8 +2790,6 @@ M.InstanceKind stringToInstanceKind(String s) {
|
|||
return M.InstanceKind.typeParameter;
|
||||
case 'TypeRef':
|
||||
return M.InstanceKind.typeRef;
|
||||
case 'ReceivePort':
|
||||
return M.InstanceKind.receivePort;
|
||||
}
|
||||
var message = 'Unrecognized instance kind: $s';
|
||||
Logger.root.severe(message);
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
// Copyright (c) 2020, the Dart 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 file.
|
||||
|
||||
import 'dart:isolate' hide Isolate;
|
||||
import 'package:observatory_2/service_io.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'test_helper.dart';
|
||||
|
||||
var port1;
|
||||
var port2;
|
||||
var port3;
|
||||
|
||||
void warmup() {
|
||||
port1 = RawReceivePort(null, 'port1');
|
||||
port2 = RawReceivePort((_) {});
|
||||
port3 = RawReceivePort((_) {}, 'port3');
|
||||
port3.close();
|
||||
RawReceivePort((_) {}, 'port4');
|
||||
}
|
||||
|
||||
int countNameMatches(ports, name) {
|
||||
var matches = 0;
|
||||
for (var port in ports) {
|
||||
if (port['debugName'] == name) {
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
|
||||
final tests = <IsolateTest>[
|
||||
(Isolate isolate) async {
|
||||
dynamic result = await isolate.invokeRpcNoUpgrade('getPorts', {});
|
||||
expect(result['type'], 'PortList');
|
||||
expect(result['ports'], isList);
|
||||
final ports = result['ports'];
|
||||
// There are at least three ports: the three created in warm up that
|
||||
// weren't closed. Some OSes will have other ports open but we do not try
|
||||
// and test for these.
|
||||
expect(ports.length, greaterThanOrEqualTo(3));
|
||||
expect(countNameMatches(ports, 'port1'), 1);
|
||||
expect(countNameMatches(ports, 'port3'), 0);
|
||||
expect(countNameMatches(ports, 'port4'), 1);
|
||||
expect(countNameMatches(ports, ''), greaterThanOrEqualTo(1));
|
||||
},
|
||||
];
|
||||
|
||||
main(args) async => runIsolateTests(args, tests, testeeBefore: warmup);
|
|
@ -12,7 +12,7 @@ var tests = <VMTest>[
|
|||
var result = await vm.invokeRpcNoUpgrade('getVersion', {});
|
||||
expect(result['type'], equals('Version'));
|
||||
expect(result['major'], equals(3));
|
||||
expect(result['minor'], equals(41));
|
||||
expect(result['minor'], equals(40));
|
||||
expect(result['_privateMajor'], equals(0));
|
||||
expect(result['_privateMinor'], equals(0));
|
||||
},
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace dart {
|
|||
V(CapabilityImpl_factory, 1) \
|
||||
V(CapabilityImpl_equals, 2) \
|
||||
V(CapabilityImpl_get_hashcode, 1) \
|
||||
V(RawReceivePortImpl_factory, 2) \
|
||||
V(RawReceivePortImpl_factory, 1) \
|
||||
V(RawReceivePortImpl_get_id, 1) \
|
||||
V(RawReceivePortImpl_get_sendport, 1) \
|
||||
V(RawReceivePortImpl_closeInternal, 1) \
|
||||
|
|
|
@ -504,7 +504,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 16;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 60;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 56;
|
||||
|
@ -1031,7 +1031,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 48;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 32;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 120;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 96;
|
||||
|
@ -1549,7 +1549,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 16;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 60;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 56;
|
||||
|
@ -2077,7 +2077,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 48;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 32;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 120;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 96;
|
||||
|
@ -2594,7 +2594,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 16;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 60;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 56;
|
||||
|
@ -3115,7 +3115,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 48;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 32;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 120;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 96;
|
||||
|
@ -3627,7 +3627,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 16;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 60;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 56;
|
||||
|
@ -4149,7 +4149,7 @@ static constexpr dart::compiler::target::word ParameterTypeCheck_InstanceSize =
|
|||
static constexpr dart::compiler::target::word PatchClass_InstanceSize = 48;
|
||||
static constexpr dart::compiler::target::word PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word RedirectionData_InstanceSize = 32;
|
||||
static constexpr dart::compiler::target::word RegExp_InstanceSize = 120;
|
||||
static constexpr dart::compiler::target::word Script_InstanceSize = 96;
|
||||
|
@ -4722,7 +4722,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
16;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 60;
|
||||
|
@ -5303,7 +5303,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
32;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 120;
|
||||
|
@ -5888,7 +5888,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
32;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 120;
|
||||
|
@ -6461,7 +6461,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 8;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 20;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 12;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
16;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 60;
|
||||
|
@ -7035,7 +7035,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
32;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 120;
|
||||
|
@ -7613,7 +7613,7 @@ static constexpr dart::compiler::target::word
|
|||
static constexpr dart::compiler::target::word AOT_PatchClass_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_PcDescriptors_HeaderSize = 16;
|
||||
static constexpr dart::compiler::target::word AOT_Pointer_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 40;
|
||||
static constexpr dart::compiler::target::word AOT_ReceivePort_InstanceSize = 24;
|
||||
static constexpr dart::compiler::target::word AOT_RedirectionData_InstanceSize =
|
||||
32;
|
||||
static constexpr dart::compiler::target::word AOT_RegExp_InstanceSize = 120;
|
||||
|
|
|
@ -750,31 +750,6 @@ ObjectPtr DartLibraryCalls::LookupHandler(Dart_Port port_id) {
|
|||
return result.raw();
|
||||
}
|
||||
|
||||
ObjectPtr DartLibraryCalls::LookupOpenPorts() {
|
||||
Thread* thread = Thread::Current();
|
||||
Zone* zone = thread->zone();
|
||||
Function& function = Function::Handle(
|
||||
zone, thread->isolate()->object_store()->lookup_open_ports());
|
||||
const int kTypeArgsLen = 0;
|
||||
const int kNumArguments = 0;
|
||||
if (function.IsNull()) {
|
||||
Library& isolate_lib = Library::Handle(zone, Library::IsolateLibrary());
|
||||
ASSERT(!isolate_lib.IsNull());
|
||||
const String& class_name = String::Handle(
|
||||
zone, isolate_lib.PrivateName(Symbols::_RawReceivePortImpl()));
|
||||
const String& function_name = String::Handle(
|
||||
zone, isolate_lib.PrivateName(Symbols::_lookupOpenPorts()));
|
||||
function = Resolver::ResolveStatic(isolate_lib, class_name, function_name,
|
||||
kTypeArgsLen, kNumArguments,
|
||||
Object::empty_array());
|
||||
ASSERT(!function.IsNull());
|
||||
thread->isolate()->object_store()->set_lookup_open_ports(function);
|
||||
}
|
||||
const Object& result = Object::Handle(
|
||||
zone, DartEntry::InvokeFunction(function, Object::empty_array()));
|
||||
return result.raw();
|
||||
}
|
||||
|
||||
ObjectPtr DartLibraryCalls::HandleMessage(const Object& handler,
|
||||
const Instance& message) {
|
||||
Thread* thread = Thread::Current();
|
||||
|
|
|
@ -284,9 +284,6 @@ class DartLibraryCalls : public AllStatic {
|
|||
// Returns the handler if one has been registered for this port id.
|
||||
static ObjectPtr LookupHandler(Dart_Port port_id);
|
||||
|
||||
// Returns a list of open ReceivePorts.
|
||||
static ObjectPtr LookupOpenPorts();
|
||||
|
||||
// Returns null on success, a RawError on failure.
|
||||
static ObjectPtr HandleMessage(const Object& handler,
|
||||
const Instance& dart_message);
|
||||
|
|
|
@ -2395,9 +2395,8 @@ static MessageHandler::MessageStatus RunIsolate(uword parameter) {
|
|||
args.SetAt(2, Instance::Handle(state->BuildArgs(thread)));
|
||||
args.SetAt(3, Instance::Handle(state->BuildMessage(thread)));
|
||||
args.SetAt(4, is_spawn_uri ? Bool::True() : Bool::False());
|
||||
args.SetAt(5, ReceivePort::Handle(
|
||||
ReceivePort::New(isolate->main_port(), String::Handle(),
|
||||
true /* control port */)));
|
||||
args.SetAt(5, ReceivePort::Handle(ReceivePort::New(
|
||||
isolate->main_port(), true /* control port */)));
|
||||
args.SetAt(6, capabilities);
|
||||
|
||||
const Library& lib = Library::Handle(Library::IsolateLibrary());
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include <memory>
|
||||
|
||||
#include "include/dart_api.h"
|
||||
#include "lib/stacktrace.h"
|
||||
#include "platform/assert.h"
|
||||
#include "platform/text_buffer.h"
|
||||
#include "platform/unaligned.h"
|
||||
|
@ -24358,7 +24357,6 @@ const char* Capability::ToCString() const {
|
|||
}
|
||||
|
||||
ReceivePortPtr ReceivePort::New(Dart_Port id,
|
||||
const String& debug_name,
|
||||
bool is_control_port,
|
||||
Heap::Space space) {
|
||||
ASSERT(id != ILLEGAL_PORT);
|
||||
|
@ -24366,8 +24364,6 @@ ReceivePortPtr ReceivePort::New(Dart_Port id,
|
|||
Zone* zone = thread->zone();
|
||||
const SendPort& send_port =
|
||||
SendPort::Handle(zone, SendPort::New(id, thread->isolate()->origin_id()));
|
||||
const StackTrace& allocation_location_ =
|
||||
HasStack() ? GetCurrentStackTrace(0) : StackTrace::Handle();
|
||||
|
||||
ReceivePort& result = ReceivePort::Handle(zone);
|
||||
{
|
||||
|
@ -24376,9 +24372,6 @@ ReceivePortPtr ReceivePort::New(Dart_Port id,
|
|||
NoSafepointScope no_safepoint;
|
||||
result ^= raw;
|
||||
result.StorePointer(&result.raw_ptr()->send_port_, send_port.raw());
|
||||
result.StorePointer(&result.raw_ptr()->debug_name_, debug_name.raw());
|
||||
result.StorePointer(&result.raw_ptr()->allocation_location_,
|
||||
allocation_location_.raw());
|
||||
}
|
||||
if (is_control_port) {
|
||||
PortMap::SetPortState(id, PortMap::kControlPort);
|
||||
|
|
|
@ -10986,17 +10986,10 @@ class ReceivePort : public Instance {
|
|||
InstancePtr handler() const { return raw_ptr()->handler_; }
|
||||
void set_handler(const Instance& value) const;
|
||||
|
||||
StackTracePtr allocation_location() const {
|
||||
return raw_ptr()->allocation_location_;
|
||||
}
|
||||
|
||||
StringPtr debug_name() const { return raw_ptr()->debug_name_; }
|
||||
|
||||
static intptr_t InstanceSize() {
|
||||
return RoundedAllocationSize(sizeof(ReceivePortLayout));
|
||||
}
|
||||
static ReceivePortPtr New(Dart_Port id,
|
||||
const String& debug_name,
|
||||
bool is_control_port,
|
||||
Heap::Space space = Heap::kNew);
|
||||
|
||||
|
|
|
@ -1557,15 +1557,7 @@ void Capability::PrintJSONImpl(JSONStream* stream, bool ref) const {
|
|||
}
|
||||
|
||||
void ReceivePort::PrintJSONImpl(JSONStream* stream, bool ref) const {
|
||||
JSONObject obj(stream);
|
||||
Instance::PrintSharedInstanceJSON(&obj, ref);
|
||||
const StackTrace& allocation_location_ =
|
||||
StackTrace::Handle(allocation_location());
|
||||
const String& debug_name_ = String::Handle(debug_name());
|
||||
obj.AddProperty("kind", "ReceivePort");
|
||||
obj.AddProperty64("portId", Id());
|
||||
obj.AddProperty("debugName", debug_name_.ToCString());
|
||||
obj.AddProperty("allocationLocation", allocation_location_);
|
||||
Instance::PrintJSONImpl(stream, ref);
|
||||
}
|
||||
|
||||
void SendPort::PrintJSONImpl(JSONStream* stream, bool ref) const {
|
||||
|
|
|
@ -160,7 +160,6 @@ class ObjectPointerVisitor;
|
|||
RW(Instance, stack_overflow) \
|
||||
RW(Instance, out_of_memory) \
|
||||
RW(Function, lookup_port_handler) \
|
||||
RW(Function, lookup_open_ports) \
|
||||
RW(Function, handle_message_function) \
|
||||
RW(Function, growable_list_factory) \
|
||||
RW(Function, simple_instance_of_function) \
|
||||
|
|
|
@ -2788,9 +2788,7 @@ class ReceivePortLayout : public InstanceLayout {
|
|||
VISIT_FROM(ObjectPtr, send_port_)
|
||||
SendPortPtr send_port_;
|
||||
InstancePtr handler_;
|
||||
StringPtr debug_name_;
|
||||
StackTracePtr allocation_location_;
|
||||
VISIT_TO(ObjectPtr, allocation_location_)
|
||||
VISIT_TO(ObjectPtr, handler_)
|
||||
};
|
||||
|
||||
class TransferableTypedDataLayout : public InstanceLayout {
|
||||
|
|
|
@ -182,8 +182,6 @@ namespace dart {
|
|||
F(ExternalTypedData, length_) \
|
||||
F(ReceivePort, send_port_) \
|
||||
F(ReceivePort, handler_) \
|
||||
F(ReceivePort, debug_name_) \
|
||||
F(ReceivePort, allocation_location_) \
|
||||
F(StackTrace, async_link_) \
|
||||
F(StackTrace, code_array_) \
|
||||
F(StackTrace, pc_offset_array_) \
|
||||
|
|
|
@ -3146,30 +3146,6 @@ static bool GetInstances(Thread* thread, JSONStream* js) {
|
|||
return true;
|
||||
}
|
||||
|
||||
static const MethodParameter* get_ports_params[] = {
|
||||
RUNNABLE_ISOLATE_PARAMETER,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static bool GetPorts(Thread* thread, JSONStream* js) {
|
||||
// Ensure the array and handles created below are promptly destroyed.
|
||||
StackZone zone(thread);
|
||||
HANDLESCOPE(thread);
|
||||
const GrowableObjectArray& ports = GrowableObjectArray::Handle(
|
||||
GrowableObjectArray::RawCast(DartLibraryCalls::LookupOpenPorts()));
|
||||
JSONObject jsobj(js);
|
||||
jsobj.AddProperty("type", "PortList");
|
||||
{
|
||||
Instance& port = Instance::Handle(zone.GetZone());
|
||||
JSONArray arr(&jsobj, "ports");
|
||||
for (int i = 0; i < ports.Length(); ++i) {
|
||||
port ^= ports.At(i);
|
||||
arr.AddValue(port);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#if !defined(DART_PRECOMPILED_RUNTIME)
|
||||
static const char* const report_enum_names[] = {
|
||||
SourceReport::kCallSitesStr,
|
||||
|
@ -4417,12 +4393,12 @@ static bool GetPersistentHandles(Thread* thread, JSONStream* js) {
|
|||
return true;
|
||||
}
|
||||
|
||||
static const MethodParameter* get_ports_private_params[] = {
|
||||
static const MethodParameter* get_ports_params[] = {
|
||||
RUNNABLE_ISOLATE_PARAMETER,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static bool GetPortsPrivate(Thread* thread, JSONStream* js) {
|
||||
static bool GetPorts(Thread* thread, JSONStream* js) {
|
||||
MessageHandler* message_handler = thread->isolate()->message_handler();
|
||||
PortMap::PrintPortsForMessageHandler(message_handler, js);
|
||||
return true;
|
||||
|
@ -5082,8 +5058,6 @@ static const ServiceMethodDescriptor service_methods_[] = {
|
|||
get_inbound_references_params },
|
||||
{ "getInstances", GetInstances,
|
||||
get_instances_params },
|
||||
{ "getPorts", GetPorts,
|
||||
get_ports_params },
|
||||
{ "getIsolate", GetIsolate,
|
||||
get_isolate_params },
|
||||
{ "_getIsolateObjectStore", GetIsolateObjectStore,
|
||||
|
@ -5104,8 +5078,8 @@ static const ServiceMethodDescriptor service_methods_[] = {
|
|||
get_object_store_params },
|
||||
{ "_getPersistentHandles", GetPersistentHandles,
|
||||
get_persistent_handles_params, },
|
||||
{ "_getPorts", GetPortsPrivate,
|
||||
get_ports_private_params },
|
||||
{ "_getPorts", GetPorts,
|
||||
get_ports_params },
|
||||
{ "getProcessMemoryUsage", GetProcessMemoryUsage,
|
||||
get_process_memory_usage_params },
|
||||
{ "_getReachableSize", GetReachableSize,
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
namespace dart {
|
||||
|
||||
#define SERVICE_PROTOCOL_MAJOR_VERSION 3
|
||||
#define SERVICE_PROTOCOL_MINOR_VERSION 41
|
||||
#define SERVICE_PROTOCOL_MINOR_VERSION 40
|
||||
|
||||
class Array;
|
||||
class EmbedderServiceHandler;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Dart VM Service Protocol 3.41
|
||||
# Dart VM Service Protocol 3.40
|
||||
|
||||
> Please post feedback to the [observatory-discuss group][discuss-list]
|
||||
|
||||
This document describes of _version 3.41_ of the Dart VM Service Protocol. This
|
||||
This document describes of _version 3.40_ of the Dart VM Service Protocol. This
|
||||
protocol is used to communicate with a running Dart Virtual Machine.
|
||||
|
||||
To use the Service Protocol, start the VM with the *--observe* flag.
|
||||
|
@ -47,7 +47,6 @@ The Service Protocol uses [JSON-RPC 2.0][].
|
|||
- [getIsolateGroup](#getisolategroup)
|
||||
- [getMemoryUsage](#getmemoryusage)
|
||||
- [getObject](#getobject)
|
||||
- [getPorts](#getports)
|
||||
- [getProcessMemoryUsage](#getprocessmemoryusage)
|
||||
- [getRetainingPath](#getretainingpath)
|
||||
- [getScripts](#getscripts)
|
||||
|
@ -114,7 +113,6 @@ The Service Protocol uses [JSON-RPC 2.0][].
|
|||
- [NativeFunction](#nativefunction)
|
||||
- [Null](#null)
|
||||
- [Object](#object)
|
||||
- [PortList](#portlist)
|
||||
- [ReloadReport](#reloadreport)
|
||||
- [Response](#response)
|
||||
- [RetainingObject](#retainingobject)
|
||||
|
@ -938,17 +936,6 @@ Int32List, Int64List, Flooat32List, Float64List, Inst32x3List,
|
|||
Float32x4List, and Float64x2List. These parameters are otherwise
|
||||
ignored.
|
||||
|
||||
### getPorts
|
||||
|
||||
```
|
||||
PortList getPorts(string isolateId)
|
||||
```
|
||||
|
||||
The _getPorts_ RPC is used to retrieve the list of `ReceivePort` instances for a
|
||||
given isolate.
|
||||
|
||||
See [PortList](#portlist).
|
||||
|
||||
### getRetainingPath
|
||||
|
||||
```
|
||||
|
@ -2439,24 +2426,6 @@ class @Instance extends @Object {
|
|||
// Provided for instance kinds:
|
||||
// Closure
|
||||
@Context closureContext [optional];
|
||||
|
||||
// The port ID for a ReceivePort.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
int portId [optional];
|
||||
|
||||
// The stack trace associated with the allocation of a ReceivePort.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
@Instance allocationLocation [optional];
|
||||
|
||||
// A name associated with a ReceivePort used for debugging purposes.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
string debugName [optional];
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -2477,7 +2446,6 @@ class Instance extends Object {
|
|||
// Double (suitable for passing to Double.parse())
|
||||
// Int (suitable for passing to int.parse())
|
||||
// String (value may be truncated)
|
||||
// StackTrace
|
||||
string valueAsString [optional];
|
||||
|
||||
// The valueAsString for String references may be truncated. If so,
|
||||
|
@ -2690,24 +2658,6 @@ class Instance extends Object {
|
|||
// BoundedType
|
||||
// TypeParameter
|
||||
@Instance bound [optional];
|
||||
|
||||
// The port ID for a ReceivePort.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
int portId [optional];
|
||||
|
||||
// The stack trace associated with the allocation of a ReceivePort.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
@Instance allocationLocation [optional];
|
||||
|
||||
// A name associated with a ReceivePort used for debugging purposes.
|
||||
//
|
||||
// Provided for instance kinds:
|
||||
// ReceivePort
|
||||
string debugName [optional];
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -2792,9 +2742,6 @@ enum InstanceKind {
|
|||
|
||||
// An instance of the Dart class BoundedType.
|
||||
BoundedType,
|
||||
|
||||
// An instance of the Dart class ReceivePort.
|
||||
ReceivePort,
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -3237,18 +3184,6 @@ class Object extends Response {
|
|||
|
||||
An _Object_ is a persistent object that is owned by some isolate.
|
||||
|
||||
### PortList
|
||||
|
||||
```
|
||||
class PortList extends Response {
|
||||
@Instance[] ports;
|
||||
}
|
||||
```
|
||||
|
||||
A _PortList_ contains a list of ports associated with some isolate.
|
||||
|
||||
See [getPort](#getPort).
|
||||
|
||||
### ProfileFunction
|
||||
|
||||
```
|
||||
|
@ -3920,6 +3855,5 @@ version | comments
|
|||
3.38 | Added `isSystemIsolate` property to `@Isolate` and `Isolate`, `isSystemIsolateGroup` property to `@IsolateGroup` and `IsolateGroup`, and properties `systemIsolates` and `systemIsolateGroups` to `VM`.
|
||||
3.39 | Removed the following deprecated RPCs and objects: `getClientName`, `getWebSocketTarget`, `setClientName`, `requireResumeApproval`, `ClientName`, and `WebSocketTarget`.
|
||||
3.40 | Added `IsolateFlag` object and `isolateFlags` property to `Isolate`.
|
||||
3.41 | Added `PortList` object, `ReceivePort` `InstanceKind`, and `getPorts` RPC.
|
||||
|
||||
[discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
|
||||
|
|
|
@ -449,7 +449,6 @@ class ObjectPointerVisitor;
|
|||
V(_handleMessage, "_handleMessage") \
|
||||
V(_instanceOf, "_instanceOf") \
|
||||
V(_lookupHandler, "_lookupHandler") \
|
||||
V(_lookupOpenPorts, "_lookupOpenPorts") \
|
||||
V(_name, "_name") \
|
||||
V(_onData, "_onData") \
|
||||
V(_rehashObjects, "_rehashObjects") \
|
||||
|
|
|
@ -22,8 +22,7 @@ import "dart:_internal" show spawnFunction;
|
|||
@patch
|
||||
class ReceivePort {
|
||||
@patch
|
||||
factory ReceivePort([String debugName = '']) =>
|
||||
new _ReceivePortImpl(debugName);
|
||||
factory ReceivePort() => new _ReceivePortImpl();
|
||||
|
||||
@patch
|
||||
factory ReceivePort.fromRawReceivePort(RawReceivePort rawPort) {
|
||||
|
@ -63,16 +62,15 @@ class RawReceivePort {
|
|||
* event is received.
|
||||
*/
|
||||
@patch
|
||||
factory RawReceivePort([Function? handler, String debugName = '']) {
|
||||
_RawReceivePortImpl result = new _RawReceivePortImpl(debugName);
|
||||
factory RawReceivePort([Function? handler]) {
|
||||
_RawReceivePortImpl result = new _RawReceivePortImpl();
|
||||
result.handler = handler;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
class _ReceivePortImpl extends Stream implements ReceivePort {
|
||||
_ReceivePortImpl([String debugName = ''])
|
||||
: this.fromRawReceivePort(new RawReceivePort(null, debugName));
|
||||
_ReceivePortImpl() : this.fromRawReceivePort(new RawReceivePort());
|
||||
|
||||
_ReceivePortImpl.fromRawReceivePort(this._rawPort)
|
||||
: _controller = new StreamController(sync: true) {
|
||||
|
@ -130,21 +128,11 @@ Function _getIsolateScheduleImmediateClosure() {
|
|||
|
||||
@pragma("vm:entry-point")
|
||||
class _RawReceivePortImpl implements RawReceivePort {
|
||||
factory _RawReceivePortImpl(String debugName) {
|
||||
final port = _RawReceivePortImpl._(debugName);
|
||||
_portMap[port._get_id()] = {
|
||||
'port': port,
|
||||
'handler': null,
|
||||
};
|
||||
return port;
|
||||
}
|
||||
|
||||
factory _RawReceivePortImpl._(String debugName)
|
||||
native "RawReceivePortImpl_factory";
|
||||
factory _RawReceivePortImpl() native "RawReceivePortImpl_factory";
|
||||
|
||||
close() {
|
||||
// Close the port and remove it from the handler map.
|
||||
_portMap.remove(this._closeInternal());
|
||||
_handlerMap.remove(this._closeInternal());
|
||||
}
|
||||
|
||||
SendPort get sendPort {
|
||||
|
@ -167,15 +155,10 @@ class _RawReceivePortImpl implements RawReceivePort {
|
|||
// Called from the VM to retrieve the handler for a message.
|
||||
@pragma("vm:entry-point", "call")
|
||||
static _lookupHandler(int id) {
|
||||
var result = _portMap[id]?['handler'];
|
||||
var result = _handlerMap[id];
|
||||
return result;
|
||||
}
|
||||
|
||||
@pragma("vm:entry-point", "call")
|
||||
static _lookupOpenPorts() {
|
||||
return _portMap.values.map((e) => e['port']).toList();
|
||||
}
|
||||
|
||||
// Called from the VM to dispatch to the handler.
|
||||
@pragma("vm:entry-point", "call")
|
||||
static void _handleMessage(Function handler, var message) {
|
||||
|
@ -190,18 +173,22 @@ class _RawReceivePortImpl implements RawReceivePort {
|
|||
_closeInternal() native "RawReceivePortImpl_closeInternal";
|
||||
|
||||
void set handler(Function? value) {
|
||||
final id = this._get_id();
|
||||
if (!_portMap.containsKey(id)) {
|
||||
_portMap[id] = {
|
||||
'port': this,
|
||||
'handler': value,
|
||||
};
|
||||
} else {
|
||||
_portMap[id]!['handler'] = value;
|
||||
}
|
||||
_handlerMap[this._get_id()] = value;
|
||||
}
|
||||
|
||||
static final _portMap = <dynamic, Map<String, dynamic>>{};
|
||||
// TODO(iposva): Ideally keep this map in the VM.
|
||||
// id to handler mapping.
|
||||
static _initHandlerMap() {
|
||||
// TODO(18511): Workaround bad CheckSmi hoisting.
|
||||
var tempMap = new HashMap();
|
||||
// Collect feedback that not all keys are Smis.
|
||||
tempMap["."] = 1;
|
||||
tempMap["."] = 2;
|
||||
|
||||
return new HashMap();
|
||||
}
|
||||
|
||||
static final Map _handlerMap = _initHandlerMap();
|
||||
}
|
||||
|
||||
@pragma("vm:entry-point")
|
||||
|
|
|
@ -671,12 +671,9 @@ abstract class ReceivePort implements Stream<dynamic> {
|
|||
* receive messages. See [Stream.asBroadcastStream] for transforming the port
|
||||
* to a broadcast stream.
|
||||
*
|
||||
* The optional `debugName` parameter can be set to associate a name with
|
||||
* this port that can be displayed in tooling.
|
||||
*
|
||||
* A receive port is closed by canceling its subscription.
|
||||
*/
|
||||
external factory ReceivePort([String debugName = '']);
|
||||
external factory ReceivePort();
|
||||
|
||||
/**
|
||||
* Creates a [ReceivePort] from a [RawReceivePort].
|
||||
|
@ -721,12 +718,8 @@ abstract class RawReceivePort {
|
|||
* A [RawReceivePort] is low level and does not work with [Zone]s. It
|
||||
* can not be paused. The data-handler must be set before the first
|
||||
* event is received.
|
||||
*
|
||||
* The optional `debugName` parameter can be set to associate a name with
|
||||
* this port that can be displayed in tooling.
|
||||
*
|
||||
*/
|
||||
external factory RawReceivePort([Function? handler, String debugName = '']);
|
||||
external factory RawReceivePort([Function? handler]);
|
||||
|
||||
/**
|
||||
* Sets the handler that is invoked for every incoming message.
|
||||
|
|
Loading…
Reference in a new issue