| OLD | NEW |
| 1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js"
></script> | 1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js"
></script> |
| 2 <script src="packages/custom_element/custom-elements.debug.js"></script> | 2 <script src="packages/custom_element/custom-elements.debug.js"></script> |
| 3 | 3 |
| 4 <title>Dart VM Observatory</title> | 4 <title>Dart VM Observatory</title> |
| 5 <meta charset="utf-8"> | 5 <meta charset="utf-8"> |
| 6 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> | 6 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> |
| 7 <script type="text/javascript" src="https://www.google.com/jsapi"></script> | 7 <script type="text/javascript" src="https://www.google.com/jsapi"></script> |
| 8 <script src="packages/browser/interop.js"></script> | 8 <script src="packages/browser/interop.js"></script> |
| 9 | 9 |
| 10 <script src="index_devtools.html_bootstrap.dart.js"></script> | 10 <script src="index_devtools.html_bootstrap.dart.js"></script> |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 isBool(ref.serviceType) || | 305 isBool(ref.serviceType) || |
| 306 isInt(ref.serviceType)) || | 306 isInt(ref.serviceType)) || |
| 307 isDouble(ref.serviceType)) }}"> | 307 isDouble(ref.serviceType)) }}"> |
| 308 <a href="{{ url }}">{{ ref['preview'] }}</a> | 308 <a href="{{ url }}">{{ ref['preview'] }}</a> |
| 309 </template> | 309 </template> |
| 310 | 310 |
| 311 <template if="{{ (isType(ref.serviceType)) }}"> | 311 <template if="{{ (isType(ref.serviceType)) }}"> |
| 312 <a href="{{ url }}">{{ ref['user_name'] }}</a> | 312 <a href="{{ url }}">{{ ref['user_name'] }}</a> |
| 313 </template> | 313 </template> |
| 314 | 314 |
| 315 <template if="{{ isClosure(ref.serviceType) }}"> | 315 <template if="{{ isInstance(ref.serviceType) && |
| 316 ref['closureFunc'] != null}}"> |
| 316 <a href="{{ url }}"> | 317 <a href="{{ url }}"> |
| 317 <!-- TODO(turnidge): Switch this to fully-qualified function --> | 318 <!-- TODO(turnidge): Switch this to fully-qualified function --> |
| 318 {{ ref['closureFunc']['user_name'] }} | 319 {{ ref['closureFunc']['user_name'] }} |
| 319 </a> | 320 </a> |
| 320 </template> | 321 </template> |
| 321 | 322 |
| 322 <template if="{{ isInstance(ref.serviceType) }}"> | 323 <template if="{{ isInstance(ref.serviceType) && |
| 324 ref['closureFunc'] == null}}"> |
| 323 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> | 325 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> |
| 324 <curly-block callback="{{ expander() }}"> | 326 <curly-block callback="{{ expander() }}"> |
| 325 <div class="memberList"> | 327 <div class="memberList"> |
| 326 <template repeat="{{ field in ref['fields'] }}"> | 328 <template repeat="{{ field in ref['fields'] }}"> |
| 327 <div class="memberItem"> | 329 <div class="memberItem"> |
| 328 <div class="memberName"> | 330 <div class="memberName"> |
| 329 {{ field['decl']['user_name'] }} | 331 {{ field['decl']['user_name'] }} |
| 330 </div> | 332 </div> |
| 331 <div class="memberValue"> | 333 <div class="memberValue"> |
| 332 <instance-ref ref="{{ field['value'] }}"></instance-ref> | 334 <instance-ref ref="{{ field['value'] }}"></instance-ref> |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 </template> | 432 </template> |
| 431 </td> | 433 </td> |
| 432 </tr> | 434 </tr> |
| 433 </tbody></table> | 435 </tbody></table> |
| 434 </template> | 436 </template> |
| 435 </template> | 437 </template> |
| 436 </polymer-element> | 438 </polymer-element> |
| 437 | 439 |
| 438 | 440 |
| 439 <polymer-element name="field-ref" extends="service-ref"> | 441 <polymer-element name="field-ref" extends="service-ref"> |
| 440 <template> | 442 <template> |
| 441 <div> | 443 <div> |
| 442 <template if="{{ ref['final'] }}"> final </template> | 444 <template if="{{ ref['static'] }}">static</template> |
| 443 <template if="{{ ref['const'] }}"> const </template> | 445 <template if="{{ ref['final'] }}">final</template> |
| 444 <template if="{{ (ref['declared_type']['name'] == 'dynamic' && !ref['f
inal'] && !ref['const']) }}"> | 446 <template if="{{ ref['const'] }}">const</template> |
| 445 var | 447 <template if="{{ (ref['declared_type']['name'] == 'dynamic' && |
| 448 !ref['final'] && !ref['const']) }}"> |
| 449 var |
| 450 </template> |
| 451 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> |
| 452 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> |
| 453 </template> |
| 454 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> |
| 455 </div> |
| 446 </template> | 456 </template> |
| 447 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> | 457 |
| 448 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> | 458 </polymer-element> |
| 449 </template> | |
| 450 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> | |
| 451 </div> | |
| 452 </template> </polymer-element> | |
| 453 <polymer-element name="function-ref" extends="service-ref"> | 459 <polymer-element name="function-ref" extends="service-ref"> |
| 454 <template><!-- These comments are here to allow newlines. | 460 <template><!-- These comments are here to allow newlines. |
| 455 --><template if="{{ qualified && !hasParent && hasClass }}"
><!-- | 461 --><template if="{{ qualified && !hasParent && hasClass }}"
><!-- |
| 456 --><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><!-- | 462 --><class-ref ref="{{ ref['owner'] }}"></class-ref>.</template><!-- |
| 457 --><template if="{{ qualified && hasParent }}"><!-- | 463 --><template if="{{ qualified && hasParent }}"><!-- |
| 458 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> | 464 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> |
| 459 </function-ref>.<!-- | 465 </function-ref>.<!-- |
| 460 --></template><a href="{{ url }}">{{ name }}</a><!-- | 466 --></template><a href="{{ url }}">{{ name }}</a><!-- |
| 461 --></template> | 467 --></template> |
| 462 | 468 |
| 463 </polymer-element> | 469 </polymer-element> |
| 464 <polymer-element name="library-ref" extends="service-ref"> | 470 <polymer-element name="library-ref" extends="service-ref"> |
| 465 <template> | 471 <template> |
| 466 <a href="{{ url }}">{{ name }}</a> | 472 <a href="{{ url }}">{{ name }}</a> |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 <p>{{ error.message }}</p> | 750 <p>{{ error.message }}</p> |
| 745 </div> | 751 </div> |
| 746 </div> | 752 </div> |
| 747 </div> | 753 </div> |
| 748 </div> | 754 </div> |
| 749 </template> | 755 </template> |
| 750 | 756 |
| 751 </polymer-element> | 757 </polymer-element> |
| 752 <polymer-element name="field-view" extends="observatory-element"> | 758 <polymer-element name="field-view" extends="observatory-element"> |
| 753 <template> | 759 <template> |
| 760 <style> |
| 761 .content { |
| 762 padding-left: 10%; |
| 763 font: 400 14px 'Montserrat', sans-serif; |
| 764 } |
| 765 h1 { |
| 766 font: 400 18px 'Montserrat', sans-serif; |
| 767 } |
| 768 .memberList { |
| 769 display: table; |
| 770 } |
| 771 .memberItem { |
| 772 display: table-row; |
| 773 } |
| 774 .memberName, .memberValue { |
| 775 display: table-cell; |
| 776 vertical-align: top; |
| 777 padding: 3px 0 3px 1em; |
| 778 font: 400 14px 'Montserrat', sans-serif; |
| 779 } |
| 780 </style> |
| 781 |
| 754 <nav-bar> | 782 <nav-bar> |
| 755 <top-nav-menu></top-nav-menu> | 783 <top-nav-menu></top-nav-menu> |
| 756 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> | 784 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> |
| 757 <template if="{{ field['owner'].serviceType == 'Class' }}"> | 785 <template if="{{ field['owner'].serviceType == 'Class' }}"> |
| 758 <!-- TODO(turnidge): Add library nav menu here. --> | 786 <!-- TODO(turnidge): Add library nav menu here. --> |
| 759 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> | 787 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> |
| 760 </template> | 788 </template> |
| 761 <template if="{{ field['owner'].serviceType == 'Library' }}"> | 789 <template if="{{ field['owner'].serviceType == 'Library' }}"> |
| 762 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> | 790 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> |
| 763 </template> | 791 </template> |
| 764 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n
av-menu> | 792 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n
av-menu> |
| 765 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 793 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
| 766 </nav-bar> | 794 </nav-bar> |
| 767 | 795 |
| 768 <div class="row"> | 796 <div class="content"> |
| 769 <div class="col-md-8 col-md-offset-2"> | 797 <h1> |
| 770 <div class="panel panel-warning"> | 798 <template if="{{ field['static'] }}">static</template> |
| 771 <div class="panel-heading"> | 799 <template if="{{ field['final'] }}">final</template> |
| 772 <template if="{{ field['static'] }}">static</template> | 800 <template if="{{ field['const'] }}">const</template> |
| 773 <template if="{{ field['final'] }}">final</template> | 801 <template if="{{ (field['declared_type']['name'] == 'dynamic' && |
| 774 <template if="{{ field['const'] }}">const</template> | 802 !field['final'] && !field['const']) }}"> |
| 775 {{ field['user_name'] }} ({{ field['name'] }}) | 803 var |
| 776 <class-ref ref="{{ field['owner'] }}"></class-ref> | 804 </template> |
| 805 <template if="{{ (field['declared_type']['user_name'] != 'dynamic') }}"> |
| 806 {{ field['declared_type']['user_name'] }} |
| 807 </template> |
| 808 {{ field['user_name'] }} |
| 809 </h1> |
| 810 <div class="memberList"> |
| 811 <div class="memberItem"> |
| 812 <div class="memberName">owner</div> |
| 813 <div class="memberValue"> |
| 814 <template if="{{ field['owner'].serviceType == 'Class' }}"> |
| 815 <class-ref ref="{{ field['owner'] }}"></class-ref> |
| 816 </template> |
| 817 <template if="{{ field['owner'].serviceType != 'Class' }}"> |
| 818 <library-ref ref="{{ field['owner'] }}"></library-ref> |
| 819 </template> |
| 820 </div> |
| 777 </div> | 821 </div> |
| 778 <div class="panel-body"> | 822 <div class="memberItem"> |
| 779 <template if="{{ field['guard_class'] == 'dynamic'}}"> | 823 <div class="memberName">script</div> |
| 780 <div class="alert alert-danger"> | 824 <div class="memberValue"> |
| 781 Field has been assigned multiple types. If a field is only ever | 825 <script-ref ref="{{ field['script'] }}"></script-ref> |
| 782 assigned a single type, performance may improve. | 826 </div> |
| 827 </div> |
| 828 <template if="{{ !field['static'] }}"> |
| 829 <div class="memberItem" title="The types observed for this field at ru
ntime. Fields that are observed to have a single type at runtime or to never be
null may allow for additional optimization."> |
| 830 <div class="memberName">observed types</div> |
| 831 <div class="memberValue"> |
| 832 <template if="{{ field['guard_class'] == 'dynamic' }}"> |
| 833 various |
| 834 </template> |
| 835 <template if="{{ field['guard_class'] == 'unknown' }}"> |
| 836 none |
| 837 </template> |
| 838 <template if="{{ field['guard_class'] != 'unknown' && |
| 839 field['guard_class'] != 'dynamic' }}"> |
| 840 <class-ref ref="{{ field['guard_class'] }}"></class-ref> |
| 841 <template if="{{ field['guard_nullable'] }}"> |
| 842 — null observed |
| 843 </template> |
| 844 <template if="{{ !field['guard_nullable'] }}"> |
| 845 — null not observed |
| 846 </template> |
| 847 </template> |
| 848 </div> |
| 783 </div> | 849 </div> |
| 784 </template> | 850 </template> |
| 785 <template if="{{ (field['guard_class'] != 'dynamic') && (field['
guard_class'] != 'unknown') }}"> | 851 <template if="{{ field['value'] != null }}"> |
| 786 <div class="alert alert-success">Field has monomorphic type</div> | 852 <div class="memberItem"> |
| 787 <template if="{{ (field['guard_class'] != 'dynamic') && | 853 <div class="memberName">static value</div> |
| 788 field['guard_nullable'] }}"> | 854 <div class="memberValue"> |
| 789 <div class="alert alert-info"> | 855 <instance-ref ref="{{ field['value'] }}"></instance-ref> |
| 790 Field has been assigned null. If a field is never assigned null, | |
| 791 performance may improve. | |
| 792 </div> | 856 </div> |
| 793 </template> | 857 </div> |
| 794 <blockquote> | |
| 795 <class-ref ref="{{ field['guard_class'] }}"></class-ref> | |
| 796 </blockquote> | |
| 797 </template> | 858 </template> |
| 798 </div> | |
| 799 </div> | 859 </div> |
| 800 </div> | 860 </div> |
| 801 </div> | |
| 802 </template> | 861 </template> |
| 803 | 862 |
| 804 </polymer-element> | 863 </polymer-element> |
| 805 <polymer-element name="function-view" extends="observatory-element"> | 864 <polymer-element name="function-view" extends="observatory-element"> |
| 806 <template> | 865 <template> |
| 807 <style> | 866 <style> |
| 808 .content { | 867 .content { |
| 809 padding-left: 10%; | 868 padding-left: 10%; |
| 810 font: 400 14px 'Montserrat', sans-serif; | 869 font: 400 14px 'Montserrat', sans-serif; |
| 811 } | 870 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 822 display: table-cell; | 881 display: table-cell; |
| 823 vertical-align: top; | 882 vertical-align: top; |
| 824 padding: 3px 0 3px 1em; | 883 padding: 3px 0 3px 1em; |
| 825 font: 400 14px 'Montserrat', sans-serif; | 884 font: 400 14px 'Montserrat', sans-serif; |
| 826 } | 885 } |
| 827 </style> | 886 </style> |
| 828 | 887 |
| 829 <nav-bar> | 888 <nav-bar> |
| 830 <top-nav-menu></top-nav-menu> | 889 <top-nav-menu></top-nav-menu> |
| 831 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> | 890 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> |
| 832 <template if="{{ function['owner']['type'] == '@Class' }}"> | 891 <template if="{{ function['owner'].serviceType == 'Class' }}"> |
| 833 <!-- TODO(turnidge): Add library nav menu here. --> | 892 <!-- TODO(turnidge): Add library nav menu here. --> |
| 834 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> | 893 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> |
| 835 </template> | 894 </template> |
| 836 <template if="{{ function['owner']['type'] == '@Library' }}"> | 895 <template if="{{ function['owner'].serviceType == 'Library' }}"> |
| 837 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> | 896 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> |
| 838 </template> | 897 </template> |
| 839 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me
nu> | 898 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me
nu> |
| 840 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 899 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
| 841 </nav-bar> | 900 </nav-bar> |
| 842 | 901 |
| 843 <div class="content"> | 902 <div class="content"> |
| 844 <h1>function {{ qualifiedName }}</h1> | 903 <h1>function {{ qualifiedName }}</h1> |
| 845 | 904 |
| 846 <div class="memberList"> | 905 <div class="memberList"> |
| 847 <div class="memberItem"> | 906 <div class="memberItem"> |
| 848 <div class="memberName">kind</div> | 907 <div class="memberName">kind</div> |
| 849 <div class="memberValue"> | 908 <div class="memberValue"> |
| 850 <template if="{{ function['is_static'] }}">static</template> | 909 <template if="{{ function['is_static'] }}">static</template> |
| 851 <template if="{{ function['is_const'] }}">const</template> | 910 <template if="{{ function['is_const'] }}">const</template> |
| 852 {{ kind }} | 911 {{ kind }} |
| 853 </div> | 912 </div> |
| 854 </div> | 913 </div> |
| 855 <template if="{{ function['parent'] != null }}"> | 914 <template if="{{ function['parent'] != null }}"> |
| 856 <div class="memberItem"> | 915 <div class="memberItem"> |
| 857 <div class="memberName">parent function</div> | 916 <div class="memberName">parent function</div> |
| 858 <div class="memberValue"> | 917 <div class="memberValue"> |
| 859 <function-ref ref="{{ function['parent'] }}"></function-ref> | 918 <function-ref ref="{{ function['parent'] }}"></function-ref> |
| 860 </div> | 919 </div> |
| 861 </div> | 920 </div> |
| 862 </template> | 921 </template> |
| 863 <template if="{{ function['parent'] == null && | |
| 864 function['class'] != null }}"> | |
| 865 <div class="memberItem"> | |
| 866 <div class="memberName">parent class</div> | |
| 867 <div class="memberValue"> | |
| 868 <class-ref ref="{{ function['class'] }}"></class-ref> | |
| 869 </div> | |
| 870 </div> | |
| 871 </template> | |
| 872 <div class="memberItem"> | 922 <div class="memberItem"> |
| 923 <div class="memberName">owner</div> |
| 924 <div class="memberValue"> |
| 925 <template if="{{ function['owner'].serviceType == 'Class' }}"> |
| 926 <class-ref ref="{{ function['owner'] }}"></class-ref> |
| 927 </template> |
| 928 <template if="{{ function['owner'].serviceType != 'Class' }}"> |
| 929 <library-ref ref="{{ function['owner'] }}"></library-ref> |
| 930 </template> |
| 931 </div> |
| 932 </div> |
| 933 <div class="memberItem"> |
| 873 <div class="memberName">script</div> | 934 <div class="memberName">script</div> |
| 874 <div class="memberValue"> | 935 <div class="memberValue"> |
| 875 <script-ref ref="{{ function['script'] }}"> | 936 <script-ref ref="{{ function['script'] }}"></script-ref> |
| 876 </script-ref> | |
| 877 </div> | 937 </div> |
| 878 </div> | 938 </div> |
| 879 | 939 |
| 880 <div class="memberItem"> </div> | 940 <div class="memberItem"> </div> |
| 881 | 941 |
| 882 <template if="{{ function['code'] != null }}"> | 942 <template if="{{ function['code'] != null }}"> |
| 883 <div class="memberItem"> | 943 <div class="memberItem"> |
| 884 <div class="memberName">optimized code</div> | 944 <div class="memberName">optimized code</div> |
| 885 <div class="memberValue"> | 945 <div class="memberValue"> |
| 886 <code-ref ref="{{ function['code'] }}"></code-ref> | 946 <code-ref ref="{{ function['code'] }}"></code-ref> |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1302 </div> | 1362 </div> |
| 1303 <template if="{{ instance['type_class'] != null }}"> | 1363 <template if="{{ instance['type_class'] != null }}"> |
| 1304 <div class="memberItem"> | 1364 <div class="memberItem"> |
| 1305 <div class="memberName">type class</div> | 1365 <div class="memberName">type class</div> |
| 1306 <div class="memberValue"> | 1366 <div class="memberValue"> |
| 1307 <class-ref ref="{{ instance['type_class'] }}"> | 1367 <class-ref ref="{{ instance['type_class'] }}"> |
| 1308 </class-ref> | 1368 </class-ref> |
| 1309 </div> | 1369 </div> |
| 1310 </div> | 1370 </div> |
| 1311 </template> | 1371 </template> |
| 1372 <template if="{{ instance['closureFunc'] != null }}"> |
| 1373 <div class="memberItem"> |
| 1374 <div class="memberName">closure function</div> |
| 1375 <div class="memberValue"> |
| 1376 <function-ref ref="{{ instance['closureFunc'] }}"> |
| 1377 </function-ref> |
| 1378 </div> |
| 1379 </div> |
| 1380 </template> |
| 1312 </div> | 1381 </div> |
| 1313 </div> | 1382 </div> |
| 1314 | 1383 |
| 1315 <hr> | 1384 <hr> |
| 1316 | 1385 |
| 1317 <div class="content"> | 1386 <div class="content"> |
| 1318 <template if="{{ instance['fields'].isNotEmpty }}"> | 1387 <template if="{{ instance['fields'].isNotEmpty }}"> |
| 1319 fields ({{ instance['fields'].length }}) | 1388 fields ({{ instance['fields'].length }}) |
| 1320 <curly-block> | 1389 <curly-block> |
| 1321 <div class="memberList"> | 1390 <div class="memberList"> |
| (...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2013 <template> | 2082 <template> |
| 2014 <a href="{{ url }}">{{ ref.name }}</a> | 2083 <a href="{{ url }}">{{ ref.name }}</a> |
| 2015 </template> | 2084 </template> |
| 2016 | 2085 |
| 2017 </polymer-element> | 2086 </polymer-element> |
| 2018 | 2087 |
| 2019 | 2088 |
| 2020 <observatory-application devtools="true"></observatory-application> | 2089 <observatory-application devtools="true"></observatory-application> |
| 2021 | 2090 |
| 2022 </body></html> | 2091 </body></html> |
| OLD | NEW |