OLD | NEW |
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 |
8 /// State for a running isolate. | 8 /// State for a running isolate. |
9 class Isolate extends Observable { | 9 class Isolate extends Observable { |
10 static ObservatoryApplication _application; | 10 static ObservatoryApplication _application; |
11 | 11 |
12 @observable Profile profile; | 12 @observable Profile profile; |
13 @observable final Map<String, Script> scripts = | 13 @observable final Map<String, Script> scripts = |
14 toObservable(new Map<String, Script>()); | 14 toObservable(new Map<String, Script>()); |
15 @observable final List<Code> codes = new List<Code>(); | 15 @observable final List<Code> codes = new List<Code>(); |
16 @observable String id; | 16 @observable String id; |
17 @observable String name; | 17 @observable String name; |
| 18 @observable String vmName; |
18 @observable Map entry; | 19 @observable Map entry; |
19 @observable String rootLib; | 20 @observable String rootLib; |
20 @observable final Map<String, double> timers = | 21 @observable final Map<String, double> timers = |
21 toObservable(new Map<String, double>()); | 22 toObservable(new Map<String, double>()); |
22 | 23 |
23 @observable int newHeapUsed = 0; | 24 @observable int newHeapUsed = 0; |
24 @observable int oldHeapUsed = 0; | 25 @observable int oldHeapUsed = 0; |
25 | 26 |
26 @observable Map topFrame = null; | 27 @observable Map topFrame = null; |
27 @observable String fileAndLine = null; | 28 @observable String fileAndLine = null; |
28 | 29 |
29 Isolate.fromId(this.id) : name = '' {} | 30 Isolate.fromId(this.id) : name = 'isolate' {} |
30 | 31 |
31 Isolate.fromMap(Map map) | 32 Isolate.fromMap(Map map) |
32 : id = map['id'], name = map['name'] { | 33 : id = map['id'], name = map['name'] { |
33 } | 34 } |
34 | 35 |
35 void refresh() { | 36 Future refresh() { |
36 var request = '/$id/'; | 37 var request = '/$id/'; |
37 _application.requestManager.requestMap(request).then((map) { | 38 return _application.requestManager.requestMap(request).then((map) { |
38 update(map); | 39 update(map); |
39 }).catchError((e, trace) { | 40 }).catchError((e, trace) { |
40 Logger.root.severe('Error while updating isolate summary: $e\n$trace')
; | 41 Logger.root.severe('Error while updating isolate summary: $e\n$trace'
); |
41 }); | 42 }); |
42 } | 43 } |
43 | 44 |
44 void update(Map map) { | 45 void update(Map map) { |
45 if (map['type'] != 'Isolate') { | 46 if (map['type'] != 'Isolate') { |
46 Logger.root.severe('Unexpected message type in Isolate.update: ${map["type
"]}'); | 47 Logger.root.severe('Unexpected message type in Isolate.update: ${map["type
"]}'); |
47 return; | 48 return; |
48 } | 49 } |
49 if (map['name'] == null || | 50 if (map['rootLib'] == null || |
50 map['rootLib'] == null || | |
51 map['timers'] == null || | 51 map['timers'] == null || |
52 map['heap'] == null) { | 52 map['heap'] == null) { |
53 Logger.root.severe("Malformed 'Isolate' response: $map"); | 53 Logger.root.severe("Malformed 'Isolate' response: $map"); |
54 return; | 54 return; |
55 } | 55 } |
56 name = map['name']; | |
57 rootLib = map['rootLib']['id']; | 56 rootLib = map['rootLib']['id']; |
| 57 vmName = map['name']; |
58 if (map['entry'] != null) { | 58 if (map['entry'] != null) { |
59 entry = map['entry']; | 59 entry = map['entry']; |
| 60 name = entry['name']; |
| 61 } else { |
| 62 // fred |
| 63 name = 'root isolate'; |
60 } | 64 } |
61 if (map['topFrame'] != null) { | 65 if (map['topFrame'] != null) { |
62 topFrame = map['topFrame']; | 66 topFrame = map['topFrame']; |
63 } | 67 } |
64 | 68 |
65 var timerMap = {}; | 69 var timerMap = {}; |
66 map['timers'].forEach((timer) { | 70 map['timers'].forEach((timer) { |
67 timerMap[timer['name']] = timer['time']; | 71 timerMap[timer['name']] = timer['time']; |
68 }); | 72 }); |
69 timers['total'] = timerMap['time_total_runtime']; | 73 timers['total'] = timerMap['time_total_runtime']; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 var script = scripts[id]; | 116 var script = scripts[id]; |
113 if (script == null) { | 117 if (script == null) { |
114 script = new Script.fromMap(coverage['script']); | 118 script = new Script.fromMap(coverage['script']); |
115 scripts[id] = script; | 119 scripts[id] = script; |
116 } | 120 } |
117 assert(script != null); | 121 assert(script != null); |
118 script._processCoverageHits(coverage['hits']); | 122 script._processCoverageHits(coverage['hits']); |
119 } | 123 } |
120 } | 124 } |
121 } | 125 } |
OLD | NEW |