| Index: runtime/observatory/lib/src/service/object.dart
|
| diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
|
| index b0be812dc5b88e1141fcadebd860afe5a48b0ae2..bcaf2f8a779d2aac634b2709a2f6e840a8097b26 100644
|
| --- a/runtime/observatory/lib/src/service/object.dart
|
| +++ b/runtime/observatory/lib/src/service/object.dart
|
| @@ -1636,6 +1636,14 @@ class Isolate extends ServiceObjectOwner {
|
| return invokeRpc('getStack', {});
|
| }
|
|
|
| + Future<ObjectStore> getObjectStore() {
|
| + return invokeRpc('_getObjectStore', {}).then((map) {
|
| + ObjectStore objectStore = new ObjectStore._empty(this);
|
| + objectStore._update(map, false);
|
| + return objectStore;
|
| + });
|
| + }
|
| +
|
| Future<ServiceObject> _eval(ServiceObject target,
|
| String expression) {
|
| Map params = {
|
| @@ -1744,6 +1752,36 @@ class Isolate extends ServiceObjectOwner {
|
| String toString() => "Isolate($name)";
|
| }
|
|
|
| +
|
| +class NamedField {
|
| + final String name;
|
| + final ServiceObject value;
|
| + NamedField(this.name, this.value);
|
| +}
|
| +
|
| +
|
| +class ObjectStore extends ServiceObject {
|
| + @observable List<NamedField> fields = new List<NamedField>();
|
| +
|
| + ObjectStore._empty(ServiceObjectOwner owner) : super._empty(owner);
|
| +
|
| + void _update(ObservableMap map, bool mapIsRef) {
|
| + // Extract full properties.
|
| + _upgradeCollection(map, isolate);
|
| +
|
| + if (mapIsRef) {
|
| + return;
|
| + }
|
| +
|
| + fields.clear();
|
| + map['fields'].forEach((key, value) {
|
| + fields.add(new NamedField(key, value));
|
| + });
|
| + _loaded = true;
|
| + }
|
| +}
|
| +
|
| +
|
| /// A [ServiceObject] which implements [ObservableMap].
|
| class ServiceMap extends ServiceObject implements ObservableMap {
|
| final ObservableMap _map = new ObservableMap();
|
|
|