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(); |