| 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 function_view_element; | 5 library function_view_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/class_ref.dart'; | 10 import 'package:observatory/src/elements/class_ref.dart'; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 import 'package:observatory/src/elements/nav/notify.dart'; | 23 import 'package:observatory/src/elements/nav/notify.dart'; |
| 24 import 'package:observatory/src/elements/nav/refresh.dart'; | 24 import 'package:observatory/src/elements/nav/refresh.dart'; |
| 25 import 'package:observatory/src/elements/nav/top_menu.dart'; | 25 import 'package:observatory/src/elements/nav/top_menu.dart'; |
| 26 import 'package:observatory/src/elements/nav/vm_menu.dart'; | 26 import 'package:observatory/src/elements/nav/vm_menu.dart'; |
| 27 import 'package:observatory/src/elements/object_common.dart'; | 27 import 'package:observatory/src/elements/object_common.dart'; |
| 28 import 'package:observatory/src/elements/source_inset.dart'; | 28 import 'package:observatory/src/elements/source_inset.dart'; |
| 29 import 'package:observatory/src/elements/source_link.dart'; | 29 import 'package:observatory/src/elements/source_link.dart'; |
| 30 import 'package:observatory/src/elements/view_footer.dart'; | 30 import 'package:observatory/src/elements/view_footer.dart'; |
| 31 | 31 |
| 32 class FunctionViewElement extends HtmlElement implements Renderable { | 32 class FunctionViewElement extends HtmlElement implements Renderable { |
| 33 static const tag = const Tag<FunctionViewElement>('function-view', | 33 static const tag = |
| 34 dependencies: const [ | 34 const Tag<FunctionViewElement>('function-view', dependencies: const [ |
| 35 ClassRefElement.tag, | 35 ClassRefElement.tag, |
| 36 CodeRefElement.tag, | 36 CodeRefElement.tag, |
| 37 CurlyBlockElement.tag, | 37 CurlyBlockElement.tag, |
| 38 FieldRefElement.tag, | 38 FieldRefElement.tag, |
| 39 InstanceRefElement.tag, | 39 InstanceRefElement.tag, |
| 40 NavClassMenuElement.tag, | 40 NavClassMenuElement.tag, |
| 41 NavLibraryMenuElement.tag, | 41 NavLibraryMenuElement.tag, |
| 42 NavTopMenuElement.tag, | 42 NavTopMenuElement.tag, |
| 43 NavVMMenuElement.tag, | 43 NavVMMenuElement.tag, |
| 44 NavIsolateMenuElement.tag, | 44 NavIsolateMenuElement.tag, |
| 45 NavRefreshElement.tag, | 45 NavRefreshElement.tag, |
| 46 NavNotifyElement.tag, | 46 NavNotifyElement.tag, |
| 47 ObjectCommonElement.tag, | 47 ObjectCommonElement.tag, |
| 48 SourceLinkElement.tag, | 48 SourceLinkElement.tag, |
| 49 SourceInsetElement.tag, | 49 SourceInsetElement.tag, |
| 50 ViewFooterElement.tag | 50 ViewFooterElement.tag |
| 51 ]); | 51 ]); |
| 52 | 52 |
| 53 RenderingScheduler<FunctionViewElement> _r; | 53 RenderingScheduler<FunctionViewElement> _r; |
| 54 | 54 |
| 55 Stream<RenderedEvent<FunctionViewElement>> get onRendered => _r.onRendered; | 55 Stream<RenderedEvent<FunctionViewElement>> get onRendered => _r.onRendered; |
| 56 | 56 |
| 57 M.VM _vm; | 57 M.VM _vm; |
| 58 M.IsolateRef _isolate; | 58 M.IsolateRef _isolate; |
| 59 M.EventRepository _events; | 59 M.EventRepository _events; |
| 60 M.NotificationRepository _notifications; | 60 M.NotificationRepository _notifications; |
| 61 M.Function _function; | 61 M.Function _function; |
| 62 M.LibraryRef _library; | 62 M.LibraryRef _library; |
| 63 M.FunctionRepository _functions; | 63 M.FunctionRepository _functions; |
| 64 M.ClassRepository _classes; | 64 M.ClassRepository _classes; |
| 65 M.RetainedSizeRepository _retainedSizes; | 65 M.RetainedSizeRepository _retainedSizes; |
| 66 M.ReachableSizeRepository _reachableSizes; | 66 M.ReachableSizeRepository _reachableSizes; |
| 67 M.InboundReferencesRepository _references; | 67 M.InboundReferencesRepository _references; |
| 68 M.RetainingPathRepository _retainingPaths; | 68 M.RetainingPathRepository _retainingPaths; |
| 69 M.ScriptRepository _scripts; | 69 M.ScriptRepository _scripts; |
| 70 M.InstanceRepository _instances; | 70 M.InstanceRepository _instances; |
| 71 | 71 |
| 72 | |
| 73 M.VMRef get vm => _vm; | 72 M.VMRef get vm => _vm; |
| 74 M.IsolateRef get isolate => _isolate; | 73 M.IsolateRef get isolate => _isolate; |
| 75 M.NotificationRepository get notifications => _notifications; | 74 M.NotificationRepository get notifications => _notifications; |
| 76 M.Function get function => _function; | 75 M.Function get function => _function; |
| 77 | 76 |
| 78 factory FunctionViewElement(M.VM vm, M.IsolateRef isolate, M.Function function
, | 77 factory FunctionViewElement( |
| 79 M.EventRepository events, | 78 M.VM vm, |
| 80 M.NotificationRepository notifications, | 79 M.IsolateRef isolate, |
| 81 M.FunctionRepository functions, | 80 M.Function function, |
| 82 M.ClassRepository classes, | 81 M.EventRepository events, |
| 83 M.RetainedSizeRepository retainedSizes, | 82 M.NotificationRepository notifications, |
| 84 M.ReachableSizeRepository reachableSizes, | 83 M.FunctionRepository functions, |
| 85 M.InboundReferencesRepository references, | 84 M.ClassRepository classes, |
| 86 M.RetainingPathRepository retainingPaths, | 85 M.RetainedSizeRepository retainedSizes, |
| 87 M.ScriptRepository scripts, | 86 M.ReachableSizeRepository reachableSizes, |
| 88 M.InstanceRepository instances, | 87 M.InboundReferencesRepository references, |
| 89 {RenderingQueue queue}) { | 88 M.RetainingPathRepository retainingPaths, |
| 89 M.ScriptRepository scripts, |
| 90 M.InstanceRepository instances, |
| 91 {RenderingQueue queue}) { |
| 90 assert(vm != null); | 92 assert(vm != null); |
| 91 assert(isolate != null); | 93 assert(isolate != null); |
| 92 assert(events != null); | 94 assert(events != null); |
| 93 assert(notifications != null); | 95 assert(notifications != null); |
| 94 assert(function != null); | 96 assert(function != null); |
| 95 assert(functions != null); | 97 assert(functions != null); |
| 96 assert(classes != null); | 98 assert(classes != null); |
| 97 assert(retainedSizes != null); | 99 assert(retainedSizes != null); |
| 98 assert(reachableSizes != null); | 100 assert(reachableSizes != null); |
| 99 assert(references != null); | 101 assert(references != null); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 @override | 135 @override |
| 134 detached() { | 136 detached() { |
| 135 super.detached(); | 137 super.detached(); |
| 136 _r.disable(notify: true); | 138 _r.disable(notify: true); |
| 137 children = []; | 139 children = []; |
| 138 } | 140 } |
| 139 | 141 |
| 140 void render() { | 142 void render() { |
| 141 children = [ | 143 children = [ |
| 142 navBar(_createMenu()), | 144 navBar(_createMenu()), |
| 143 new DivElement()..classes = ['content-centered-big'] | 145 new DivElement() |
| 146 ..classes = ['content-centered-big'] |
| 144 ..children = [ | 147 ..children = [ |
| 145 new HeadingElement.h2()..text = 'Function ${_function.name}', | 148 new HeadingElement.h2()..text = 'Function ${_function.name}', |
| 146 new HRElement(), | 149 new HRElement(), |
| 147 new ObjectCommonElement(_isolate, _function, _retainedSizes, | 150 new ObjectCommonElement(_isolate, _function, _retainedSizes, |
| 148 _reachableSizes, _references, _retainingPaths, | 151 _reachableSizes, _references, _retainingPaths, _instances, |
| 149 _instances, queue: _r.queue), | 152 queue: _r.queue), |
| 150 new BRElement(), | 153 new BRElement(), |
| 151 new DivElement()..classes = ['memberList'] | 154 new DivElement() |
| 155 ..classes = ['memberList'] |
| 152 ..children = _createMembers(), | 156 ..children = _createMembers(), |
| 153 new HRElement(), | 157 new HRElement(), |
| 154 new DivElement() | 158 new DivElement() |
| 155 ..children = _function.location == null ? const [] | 159 ..children = _function.location == null |
| 156 : [ | 160 ? const [] |
| 157 new SourceInsetElement(_isolate, _function.location, _scripts, | 161 : [ |
| 158 _instances, _events, queue: _r.queue) | 162 new SourceInsetElement(_isolate, _function.location, |
| 159 ], | 163 _scripts, _instances, _events, |
| 164 queue: _r.queue) |
| 165 ], |
| 160 new ViewFooterElement(queue: _r.queue) | 166 new ViewFooterElement(queue: _r.queue) |
| 161 ] | 167 ] |
| 162 ]; | 168 ]; |
| 163 } | 169 } |
| 164 | 170 |
| 165 List<Element> _createMenu() { | 171 List<Element> _createMenu() { |
| 166 final menu = [ | 172 final menu = [ |
| 167 new NavTopMenuElement(queue: _r.queue), | 173 new NavTopMenuElement(queue: _r.queue), |
| 168 new NavVMMenuElement(_vm, _events, queue: _r.queue), | 174 new NavVMMenuElement(_vm, _events, queue: _r.queue), |
| 169 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue) | 175 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue) |
| 170 ]; | 176 ]; |
| 171 if (_library != null) { | 177 if (_library != null) { |
| 172 menu.add(new NavLibraryMenuElement(_isolate, _function.dartOwner, | 178 menu.add(new NavLibraryMenuElement(_isolate, _function.dartOwner, |
| 173 queue: _r.queue)); | 179 queue: _r.queue)); |
| 174 } else if (_function.dartOwner is M.ClassRef) { | 180 } else if (_function.dartOwner is M.ClassRef) { |
| 175 menu.add( | 181 menu.add(new NavClassMenuElement(_isolate, _function.dartOwner, |
| 176 new NavClassMenuElement(_isolate, _function.dartOwner, queue: _r.queue) | 182 queue: _r.queue)); |
| 177 ); | |
| 178 } | 183 } |
| 179 menu.addAll([ | 184 menu.addAll([ |
| 180 navMenu(_function.name), | 185 navMenu(_function.name), |
| 181 new NavRefreshElement(queue: _r.queue) | 186 new NavRefreshElement(queue: _r.queue) |
| 182 ..onRefresh.listen((e) { | 187 ..onRefresh.listen((e) { |
| 183 e.element.disabled = true; | 188 e.element.disabled = true; |
| 184 _refresh(); | 189 _refresh(); |
| 185 }), | 190 }), |
| 186 new NavNotifyElement(_notifications, queue: _r.queue) | 191 new NavNotifyElement(_notifications, queue: _r.queue) |
| 187 ]); | 192 ]); |
| 188 return menu; | 193 return menu; |
| 189 } | 194 } |
| 190 | 195 |
| 191 List<Element> _createMembers() { | 196 List<Element> _createMembers() { |
| 192 final members = <Element>[ | 197 final members = <Element>[ |
| 193 new DivElement()..classes = ['memberItem'] | 198 new DivElement() |
| 199 ..classes = ['memberItem'] |
| 194 ..children = [ | 200 ..children = [ |
| 195 new DivElement()..classes = ['memberName'] | 201 new DivElement() |
| 202 ..classes = ['memberName'] |
| 196 ..text = 'kind', | 203 ..text = 'kind', |
| 197 new DivElement()..classes = ['memberName'] | 204 new DivElement() |
| 205 ..classes = ['memberName'] |
| 198 ..children = [ | 206 ..children = [ |
| 199 new SpanElement() | 207 new SpanElement() |
| 200 ..text = '${_function.isStatic ? "static ": ""}' | 208 ..text = '${_function.isStatic ? "static ": ""}' |
| 201 '${_function.isConst ? "const ": ""}' | 209 '${_function.isConst ? "const ": ""}' |
| 202 '${_functionKindToString(_function.kind)}' | 210 '${_functionKindToString(_function.kind)}' |
| 203 ] | 211 ] |
| 204 ], | 212 ], |
| 205 new DivElement()..classes = ['memberItem'] | 213 new DivElement() |
| 214 ..classes = ['memberItem'] |
| 206 ..children = [ | 215 ..children = [ |
| 207 new DivElement()..classes = ['memberName'] | 216 new DivElement() |
| 217 ..classes = ['memberName'] |
| 208 ..text = 'owner', | 218 ..text = 'owner', |
| 209 new DivElement()..classes = ['memberName'] | 219 new DivElement() |
| 220 ..classes = ['memberName'] |
| 210 ..children = [ | 221 ..children = [ |
| 211 _function.dartOwner == null | 222 _function.dartOwner == null |
| 212 ? (new SpanElement()..text = '...') | 223 ? (new SpanElement()..text = '...') |
| 213 : anyRef(_isolate, _function.dartOwner, _instances, | 224 : anyRef(_isolate, _function.dartOwner, _instances, |
| 214 queue: _r.queue) | 225 queue: _r.queue) |
| 215 ] | 226 ] |
| 216 ] | 227 ] |
| 217 ]; | 228 ]; |
| 218 if (_function.field != null) { | 229 if (_function.field != null) { |
| 219 members.add( | 230 members.add(new DivElement() |
| 220 new DivElement()..classes = ['memberItem'] | 231 ..classes = ['memberItem'] |
| 232 ..children = [ |
| 233 new DivElement() |
| 234 ..classes = ['memberName'] |
| 235 ..text = 'script', |
| 236 new DivElement() |
| 237 ..classes = ['memberName'] |
| 238 ..children = [ |
| 239 new FieldRefElement(_isolate, _function.field, _instances, |
| 240 queue: _r.queue) |
| 241 ] |
| 242 ]); |
| 243 } |
| 244 members.add(new DivElement() |
| 245 ..classes = ['memberItem'] |
| 246 ..children = [ |
| 247 new DivElement() |
| 248 ..classes = ['memberName'] |
| 249 ..text = 'script', |
| 250 new DivElement() |
| 251 ..classes = ['memberName'] |
| 221 ..children = [ | 252 ..children = [ |
| 222 new DivElement()..classes = ['memberName'] | 253 new SourceLinkElement(_isolate, _function.location, _scripts, |
| 223 ..text = 'script', | 254 queue: _r.queue) |
| 224 new DivElement()..classes = ['memberName'] | |
| 225 ..children = [ | |
| 226 new FieldRefElement(_isolate, _function.field, _instances, | |
| 227 queue: _r.queue) | |
| 228 ] | |
| 229 ] | 255 ] |
| 230 ); | 256 ]); |
| 231 } | 257 if (_function.code != null) { |
| 232 members.add( | 258 members.add(new DivElement() |
| 233 new DivElement()..classes = ['memberItem'] | 259 ..classes = ['memberItem'] |
| 234 ..children = [ | 260 ..children = [ |
| 235 new DivElement()..classes = ['memberName'] | 261 new DivElement() |
| 236 ..text = 'script', | 262 ..classes = ['memberName'] |
| 237 new DivElement()..classes = ['memberName'] | 263 ..text = 'current code', |
| 264 new DivElement() |
| 265 ..classes = ['memberName'] |
| 238 ..children = [ | 266 ..children = [ |
| 239 new SourceLinkElement(_isolate, _function.location, _scripts, | 267 new CodeRefElement(_isolate, _function.code, queue: _r.queue) |
| 240 queue: _r.queue) | |
| 241 ] | 268 ] |
| 242 ] | 269 ]); |
| 243 ); | |
| 244 if (_function.code != null) { | |
| 245 members.add( | |
| 246 new DivElement()..classes = ['memberItem'] | |
| 247 ..children = [ | |
| 248 new DivElement()..classes = ['memberName'] | |
| 249 ..text = 'current code', | |
| 250 new DivElement()..classes = ['memberName'] | |
| 251 ..children = [ | |
| 252 new CodeRefElement(_isolate, _function.code, queue: _r.queue) | |
| 253 ] | |
| 254 ] | |
| 255 ); | |
| 256 } | 270 } |
| 257 if (_function.unoptimizedCode != null) { | 271 if (_function.unoptimizedCode != null) { |
| 258 members.add( | 272 members.add(new DivElement() |
| 259 new DivElement()..classes = ['memberItem'] | 273 ..classes = ['memberItem'] |
| 260 ..children = [ | 274 ..children = [ |
| 261 new DivElement()..classes = ['memberName'] | 275 new DivElement() |
| 262 ..text = 'unoptimized code', | 276 ..classes = ['memberName'] |
| 263 new DivElement()..classes = ['memberName'] | 277 ..text = 'unoptimized code', |
| 264 ..children = [ | 278 new DivElement() |
| 265 new CodeRefElement(_isolate, _function.unoptimizedCode, | 279 ..classes = ['memberName'] |
| 266 queue: _r.queue), | 280 ..children = [ |
| 267 new SpanElement() | 281 new CodeRefElement(_isolate, _function.unoptimizedCode, |
| 268 ..title = 'This count is used to determine when a function ' | 282 queue: _r.queue), |
| 269 'will be optimized. It is a combination of call ' | 283 new SpanElement() |
| 270 'counts and other factors.' | 284 ..title = 'This count is used to determine when a function ' |
| 271 ..text = ' (usage count: ${function.usageCounter })' | 285 'will be optimized. It is a combination of call ' |
| 272 ] | 286 'counts and other factors.' |
| 273 ] | 287 ..text = ' (usage count: ${function.usageCounter })' |
| 274 ); | 288 ] |
| 289 ]); |
| 275 } | 290 } |
| 276 members.add( | 291 members.add(new DivElement() |
| 277 new DivElement() | 292 ..classes = ['memberItem'] |
| 278 ..classes = ['memberItem'] | 293 ..text = ' '); |
| 279 ..text = ' '); | |
| 280 | 294 |
| 281 if (_function.icDataArray != null) { | 295 if (_function.icDataArray != null) { |
| 282 members.add( | 296 members.add(new DivElement() |
| 283 new DivElement() | 297 ..classes = ['memberItem'] |
| 284 ..classes = ['memberItem'] | 298 ..children = [ |
| 285 ..children = [ | 299 new DivElement() |
| 286 new DivElement() | 300 ..classes = ['memberName'] |
| 287 ..classes = ['memberName'] | 301 ..text = 'ic data array', |
| 288 ..text = 'ic data array', | 302 new DivElement() |
| 289 new DivElement() | 303 ..classes = ['memberName'] |
| 290 ..classes = ['memberName'] | 304 ..children = [ |
| 291 ..children = [ | 305 new InstanceRefElement( |
| 292 new InstanceRefElement(_isolate, _function.icDataArray, | 306 _isolate, _function.icDataArray, _instances, |
| 293 _instances, queue: _r.queue) | 307 queue: _r.queue) |
| 294 ] | 308 ] |
| 295 ] | 309 ]); |
| 296 ); | |
| 297 } | 310 } |
| 298 | 311 |
| 299 members.addAll([ | 312 members.addAll([ |
| 300 new DivElement()..classes = ['memberItem'] | 313 new DivElement() |
| 314 ..classes = ['memberItem'] |
| 301 ..children = [ | 315 ..children = [ |
| 302 new DivElement()..classes = ['memberName'] | 316 new DivElement() |
| 317 ..classes = ['memberName'] |
| 303 ..text = 'deoptimizations', | 318 ..text = 'deoptimizations', |
| 304 new DivElement()..classes = ['memberName'] | 319 new DivElement() |
| 320 ..classes = ['memberName'] |
| 305 ..text = '${_function.deoptimizations}' | 321 ..text = '${_function.deoptimizations}' |
| 306 ], | 322 ], |
| 307 new DivElement()..classes = ['memberItem'] | 323 new DivElement() |
| 324 ..classes = ['memberItem'] |
| 308 ..children = [ | 325 ..children = [ |
| 309 new DivElement()..classes = ['memberName'] | 326 new DivElement() |
| 327 ..classes = ['memberName'] |
| 310 ..text = 'optimizable', | 328 ..text = 'optimizable', |
| 311 new DivElement()..classes = ['memberName'] | 329 new DivElement() |
| 330 ..classes = ['memberName'] |
| 312 ..text = _function.isOptimizable ? 'yes' : 'no' | 331 ..text = _function.isOptimizable ? 'yes' : 'no' |
| 313 ], | 332 ], |
| 314 new DivElement()..classes = ['memberItem'] | 333 new DivElement() |
| 334 ..classes = ['memberItem'] |
| 315 ..children = [ | 335 ..children = [ |
| 316 new DivElement()..classes = ['memberName'] | 336 new DivElement() |
| 337 ..classes = ['memberName'] |
| 317 ..text = 'inlinable', | 338 ..text = 'inlinable', |
| 318 new DivElement()..classes = ['memberName'] | 339 new DivElement() |
| 340 ..classes = ['memberName'] |
| 319 ..text = _function.isInlinable ? 'yes' : 'no' | 341 ..text = _function.isInlinable ? 'yes' : 'no' |
| 320 ], | 342 ], |
| 321 new DivElement()..classes = ['memberItem'] | 343 new DivElement() |
| 344 ..classes = ['memberItem'] |
| 322 ..children = [ | 345 ..children = [ |
| 323 new DivElement()..classes = ['memberName'] | 346 new DivElement() |
| 347 ..classes = ['memberName'] |
| 324 ..text = 'intrinsic', | 348 ..text = 'intrinsic', |
| 325 new DivElement()..classes = ['memberName'] | 349 new DivElement() |
| 350 ..classes = ['memberName'] |
| 326 ..text = _function.hasIntrinsic ? 'yes' : 'no' | 351 ..text = _function.hasIntrinsic ? 'yes' : 'no' |
| 327 ], | 352 ], |
| 328 new DivElement()..classes = ['memberItem'] | 353 new DivElement() |
| 354 ..classes = ['memberItem'] |
| 329 ..children = [ | 355 ..children = [ |
| 330 new DivElement()..classes = ['memberName'] | 356 new DivElement() |
| 357 ..classes = ['memberName'] |
| 331 ..text = 'recognized', | 358 ..text = 'recognized', |
| 332 new DivElement()..classes = ['memberName'] | 359 new DivElement() |
| 360 ..classes = ['memberName'] |
| 333 ..text = _function.isRecognized ? 'yes' : 'no' | 361 ..text = _function.isRecognized ? 'yes' : 'no' |
| 334 ], | 362 ], |
| 335 new DivElement()..classes = ['memberItem'] | 363 new DivElement() |
| 364 ..classes = ['memberItem'] |
| 336 ..children = [ | 365 ..children = [ |
| 337 new DivElement()..classes = ['memberName'] | 366 new DivElement() |
| 367 ..classes = ['memberName'] |
| 338 ..text = 'native', | 368 ..text = 'native', |
| 339 new DivElement()..classes = ['memberName'] | 369 new DivElement() |
| 370 ..classes = ['memberName'] |
| 340 ..text = _function.isNative ? 'yes' : 'no' | 371 ..text = _function.isNative ? 'yes' : 'no' |
| 341 ], | 372 ], |
| 342 new DivElement()..classes = ['memberItem'] | 373 new DivElement() |
| 374 ..classes = ['memberItem'] |
| 343 ..children = [ | 375 ..children = [ |
| 344 new DivElement()..classes = ['memberName'] | 376 new DivElement() |
| 377 ..classes = ['memberName'] |
| 345 ..text = 'vm name', | 378 ..text = 'vm name', |
| 346 new DivElement()..classes = ['memberName'] | 379 new DivElement() |
| 380 ..classes = ['memberName'] |
| 347 ..text = _function.vmName | 381 ..text = _function.vmName |
| 348 ] | 382 ] |
| 349 ]); | 383 ]); |
| 350 return members; | 384 return members; |
| 351 } | 385 } |
| 352 | 386 |
| 353 Future _refresh() async { | 387 Future _refresh() async { |
| 354 _function = await _functions.get(_isolate, _function.id); | 388 _function = await _functions.get(_isolate, _function.id); |
| 355 if (_function.dartOwner is M.LibraryRef) { | 389 if (_function.dartOwner is M.LibraryRef) { |
| 356 _library = _function.dartOwner; | 390 _library = _function.dartOwner; |
| 357 } else if (_function.dartOwner is M.ClassRef) { | 391 } else if (_function.dartOwner is M.ClassRef) { |
| 358 _library = (await _classes.get(_isolate, _function.dartOwner.id)).library; | 392 _library = (await _classes.get(_isolate, _function.dartOwner.id)).library; |
| 359 } | 393 } |
| 360 _r.dirty(); | 394 _r.dirty(); |
| 361 } | 395 } |
| 362 | 396 |
| 363 static String _functionKindToString(M.FunctionKind kind) { | 397 static String _functionKindToString(M.FunctionKind kind) { |
| 364 switch(kind) { | 398 switch (kind) { |
| 365 case M.FunctionKind.regular: | 399 case M.FunctionKind.regular: |
| 366 return 'regular'; | 400 return 'regular'; |
| 367 case M.FunctionKind.closure: | 401 case M.FunctionKind.closure: |
| 368 return 'closure'; | 402 return 'closure'; |
| 369 case M.FunctionKind.getter: | 403 case M.FunctionKind.getter: |
| 370 return 'getter'; | 404 return 'getter'; |
| 371 case M.FunctionKind.setter: | 405 case M.FunctionKind.setter: |
| 372 return 'setter'; | 406 return 'setter'; |
| 373 case M.FunctionKind.constructor: | 407 case M.FunctionKind.constructor: |
| 374 return 'constructor'; | 408 return 'constructor'; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 395 case M.FunctionKind.stub: | 429 case M.FunctionKind.stub: |
| 396 return 'stub'; | 430 return 'stub'; |
| 397 case M.FunctionKind.tag: | 431 case M.FunctionKind.tag: |
| 398 return 'tag'; | 432 return 'tag'; |
| 399 case M.FunctionKind.signatureFunction: | 433 case M.FunctionKind.signatureFunction: |
| 400 return 'signature function'; | 434 return 'signature function'; |
| 401 } | 435 } |
| 402 throw new Exception('Unknown Functionkind ($kind)'); | 436 throw new Exception('Unknown Functionkind ($kind)'); |
| 403 } | 437 } |
| 404 } | 438 } |
| OLD | NEW |