Index: runtime/bin/vmservice/client/lib/src/service/object.dart |
diff --git a/runtime/bin/vmservice/client/lib/src/service/object.dart b/runtime/bin/vmservice/client/lib/src/service/object.dart |
index 967907cdec016b9647993ae8554f43007e6c0a21..1b952ab2f36938bdd6e3b647246e6f32e72ebd9f 100644 |
--- a/runtime/bin/vmservice/client/lib/src/service/object.dart |
+++ b/runtime/bin/vmservice/client/lib/src/service/object.dart |
@@ -190,6 +190,7 @@ abstract class VM extends ServiceObjectOwner { |
@observable double uptime = 0.0; |
@observable bool assertsEnabled = false; |
@observable bool typeChecksEnabled = false; |
+ @observable DateTime date; |
koda
2014/06/17 21:04:07
Please choose a more descriptive name. lastUpdated
Cutch
2014/06/18 14:35:03
Done.
|
VM() : super._empty(null) { |
name = 'vm'; |
@@ -373,6 +374,8 @@ abstract class VM extends ServiceObjectOwner { |
version = map['version']; |
architecture = map['architecture']; |
uptime = map['uptime']; |
+ var dateInMillis = int.parse(map['date']); |
+ date = new DateTime.fromMillisecondsSinceEpoch(dateInMillis); |
assertsEnabled = map['assertsEnabled']; |
typeChecksEnabled = map['typeChecksEnabled']; |
_updateIsolates(map['isolates']); |
@@ -660,14 +663,25 @@ class Isolate extends ServiceObjectOwner { |
toObservable(new Map<String, double>()); |
@observable int newHeapUsed = 0; |
koda
2014/06/17 21:04:06
The same three fields are repeated for new and old
Cutch
2014/06/18 14:35:03
Done.
|
- @observable int oldHeapUsed = 0; |
@observable int newHeapCapacity = 0; |
+ @observable int newExternal = 0; |
+ @observable int oldHeapUsed = 0; |
@observable int oldHeapCapacity = 0; |
+ @observable int oldExternal = 0; |
@observable String fileAndLine; |
@observable DartError error; |
+ void updateHeapsFromMap(ObservableMap map) { |
+ newHeapUsed = map['new']['used']; |
+ newHeapCapacity = map['new']['capacity']; |
+ newExternal = map['new']['external']; |
+ oldHeapUsed = map['old']['used']; |
+ oldHeapCapacity = map['old']['capacity']; |
+ oldExternal = map['old']['external']; |
+ } |
+ |
void _update(ObservableMap map, bool mapIsRef) { |
mainPort = map['mainPort']; |
name = map['name']; |
@@ -680,7 +694,7 @@ class Isolate extends ServiceObjectOwner { |
_upgradeCollection(map, isolate); |
if (map['rootLib'] == null || |
map['timers'] == null || |
- map['heap'] == null) { |
+ map['heaps'] == null) { |
Logger.root.severe("Malformed 'Isolate' response: $map"); |
return; |
} |
@@ -729,10 +743,7 @@ class Isolate extends ServiceObjectOwner { |
timerMap['time_bootstrap']); |
timers['dart'] = timerMap['time_dart_execution']; |
- newHeapUsed = map['heap']['usedNew']; |
- oldHeapUsed = map['heap']['usedOld']; |
- newHeapCapacity = map['heap']['capacityNew']; |
- oldHeapCapacity = map['heap']['capacityOld']; |
+ updateHeapsFromMap(map['heaps']); |
List features = map['features']; |
if (features != null) { |
@@ -972,6 +983,18 @@ class Library extends ServiceObject { |
} |
} |
+class AllocationStat extends Observable { |
koda
2014/06/17 21:04:06
Consider adding pointer to the C++ counterpart in
Cutch
2014/06/18 14:35:03
Done.
|
+ @observable int instances = 0; |
+ @observable int bytes = 0; |
+ |
+ void reset() { |
+ instances = 0; |
+ bytes = 0; |
+ } |
+ |
+ bool get empty => (instances == 0) && (bytes == 0); |
+} |
+ |
class Class extends ServiceObject { |
@observable Library library; |
@observable Script script; |
@@ -987,6 +1010,18 @@ class Class extends ServiceObject { |
@observable ServiceMap error; |
+ final AllocationStat accumulatedNewSpace = new AllocationStat(); |
+ final AllocationStat accumulatedOldSpace = new AllocationStat(); |
+ final AllocationStat currentNewSpace = new AllocationStat(); |
+ final AllocationStat currentOldSpace = new AllocationStat(); |
+ |
+ bool get hasNoAllocations { |
+ return accumulatedNewSpace.empty && |
+ accumulatedOldSpace.empty && |
+ currentNewSpace.empty && |
+ currentOldSpace.empty; |
+ } |
+ |
@reflectable final children = new ObservableList<Class>(); |
@reflectable final subClasses = new ObservableList<Class>(); |
@reflectable final fields = new ObservableList<ServiceMap>(); |