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 library cpu_profile_table_element; | 5 library cpu_profile_table_element; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 import 'package:observatory/models.dart' as M; | 9 import 'package:observatory/models.dart' as M; |
10 import 'package:observatory/src/elements/containers/virtual_collection.dart'; | 10 import 'package:observatory/src/elements/containers/virtual_collection.dart'; |
11 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart'; | 11 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart'; |
12 import 'package:observatory/src/elements/function_ref.dart'; | 12 import 'package:observatory/src/elements/function_ref.dart'; |
| 13 import 'package:observatory/src/elements/helpers/nav_bar.dart'; |
| 14 import 'package:observatory/src/elements/helpers/nav_menu.dart'; |
13 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; | 15 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |
14 import 'package:observatory/src/elements/helpers/tag.dart'; | 16 import 'package:observatory/src/elements/helpers/tag.dart'; |
15 import 'package:observatory/src/elements/helpers/uris.dart'; | 17 import 'package:observatory/src/elements/helpers/uris.dart'; |
16 import 'package:observatory/src/elements/nav/bar.dart'; | |
17 import 'package:observatory/src/elements/nav/isolate_menu.dart'; | 18 import 'package:observatory/src/elements/nav/isolate_menu.dart'; |
18 import 'package:observatory/src/elements/nav/menu.dart'; | |
19 import 'package:observatory/src/elements/nav/notify.dart'; | 19 import 'package:observatory/src/elements/nav/notify.dart'; |
20 import 'package:observatory/src/elements/nav/refresh.dart'; | 20 import 'package:observatory/src/elements/nav/refresh.dart'; |
21 import 'package:observatory/src/elements/nav/top_menu.dart'; | 21 import 'package:observatory/src/elements/nav/top_menu.dart'; |
22 import 'package:observatory/src/elements/nav/vm_menu.dart'; | 22 import 'package:observatory/src/elements/nav/vm_menu.dart'; |
23 import 'package:observatory/src/elements/sample_buffer_control.dart'; | 23 import 'package:observatory/src/elements/sample_buffer_control.dart'; |
24 import 'package:observatory/src/elements/stack_trace_tree_config.dart'; | 24 import 'package:observatory/src/elements/stack_trace_tree_config.dart'; |
25 import 'package:observatory/utils.dart'; | 25 import 'package:observatory/utils.dart'; |
26 | 26 |
27 enum _Table { | 27 enum _Table { |
28 functions, | 28 functions, |
(...skipping 11 matching lines...) Expand all Loading... |
40 | 40 |
41 enum _SortingDirection { | 41 enum _SortingDirection { |
42 ascending, | 42 ascending, |
43 descending | 43 descending |
44 } | 44 } |
45 | 45 |
46 class CpuProfileTableElement extends HtmlElement implements Renderable { | 46 class CpuProfileTableElement extends HtmlElement implements Renderable { |
47 static const tag = const Tag<CpuProfileTableElement>('cpu-profile-table', | 47 static const tag = const Tag<CpuProfileTableElement>('cpu-profile-table', |
48 dependencies: const [ | 48 dependencies: const [ |
49 FunctionRefElement.tag, | 49 FunctionRefElement.tag, |
50 NavBarElement.tag, | |
51 NavTopMenuElement.tag, | 50 NavTopMenuElement.tag, |
52 NavVMMenuElement.tag, | 51 NavVMMenuElement.tag, |
53 NavIsolateMenuElement.tag, | 52 NavIsolateMenuElement.tag, |
54 NavMenuElement.tag, | |
55 NavRefreshElement.tag, | 53 NavRefreshElement.tag, |
56 NavNotifyElement.tag, | 54 NavNotifyElement.tag, |
57 SampleBufferControlElement.tag, | 55 SampleBufferControlElement.tag, |
58 StackTraceTreeConfigElement.tag, | 56 StackTraceTreeConfigElement.tag, |
59 CpuProfileVirtualTreeElement.tag, | 57 CpuProfileVirtualTreeElement.tag, |
60 VirtualCollectionElement.tag | 58 VirtualCollectionElement.tag |
61 ]); | 59 ]); |
62 | 60 |
63 RenderingScheduler<CpuProfileTableElement> _r; | 61 RenderingScheduler<CpuProfileTableElement> _r; |
64 | 62 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 | 118 |
121 @override | 119 @override |
122 detached() { | 120 detached() { |
123 super.detached(); | 121 super.detached(); |
124 _r.disable(notify: true); | 122 _r.disable(notify: true); |
125 children = []; | 123 children = []; |
126 } | 124 } |
127 | 125 |
128 void render() { | 126 void render() { |
129 var content = [ | 127 var content = [ |
130 new NavBarElement(queue: _r.queue) | 128 navBar([ |
131 ..children = [ | |
132 new NavTopMenuElement(queue: _r.queue), | 129 new NavTopMenuElement(queue: _r.queue), |
133 new NavVMMenuElement(_vm, _events, queue: _r.queue), | 130 new NavVMMenuElement(_vm, _events, queue: _r.queue), |
134 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue), | 131 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue), |
135 new NavMenuElement('cpu profile (table)', | 132 navMenu('cpu profile (table)'), |
136 link: Uris.cpuProfilerTable(_isolate), last: true, queue: _r.queue
), | |
137 new NavRefreshElement(queue: _r.queue) | 133 new NavRefreshElement(queue: _r.queue) |
138 ..onRefresh.listen(_refresh), | 134 ..onRefresh.listen(_refresh), |
139 new NavRefreshElement(label: 'Clear', queue: _r.queue) | 135 new NavRefreshElement(label: 'Clear', queue: _r.queue) |
140 ..onRefresh.listen(_clearCpuProfile), | 136 ..onRefresh.listen(_clearCpuProfile), |
141 new NavNotifyElement(_notifications, queue: _r.queue) | 137 new NavNotifyElement(_notifications, queue: _r.queue) |
142 ], | 138 ]), |
143 ]; | 139 ]; |
144 if (_progress == null) { | 140 if (_progress == null) { |
145 children = content; | 141 children = content; |
146 return; | 142 return; |
147 } | 143 } |
148 content.add(new SampleBufferControlElement(_progress, _progressStream, | 144 content.add(new SampleBufferControlElement(_progress, _progressStream, |
149 showTag: false, queue: _r.queue)); | 145 showTag: false, queue: _r.queue)); |
150 if (_progress.status == M.SampleProfileLoadingStatus.loaded) { | 146 if (_progress.status == M.SampleProfileLoadingStatus.loaded) { |
151 content.add(new BRElement()); | 147 content.add(new BRElement()); |
152 content.addAll(_createTables()); | 148 content.addAll(_createTables()); |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 | 447 |
452 static double _getExclusiveT(M.ProfileFunction f) => | 448 static double _getExclusiveT(M.ProfileFunction f) => |
453 f.normalizedExclusiveTicks; | 449 f.normalizedExclusiveTicks; |
454 static double _getInclusiveT(M.ProfileFunction f) => | 450 static double _getInclusiveT(M.ProfileFunction f) => |
455 f.normalizedInclusiveTicks; | 451 f.normalizedInclusiveTicks; |
456 double _getCalleeT(M.ProfileFunction f) => | 452 double _getCalleeT(M.ProfileFunction f) => |
457 _selected.callees[f] / _selected.callees.values.reduce((a, b) => a + b); | 453 _selected.callees[f] / _selected.callees.values.reduce((a, b) => a + b); |
458 double _getCallerT(M.ProfileFunction f) => | 454 double _getCallerT(M.ProfileFunction f) => |
459 _selected.callers[f] / _selected.callers.values.reduce((a, b) => a + b); | 455 _selected.callers[f] / _selected.callers.values.reduce((a, b) => a + b); |
460 } | 456 } |
OLD | NEW |