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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 observatory; 5 part of observatory;
6 6
7
7 /// State for a running isolate. 8 /// State for a running isolate.
8 class Isolate extends Observable { 9 class Isolate extends Observable {
10 static ObservatoryApplication _application;
11
9 @observable Profile profile; 12 @observable Profile profile;
10 @observable final Map<String, Script> scripts = 13 @observable final Map<String, Script> scripts =
11 toObservable(new Map<String, Script>()); 14 toObservable(new Map<String, Script>());
12 @observable final List<Code> codes = new List<Code>(); 15 @observable final List<Code> codes = new List<Code>();
13 @observable String id; 16 @observable String id;
14 @observable String name; 17 @observable String name;
18 @observable Map entry;
19 @observable String rootLib;
20 @observable final Map<String, double> timers =
21 toObservable(new Map<String, double>());
15 22
16 Isolate(this.id, this.name); 23 @observable int newHeapUsed = 0;
24 @observable int oldHeapUsed = 0;
17 25
18 String toString() => '$id $name'; 26 @observable Map topFrame = null;
27 @observable String fileAndLine = null;
28
29 Isolate.fromId(this.id) : name = '$id' {}
30
31 Isolate.fromMap(Map map)
32 : id = map['id'], name = map['name'] {
33 }
34
35 void refresh() {
36 var request = '/$id/';
37 _application.requestManager.requestMap(request).then((map) {
38 update(map);
39 }).catchError((e) {
40 Logger.root.severe('Error while updating isolate summary: $e');
41 });
42 }
43
44 void update(Map map) {
45 if (map is! Map || map['type'] != 'Isolate') {
46 return;
47 }
48 if (map['name'] != null) {
49 name = map['name'];
50 }
51 if (map['rootLib'] != null) {
52 rootLib = map['rootLib']['id'];
53 }
54 if (map['entry'] != null) {
55 entry = map['entry'];
56 }
57 if (map['timers'] != null) {
58 var timerMap = {};
59 map['timers'].forEach((timer) {
60 timerMap[timer['name']] = timer['time'];
61 });
62 print(timerMap);
63 timers['total'] = timerMap['time_total_runtime'];
64 timers['compile'] = timerMap['time_compilation'];
65 timers['gc'] = 0.0; // TODO(turnidge): Export this from VM.
66 timers['init'] = (timerMap['time_script_loading'] +
67 timerMap['time_creating_snapshot'] +
68 timerMap['time_isolate_initialization'] +
69 timerMap['time_bootstrap']);
70 timers['dart'] = timerMap['time_dart_execution'];
71 }
72 if (map['heap'] != null) {
Cutch 2014/01/28 19:32:51 Can we assert on these being present in the respon
turnidge 2014/01/28 23:18:55 I changed the code to detect the malformed respons
73 newHeapUsed = map['heap']['usedNew'];
74 oldHeapUsed = map['heap']['usedOld'];
75 }
76 if (map['topFrame'] != null) {
77 topFrame = map['topFrame'];
78 }
79 }
80
81 String toString() => '$id';
19 82
20 Code findCodeByAddress(int address) { 83 Code findCodeByAddress(int address) {
21 for (var i = 0; i < codes.length; i++) { 84 for (var i = 0; i < codes.length; i++) {
22 if (codes[i].contains(address)) { 85 if (codes[i].contains(address)) {
23 return codes[i]; 86 return codes[i];
24 } 87 }
25 } 88 }
26 } 89 }
27 90
28 Code findCodeByName(String name) { 91 Code findCodeByName(String name) {
(...skipping 17 matching lines...) Expand all
46 var script = scripts[id]; 109 var script = scripts[id];
47 if (script == null) { 110 if (script == null) {
48 script = new Script.fromMap(coverage['script']); 111 script = new Script.fromMap(coverage['script']);
49 scripts[id] = script; 112 scripts[id] = script;
50 } 113 }
51 assert(script != null); 114 assert(script != null);
52 script._processCoverageHits(coverage['hits']); 115 script._processCoverageHits(coverage['hits']);
53 } 116 }
54 } 117 }
55 } 118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698