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