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

Unified Diff: runtime/bin/vmservice/client/lib/src/observatory/isolate.dart

Issue 145323002: Post-meetup feature extravaganza. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/client/lib/src/observatory/isolate.dart
===================================================================
--- runtime/bin/vmservice/client/lib/src/observatory/isolate.dart (revision 32126)
+++ runtime/bin/vmservice/client/lib/src/observatory/isolate.dart (working copy)
@@ -4,19 +4,84 @@
part of observatory;
+
/// State for a running isolate.
class Isolate extends Observable {
+ static ObservatoryApplication _application;
+
@observable Profile profile;
@observable final Map<String, Script> scripts =
toObservable(new Map<String, Script>());
@observable final List<Code> codes = new List<Code>();
@observable String id;
@observable String name;
+ @observable Map entry;
+ @observable String rootLib;
+ @observable final Map<String, double> timers =
+ toObservable(new Map<String, double>());
- Isolate(this.id, this.name);
+ @observable int newHeapUsed = 0;
+ @observable int oldHeapUsed = 0;
- String toString() => '$id $name';
+ @observable Map topFrame = null;
+ @observable String fileAndLine = null;
+
+ Isolate.fromId(this.id) : name = '' {}
+
+ Isolate.fromMap(Map map)
+ : id = map['id'], name = map['name'] {
+ }
+ void refresh() {
+ var request = '/$id/';
+ _application.requestManager.requestMap(request).then((map) {
+ update(map);
+ }).catchError((e, trace) {
+ Logger.root.severe('Error while updating isolate summary: $e\n$trace');
+ });
+ }
+
+ void update(Map map) {
+ if (map['type'] != 'Isolate') {
+ Logger.root.severe('Unexpected message type in Isolate.update: ${map["type"]}');
+ return;
+ }
+ if (map['name'] == null ||
+ map['rootLib'] == null ||
+ map['timers'] == null ||
+ map['heap'] == null) {
+ Logger.root.severe("Malformed 'Isolate' response: $map");
+ return;
+ }
+ name = map['name'];
+ rootLib = map['rootLib']['id'];
+ if (map['entry'] != null) {
+ entry = map['entry'];
+ }
+ if (map['topFrame'] != null) {
+ topFrame = map['topFrame'];
+ }
+
+ var timerMap = {};
+ map['timers'].forEach((timer) {
+ timerMap[timer['name']] = timer['time'];
+ });
+ print(timerMap);
+ timers['total'] = timerMap['time_total_runtime'];
+ timers['compile'] = timerMap['time_compilation'];
+ timers['gc'] = 0.0; // TODO(turnidge): Export this from VM.
+ timers['init'] = (timerMap['time_script_loading'] +
+ timerMap['time_creating_snapshot'] +
+ timerMap['time_isolate_initialization'] +
+ timerMap['time_bootstrap']);
+ timers['dart'] = timerMap['time_dart_execution'];
+
+ newHeapUsed = map['heap']['usedNew'];
+ oldHeapUsed = map['heap']['usedOld'];
+ }
+
+ String toString() => '$id';
+
Code findCodeByAddress(int address) {
for (var i = 0; i < codes.length; i++) {
if (codes[i].contains(address)) {

Powered by Google App Engine
This is Rietveld 408576698