Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: runtime/observatory/lib/src/service/object.dart

Issue 2012333002: Make the object store visible in Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of service; 5 part of service;
6 6
7 // Some value smaller than the object ring, so requesting a large array 7 // Some value smaller than the object ring, so requesting a large array
8 // doesn't result in an expired ref because the elements lapped it in the 8 // doesn't result in an expired ref because the elements lapped it in the
9 // object ring. 9 // object ring.
10 const int kDefaultFieldLimit = 100; 10 const int kDefaultFieldLimit = 100;
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 } 1629 }
1630 1630
1631 Future setExceptionPauseMode(String mode) { 1631 Future setExceptionPauseMode(String mode) {
1632 return invokeRpc('setExceptionPauseMode', {'mode': mode}); 1632 return invokeRpc('setExceptionPauseMode', {'mode': mode});
1633 } 1633 }
1634 1634
1635 Future<ServiceMap> getStack() { 1635 Future<ServiceMap> getStack() {
1636 return invokeRpc('getStack', {}); 1636 return invokeRpc('getStack', {});
1637 } 1637 }
1638 1638
1639 Future<ObjectStore> getObjectStore() {
1640 return invokeRpc('_getObjectStore', {}).then((map) {
1641 ObjectStore objectStore = new ObjectStore._empty(this);
1642 objectStore._update(map, false);
1643 return objectStore;
1644 });
1645 }
1646
1639 Future<ServiceObject> _eval(ServiceObject target, 1647 Future<ServiceObject> _eval(ServiceObject target,
1640 String expression) { 1648 String expression) {
1641 Map params = { 1649 Map params = {
1642 'targetId': target.id, 1650 'targetId': target.id,
1643 'expression': expression, 1651 'expression': expression,
1644 }; 1652 };
1645 return invokeRpc('evaluate', params); 1653 return invokeRpc('evaluate', params);
1646 } 1654 }
1647 1655
1648 Future<ServiceObject> evalFrame(int frameIndex, 1656 Future<ServiceObject> evalFrame(int frameIndex,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 return _refreshMetrics('Native', nativeMetrics); 1745 return _refreshMetrics('Native', nativeMetrics);
1738 } 1746 }
1739 1747
1740 Future refreshMetrics() { 1748 Future refreshMetrics() {
1741 return Future.wait([refreshDartMetrics(), refreshNativeMetrics()]); 1749 return Future.wait([refreshDartMetrics(), refreshNativeMetrics()]);
1742 } 1750 }
1743 1751
1744 String toString() => "Isolate($name)"; 1752 String toString() => "Isolate($name)";
1745 } 1753 }
1746 1754
1755
1756 class NamedField {
1757 final String name;
1758 final ServiceObject value;
1759 NamedField(this.name, this.value);
1760 }
1761
1762
1763 class ObjectStore extends ServiceObject {
1764 @observable List<NamedField> fields = new List<NamedField>();
1765
1766 ObjectStore._empty(ServiceObjectOwner owner) : super._empty(owner);
1767
1768 void _update(ObservableMap map, bool mapIsRef) {
1769 // Extract full properties.
1770 _upgradeCollection(map, isolate);
1771
1772 if (mapIsRef) {
1773 return;
1774 }
1775
1776 fields.clear();
1777 map['fields'].forEach((key, value) {
1778 fields.add(new NamedField(key, value));
1779 });
1780 _loaded = true;
1781 }
1782 }
1783
1784
1747 /// A [ServiceObject] which implements [ObservableMap]. 1785 /// A [ServiceObject] which implements [ObservableMap].
1748 class ServiceMap extends ServiceObject implements ObservableMap { 1786 class ServiceMap extends ServiceObject implements ObservableMap {
1749 final ObservableMap _map = new ObservableMap(); 1787 final ObservableMap _map = new ObservableMap();
1750 static String objectIdRingPrefix = 'objects/'; 1788 static String objectIdRingPrefix = 'objects/';
1751 1789
1752 bool get canCache { 1790 bool get canCache {
1753 return (_type == 'Class' || 1791 return (_type == 'Class' ||
1754 _type == 'Function' || 1792 _type == 'Function' ||
1755 _type == 'Field') && 1793 _type == 'Field') &&
1756 !_id.startsWith(objectIdRingPrefix); 1794 !_id.startsWith(objectIdRingPrefix);
(...skipping 2316 matching lines...) Expand 10 before | Expand all | Expand 10 after
4073 var v = list[i]; 4111 var v = list[i];
4074 if ((v is ObservableMap) && _isServiceMap(v)) { 4112 if ((v is ObservableMap) && _isServiceMap(v)) {
4075 list[i] = owner.getFromMap(v); 4113 list[i] = owner.getFromMap(v);
4076 } else if (v is ObservableList) { 4114 } else if (v is ObservableList) {
4077 _upgradeObservableList(v, owner); 4115 _upgradeObservableList(v, owner);
4078 } else if (v is ObservableMap) { 4116 } else if (v is ObservableMap) {
4079 _upgradeObservableMap(v, owner); 4117 _upgradeObservableMap(v, owner);
4080 } 4118 }
4081 } 4119 }
4082 } 4120 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698