| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analyzer.src.generated.utilities_general; | 5 library analyzer.src.generated.utilities_general; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:developer' show UserTag; | 8 import 'dart:developer' show UserTag; |
| 9 | 9 |
| 10 export 'package:front_end/src/base/jenkins_smi_hash.dart' show JenkinsSmiHash; | 10 export 'package:front_end/src/base/jenkins_smi_hash.dart' show JenkinsSmiHash; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 84 |
| 85 /** | 85 /** |
| 86 * Return the current [PerformanceTag] for the isolate. | 86 * Return the current [PerformanceTag] for the isolate. |
| 87 */ | 87 */ |
| 88 static PerformanceTag get current => _PerformanceTagImpl.current; | 88 static PerformanceTag get current => _PerformanceTagImpl.current; |
| 89 | 89 |
| 90 /** | 90 /** |
| 91 * Return the [PerformanceTag] that is initially current. This is intended | 91 * Return the [PerformanceTag] that is initially current. This is intended |
| 92 * to track time when the system is performing unknown operations. | 92 * to track time when the system is performing unknown operations. |
| 93 */ | 93 */ |
| 94 static PerformanceTag get UNKNOWN => _PerformanceTagImpl.UNKNOWN; | 94 static PerformanceTag get unknown => _PerformanceTagImpl.unknown; |
| 95 | 95 |
| 96 /** | 96 /** |
| 97 * Create a [PerformanceTag] having the given [label]. A [UserTag] will also | 97 * Create a [PerformanceTag] having the given [label]. A [UserTag] will also |
| 98 * be created, having the same [label], so that performance information can | 98 * be created, having the same [label], so that performance information can |
| 99 * be queried using the observatory. | 99 * be queried using the observatory. |
| 100 */ | 100 */ |
| 101 factory PerformanceTag(String label) = _PerformanceTagImpl; | 101 factory PerformanceTag(String label) = _PerformanceTagImpl; |
| 102 | 102 |
| 103 /** | 103 /** |
| 104 * Return the total number of milliseconds that this [PerformanceTag] has | 104 * Return the total number of milliseconds that this [PerformanceTag] has |
| 105 * been the current [PerformanceTag] for the isolate. | 105 * been the current [PerformanceTag] for the isolate. |
| 106 * | 106 * |
| 107 * This call is safe even if this [PerformanceTag] is current. | 107 * This call is safe even if this [PerformanceTag] is current. |
| 108 */ | 108 */ |
| 109 int get elapsedMs; | 109 int get elapsedMs; |
| 110 | 110 |
| 111 /** | 111 /** |
| 112 * Return the label for this [PerformanceTag]. | 112 * Return the label for this [PerformanceTag]. |
| 113 */ | 113 */ |
| 114 String get label; | 114 String get label; |
| 115 | 115 |
| 116 /** | 116 /** |
| 117 * Create a child tag of the current tag. The new tag's name will include the |
| 118 * parent's name. |
| 119 */ |
| 120 PerformanceTag createChild(String childTagName); |
| 121 |
| 122 /** |
| 117 * Make this the current tag for the isolate, and return the previous tag. | 123 * Make this the current tag for the isolate, and return the previous tag. |
| 118 */ | 124 */ |
| 119 PerformanceTag makeCurrent(); | 125 PerformanceTag makeCurrent(); |
| 120 | 126 |
| 121 /** | 127 /** |
| 122 * Make this the current tag for the isolate, run [f], and restore the | 128 * Make this the current tag for the isolate, run [f], and restore the |
| 123 * previous tag. Returns the result of invoking [f]. | 129 * previous tag. Returns the result of invoking [f]. |
| 124 */ | 130 */ |
| 125 dynamic/*=E*/ makeCurrentWhile/*<E>*/(dynamic/*=E*/ f()); | 131 dynamic/*=E*/ makeCurrentWhile/*<E>*/(dynamic/*=E*/ f()); |
| 126 | 132 |
| 127 /** | 133 /** |
| 128 * Reset the total time tracked by all [PerformanceTag]s to zero. | 134 * Reset the total time tracked by all [PerformanceTag]s to zero. |
| 129 */ | 135 */ |
| 130 static void reset() { | 136 static void reset() { |
| 131 for (_PerformanceTagImpl tag in _PerformanceTagImpl.all) { | 137 for (_PerformanceTagImpl tag in _PerformanceTagImpl.all) { |
| 132 tag.stopwatch.reset(); | 138 tag.stopwatch.reset(); |
| 133 } | 139 } |
| 134 } | 140 } |
| 135 } | 141 } |
| 136 | 142 |
| 137 class _PerformanceTagImpl implements PerformanceTag { | 143 class _PerformanceTagImpl implements PerformanceTag { |
| 138 /** | 144 /** |
| 139 * The current performance tag for the isolate. | 145 * The current performance tag for the isolate. |
| 140 */ | 146 */ |
| 141 static _PerformanceTagImpl current = UNKNOWN; | 147 static _PerformanceTagImpl current = unknown; |
| 142 | 148 |
| 143 static final _PerformanceTagImpl UNKNOWN = new _PerformanceTagImpl('unknown'); | 149 static final _PerformanceTagImpl unknown = new _PerformanceTagImpl('unknown'); |
| 144 | 150 |
| 145 /** | 151 /** |
| 146 * A list of all performance tags that have been created so far. | 152 * A list of all performance tags that have been created so far. |
| 147 */ | 153 */ |
| 148 static List<_PerformanceTagImpl> all = <_PerformanceTagImpl>[]; | 154 static List<_PerformanceTagImpl> all = <_PerformanceTagImpl>[]; |
| 149 | 155 |
| 150 /** | 156 /** |
| 151 * The [UserTag] associated with this [PerformanceTag]. | 157 * The [UserTag] associated with this [PerformanceTag]. |
| 152 */ | 158 */ |
| 153 final UserTag userTag; | 159 final UserTag userTag; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 164 all.add(this); | 170 all.add(this); |
| 165 } | 171 } |
| 166 | 172 |
| 167 @override | 173 @override |
| 168 int get elapsedMs => stopwatch.elapsedMilliseconds; | 174 int get elapsedMs => stopwatch.elapsedMilliseconds; |
| 169 | 175 |
| 170 @override | 176 @override |
| 171 String get label => userTag.label; | 177 String get label => userTag.label; |
| 172 | 178 |
| 173 @override | 179 @override |
| 180 PerformanceTag createChild(String childTagName) { |
| 181 return new _PerformanceTagImpl('$label.$childTagName'); |
| 182 } |
| 183 |
| 184 @override |
| 174 PerformanceTag makeCurrent() { | 185 PerformanceTag makeCurrent() { |
| 175 if (identical(this, current)) { | 186 if (identical(this, current)) { |
| 176 return current; | 187 return current; |
| 177 } | 188 } |
| 178 _PerformanceTagImpl previous = current; | 189 _PerformanceTagImpl previous = current; |
| 179 previous.stopwatch.stop(); | 190 previous.stopwatch.stop(); |
| 180 stopwatch.start(); | 191 stopwatch.start(); |
| 181 current = this; | 192 current = this; |
| 182 userTag.makeCurrent(); | 193 userTag.makeCurrent(); |
| 183 return previous; | 194 return previous; |
| 184 } | 195 } |
| 185 | 196 |
| 186 dynamic/*=E*/ makeCurrentWhile/*<E>*/(dynamic/*=E*/ f()) { | 197 dynamic/*=E*/ makeCurrentWhile/*<E>*/(dynamic/*=E*/ f()) { |
| 187 PerformanceTag prevTag = makeCurrent(); | 198 PerformanceTag prevTag = makeCurrent(); |
| 188 try { | 199 try { |
| 189 return f(); | 200 return f(); |
| 190 } finally { | 201 } finally { |
| 191 prevTag.makeCurrent(); | 202 prevTag.makeCurrent(); |
| 192 } | 203 } |
| 193 } | 204 } |
| 194 } | 205 } |
| OLD | NEW |