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 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> | 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> |
6 | 6 |
7 <title>Dart VM Observatory</title> | 7 <title>Dart VM Observatory</title> |
8 <script type="text/javascript" src="https://www.google.com/jsapi"></script> | 8 <script type="text/javascript" src="https://www.google.com/jsapi"></script> |
9 <script src="packages/browser/interop.js"></script> | 9 <script src="packages/browser/interop.js"></script> |
10 | 10 |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 .memberItem { | 282 .memberItem { |
283 display: table-row; | 283 display: table-row; |
284 } | 284 } |
285 .memberName, .memberValue { | 285 .memberName, .memberValue { |
286 display: table-cell; | 286 display: table-cell; |
287 vertical-align: top; | 287 vertical-align: top; |
288 padding: 3px 0 3px 1em; | 288 padding: 3px 0 3px 1em; |
289 font: 400 14px 'Montserrat', sans-serif; | 289 font: 400 14px 'Montserrat', sans-serif; |
290 } | 290 } |
291 </style> | 291 </style> |
292 <div> | 292 <span> |
293 <template if="{{ isUnexpected(ref.serviceType) }}"> | 293 <template if="{{ isUnexpected(ref.serviceType) }}"> |
294 unexpected reference type <{{ ref.serviceType }}> | 294 unexpected reference type <{{ ref.serviceType }}> |
295 </template> | 295 </template> |
296 | 296 |
297 <template if="{{ isError(ref.serviceType) }}"> | 297 <template if="{{ isError(ref.serviceType) }}"> |
298 <pre>{{ ref.message }}</pre> | 298 <pre>{{ ref.message }}</pre> |
299 </template> | 299 </template> |
300 | 300 |
301 <template if="{{ isNull(ref.serviceType) }}"> | 301 <template if="{{ isNull(ref.serviceType) }}"> |
302 <div title="{{ hoverText }}">{{ ref['preview'] }}</div> | 302 <div title="{{ hoverText }}">{{ ref['preview'] }}</div> |
303 </template> | 303 </template> |
304 | 304 |
305 <template if="{{ (isString(ref.serviceType) || | 305 <template if="{{ (isString(ref.serviceType) || |
306 isBool(ref.serviceType) || | 306 isBool(ref.serviceType) || |
307 isInt(ref.serviceType)) || | 307 isInt(ref.serviceType)) || |
308 isDouble(ref.serviceType)) }}"> | 308 isDouble(ref.serviceType)) }}"> |
309 <a href="{{ url }}">{{ ref['preview'] }}</a> | 309 <a href="{{ url }}">{{ ref['preview'] }}</a> |
310 </template> | 310 </template> |
311 | 311 |
| 312 <template if="{{ (isType(ref.serviceType)) }}"> |
| 313 <a href="{{ url }}">{{ ref['user_name'] }}</a> |
| 314 </template> |
| 315 |
312 <template if="{{ isClosure(ref.serviceType) }}"> | 316 <template if="{{ isClosure(ref.serviceType) }}"> |
313 <a href="{{ url }}"> | 317 <a href="{{ url }}"> |
314 <!-- TODO(turnidge): Switch this to fully-qualified function --> | 318 <!-- TODO(turnidge): Switch this to fully-qualified function --> |
315 {{ ref['closureFunc']['user_name'] }} | 319 {{ ref['closureFunc']['user_name'] }} |
316 </a> | 320 </a> |
317 </template> | 321 </template> |
318 | 322 |
319 <template if="{{ isInstance(ref.serviceType) }}"> | 323 <template if="{{ isInstance(ref.serviceType) }}"> |
320 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> | 324 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> |
321 <curly-block callback="{{ expander() }}"> | 325 <curly-block callback="{{ expander() }}"> |
(...skipping 20 matching lines...) Expand all Loading... |
342 <div class="memberItem"> | 346 <div class="memberItem"> |
343 <div class="memberName">[{{ element['index']}}]</div> | 347 <div class="memberName">[{{ element['index']}}]</div> |
344 <div class="memberValue"> | 348 <div class="memberValue"> |
345 <instance-ref ref="{{ element['value'] }}"></instance-ref> | 349 <instance-ref ref="{{ element['value'] }}"></instance-ref> |
346 </div> | 350 </div> |
347 </div> | 351 </div> |
348 </template> | 352 </template> |
349 </div> | 353 </div> |
350 </curly-block> | 354 </curly-block> |
351 </template> | 355 </template> |
352 | 356 </span> |
353 </div> | |
354 </template> | 357 </template> |
355 | 358 |
356 </polymer-element> | 359 </polymer-element> |
357 <polymer-element name="eval-box" extends="observatory-element"> | 360 <polymer-element name="eval-box" extends="observatory-element"> |
358 <template> | 361 <template> |
359 <style> | 362 <style> |
360 .textbox { | 363 .textbox { |
361 width: 80ex; | 364 width: 80ex; |
362 font: 400 16px 'Montserrat', sans-serif; | 365 font: 400 16px 'Montserrat', sans-serif; |
363 } | 366 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 | 439 |
437 <polymer-element name="field-ref" extends="service-ref"> | 440 <polymer-element name="field-ref" extends="service-ref"> |
438 <template> | 441 <template> |
439 <div> | 442 <div> |
440 <template if="{{ ref['final'] }}"> final </template> | 443 <template if="{{ ref['final'] }}"> final </template> |
441 <template if="{{ ref['const'] }}"> const </template> | 444 <template if="{{ ref['const'] }}"> const </template> |
442 <template if="{{ (ref['declared_type']['name'] == 'dynamic' && !ref['f
inal'] && !ref['const']) }}"> | 445 <template if="{{ (ref['declared_type']['name'] == 'dynamic' && !ref['f
inal'] && !ref['const']) }}"> |
443 var | 446 var |
444 </template> | 447 </template> |
445 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> | 448 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> |
446 <class-ref ref="{{ ref['declared_type'] }}"></class-ref> | 449 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> |
447 </template> | 450 </template> |
448 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> | 451 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> |
449 </div> | 452 </div> |
450 </template> </polymer-element><polymer-element name="function-ref" extends="ser
vice-ref"> | 453 </template> </polymer-element> |
| 454 <polymer-element name="function-ref" extends="service-ref"> |
451 <template><!-- These comments are here to allow newlines. | 455 <template><!-- These comments are here to allow newlines. |
452 --><template if="{{ qualified && !hasParent && hasClass }}"
><!-- | 456 --><template if="{{ qualified && !hasParent && hasClass }}"
><!-- |
453 --><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><!-- | 457 --><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><!-- |
454 --><template if="{{ qualified && hasParent }}"><!-- | 458 --><template if="{{ qualified && hasParent }}"><!-- |
455 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> | 459 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> |
456 </function-ref>.<!-- | 460 </function-ref>.<!-- |
457 --></template><a href="{{ url }}">{{ name }}</a><!-- | 461 --></template><a href="{{ url }}">{{ name }}</a><!-- |
458 --></template> | 462 --></template> |
459 | 463 |
460 </polymer-element> | 464 </polymer-element> |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
794 </template> | 798 </template> |
795 </div> | 799 </div> |
796 </div> | 800 </div> |
797 </div> | 801 </div> |
798 </div> | 802 </div> |
799 </template> | 803 </template> |
800 | 804 |
801 </polymer-element> | 805 </polymer-element> |
802 <polymer-element name="function-view" extends="observatory-element"> | 806 <polymer-element name="function-view" extends="observatory-element"> |
803 <template> | 807 <template> |
| 808 <style> |
| 809 .content { |
| 810 padding-left: 10%; |
| 811 font: 400 14px 'Montserrat', sans-serif; |
| 812 } |
| 813 h1 { |
| 814 font: 400 18px 'Montserrat', sans-serif; |
| 815 } |
| 816 .memberList { |
| 817 display: table; |
| 818 } |
| 819 .memberItem { |
| 820 display: table-row; |
| 821 } |
| 822 .memberName, .memberValue { |
| 823 display: table-cell; |
| 824 vertical-align: top; |
| 825 padding: 3px 0 3px 1em; |
| 826 font: 400 14px 'Montserrat', sans-serif; |
| 827 } |
| 828 </style> |
| 829 |
804 <nav-bar> | 830 <nav-bar> |
805 <top-nav-menu></top-nav-menu> | 831 <top-nav-menu></top-nav-menu> |
806 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> | 832 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> |
807 <template if="{{ function['owner']['type'] == '@Class' }}"> | 833 <template if="{{ function['owner']['type'] == '@Class' }}"> |
808 <!-- TODO(turnidge): Add library nav menu here. --> | 834 <!-- TODO(turnidge): Add library nav menu here. --> |
809 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> | 835 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> |
810 </template> | 836 </template> |
811 <template if="{{ function['owner']['type'] == '@Library' }}"> | 837 <template if="{{ function['owner']['type'] == '@Library' }}"> |
812 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> | 838 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> |
813 </template> | 839 </template> |
814 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me
nu> | 840 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me
nu> |
815 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 841 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
816 </nav-bar> | 842 </nav-bar> |
817 | 843 |
818 <div class="row"> | 844 <div class="content"> |
819 <div class="col-md-8 col-md-offset-2"> | 845 <h1>function {{ qualifiedName }}</h1> |
820 <div class="panel panel-warning"> | 846 |
821 <div class="panel-heading"> | 847 <div class="memberList"> |
822 {{ function['user_name'] }} ({{ function['name'] }}) | 848 <div class="memberItem"> |
823 <class-ref ref="{{ function['class'] }}"></class-ref> | 849 <div class="memberName">kind</div> |
| 850 <div class="memberValue"> |
| 851 <template if="{{ function['is_static'] }}">static</template> |
| 852 <template if="{{ function['is_const'] }}">const</template> |
| 853 {{ kind }} |
| 854 </div> |
824 </div> | 855 </div> |
825 <div class="panel-body"> | 856 <template if="{{ function['parent'] != null }}"> |
826 <div> | 857 <div class="memberItem"> |
827 <code-ref ref="{{ function['code'] }}"></code-ref> | 858 <div class="memberName">parent function</div> |
828 <code-ref ref="{{ function['unoptimized_code'] }}"></code-ref> | 859 <div class="memberValue"> |
| 860 <function-ref ref="{{ function['parent'] }}"></function-ref> |
| 861 </div> |
829 </div> | 862 </div> |
830 <table class="table table-hover"> | 863 </template> |
831 <tbody> | 864 <template if="{{ function['parent'] == null && |
832 <tr> | 865 function['class'] != null }}"> |
833 <td>static</td><td>{{ function['is_static'] }}</td> | 866 <div class="memberItem"> |
834 </tr> | 867 <div class="memberName">parent class</div> |
835 <tr> | 868 <div class="memberValue"> |
836 <td>Const</td><td>{{ function['is_const'] }}</td> | 869 <class-ref ref="{{ function['class'] }}"></class-ref> |
837 </tr> | 870 </div> |
838 <tr> | 871 </div> |
839 <td>Optimizable</td><td>{{ function['is_optimizable'] }}</td> | 872 </template> |
840 </tr> | 873 <div class="memberItem"> |
841 <tr> | 874 <div class="memberName">script</div> |
842 <td>Inlinable</td><td>{{ function['is_inlinable'] }}</td> | 875 <div class="memberValue"> |
843 </tr> | 876 <script-ref ref="{{ function['script'] }}"> |
844 <tr> | 877 </script-ref> |
845 <td>Kind</td><td>{{ function['kind'] }}</td> | 878 </div> |
846 </tr> | |
847 <tr> | |
848 <td>Usage Count</td><td>{{ function['usage_counter'] }}</td> | |
849 </tr> | |
850 <tr> | |
851 <td>Optimized Call Site Count</td><td>{{ function['optimized_cal
l_site_count'] }}</td> | |
852 </tr> | |
853 <tr> | |
854 <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</t
d> | |
855 </tr> | |
856 </tbody> | |
857 </table> | |
858 </div> | 879 </div> |
859 </div> | 880 |
| 881 <div class="memberItem"> </div> |
| 882 |
| 883 <template if="{{ function['code'] != null }}"> |
| 884 <div class="memberItem"> |
| 885 <div class="memberName">optimized code</div> |
| 886 <div class="memberValue"> |
| 887 <code-ref ref="{{ function['code'] }}"></code-ref> |
| 888 </div> |
| 889 </div> |
| 890 </template> |
| 891 <template if="{{ function['unoptimized_code'] != null }}"> |
| 892 <div class="memberItem"> |
| 893 <div class="memberName">unoptimized code</div> |
| 894 <div class="memberValue"> |
| 895 <code-ref ref="{{ function['unoptimized_code'] }}"></code-ref> |
| 896 </div> |
| 897 <div class="memberValue"> |
| 898 <span title="This count is used to determine when a function wil
l be optimized. It is a combination of call counts and other factors."> |
| 899 (usage count: {{ function['usage_counter'] }}) |
| 900 </span> |
| 901 </div> |
| 902 </div> |
| 903 </template> |
| 904 <div class="memberItem"> |
| 905 <div class="memberName">deoptimizations</div> |
| 906 <div class="memberValue">{{ function['deoptimizations'] }}</div> |
| 907 </div> |
| 908 <div class="memberItem"> |
| 909 <div class="memberName">optimizable</div> |
| 910 <div class="memberValue">{{ function['is_optimizable'] }}</div> |
| 911 </div> |
| 912 <div class="memberItem"> |
| 913 <div class="memberName">inlinable</div> |
| 914 <div class="memberValue">{{ function['is_inlinable'] }}</div> |
| 915 </div> |
| 916 <template if="{{ function.name != function.vmName }}"> |
| 917 <div class="memberItem"> |
| 918 <div class="memberName">vm name</div> |
| 919 <div class="memberValue">{{ function.vmName }}</div> |
| 920 </div> |
| 921 </template> |
| 922 </div> |
860 </div> | 923 </div> |
861 </div> | |
862 </template> | 924 </template> |
863 | 925 |
864 </polymer-element> | 926 </polymer-element> |
865 <polymer-element name="heap-map" extends="observatory-element"> | 927 <polymer-element name="heap-map" extends="observatory-element"> |
866 <template> | 928 <template> |
867 <nav-bar> | 929 <nav-bar> |
868 <top-nav-menu></top-nav-menu> | 930 <top-nav-menu></top-nav-menu> |
869 <isolate-nav-menu isolate="{{ fragmentation.isolate }}"></isolate-nav-menu> | 931 <isolate-nav-menu isolate="{{ fragmentation.isolate }}"></isolate-nav-menu> |
870 <nav-menu link="." anchor="heap map" last="{{ true }}"></nav-menu> | 932 <nav-menu link="." anchor="heap map" last="{{ true }}"></nav-menu> |
871 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 933 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1208 } | 1270 } |
1209 </style> | 1271 </style> |
1210 | 1272 |
1211 <template if="{{ instance['error'] != null }}"> | 1273 <template if="{{ instance['error'] != null }}"> |
1212 <error-view error_obj="{{ instance['error'] }}"></error-view> | 1274 <error-view error_obj="{{ instance['error'] }}"></error-view> |
1213 </template> | 1275 </template> |
1214 | 1276 |
1215 <template if="{{ instance['error'] == null }}"> | 1277 <template if="{{ instance['error'] == null }}"> |
1216 <div class="content"> | 1278 <div class="content"> |
1217 <!-- TODO(turnidge): Handle null instances. --> | 1279 <!-- TODO(turnidge): Handle null instances. --> |
1218 <h1>instance of {{ instance['class']['user_name'] }}</h1> | 1280 <template if="{{ isType(instance.serviceType) }}"> |
| 1281 <h1>type {{ instance['user_name'] }}</h1> |
| 1282 </template> |
| 1283 <template if="{{ !isType(instance.serviceType) }}"> |
| 1284 <h1>instance of {{ instance['class']['user_name'] }}</h1> |
| 1285 </template> |
1219 <div class="memberList"> | 1286 <div class="memberList"> |
1220 <div class="memberItem"> | 1287 <div class="memberItem"> |
1221 <div class="memberName">class</div> | 1288 <div class="memberName">class</div> |
1222 <div class="memberValue"> | 1289 <div class="memberValue"> |
1223 <class-ref ref="{{ instance['class'] }}"> | 1290 <class-ref ref="{{ instance['class'] }}"> |
1224 </class-ref> | 1291 </class-ref> |
1225 </div> | 1292 </div> |
1226 </div> | 1293 </div> |
1227 <template if="{{ instance['preview'] != null }}"> | 1294 <template if="{{ instance['preview'] != null }}"> |
1228 <div class="memberItem"> | 1295 <div class="memberItem"> |
1229 <div class="memberName">preview</div> | 1296 <div class="memberName">preview</div> |
1230 <div class="memberValue">{{ instance['preview'] }}</div> | 1297 <div class="memberValue">{{ instance['preview'] }}</div> |
1231 </div> | 1298 </div> |
1232 </template> | 1299 </template> |
1233 <div class="memberItem"> | 1300 <div class="memberItem"> |
1234 <div class="memberName">size</div> | 1301 <div class="memberName">size</div> |
1235 <div class="memberValue">{{ instance['size'] | formatSize }}</div> | 1302 <div class="memberValue">{{ instance['size'] | formatSize }}</div> |
1236 </div> | 1303 </div> |
| 1304 <template if="{{ instance['type_class'] != null }}"> |
| 1305 <div class="memberItem"> |
| 1306 <div class="memberName">type class</div> |
| 1307 <div class="memberValue"> |
| 1308 <class-ref ref="{{ instance['type_class'] }}"> |
| 1309 </class-ref> |
| 1310 </div> |
| 1311 </div> |
| 1312 </template> |
1237 </div> | 1313 </div> |
1238 </div> | 1314 </div> |
1239 | 1315 |
1240 <hr> | 1316 <hr> |
1241 | 1317 |
1242 <div class="content"> | 1318 <div class="content"> |
1243 <template if="{{ instance['fields'].isNotEmpty }}"> | 1319 <template if="{{ instance['fields'].isNotEmpty }}"> |
1244 fields ({{ instance['fields'].length }}) | 1320 fields ({{ instance['fields'].length }}) |
1245 <curly-block> | 1321 <curly-block> |
1246 <div class="memberList"> | 1322 <div class="memberList"> |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1938 <template> | 2014 <template> |
1939 <a href="{{ url }}">{{ ref.name }}</a> | 2015 <a href="{{ url }}">{{ ref.name }}</a> |
1940 </template> | 2016 </template> |
1941 | 2017 |
1942 </polymer-element> | 2018 </polymer-element> |
1943 | 2019 |
1944 | 2020 |
1945 <observatory-application></observatory-application> | 2021 <observatory-application></observatory-application> |
1946 | 2022 |
1947 </body></html> | 2023 </body></html> |
OLD | NEW |