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