| 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 |