Index: runtime/bin/vmservice/client/lib/src/elements/function_view.html |
diff --git a/runtime/bin/vmservice/client/lib/src/elements/function_view.html b/runtime/bin/vmservice/client/lib/src/elements/function_view.html |
index 1f474f6ee796ab10f358b3f6e483b43e9678290b..a337c8dc1714dcaa89bdd909a205b2d7bdeee056 100644 |
--- a/runtime/bin/vmservice/client/lib/src/elements/function_view.html |
+++ b/runtime/bin/vmservice/client/lib/src/elements/function_view.html |
@@ -1,11 +1,35 @@ |
<head> |
<link rel="import" href="class_ref.html"> |
<link rel="import" href="code_ref.html"> |
+ <link rel="import" href="function_ref.html"> |
<link rel="import" href="observatory_element.html"> |
<link rel="import" href="nav_bar.html"> |
+ <link rel="import" href="script_ref.html"> |
</head> |
<polymer-element name="function-view" extends="observatory-element"> |
<template> |
+ <style> |
+ .content { |
+ padding-left: 10%; |
+ font: 400 14px 'Montserrat', sans-serif; |
+ } |
+ h1 { |
+ font: 400 18px 'Montserrat', sans-serif; |
+ } |
+ .memberList { |
+ display: table; |
+ } |
+ .memberItem { |
+ display: table-row; |
+ } |
+ .memberName, .memberValue { |
+ display: table-cell; |
+ vertical-align: top; |
+ padding: 3px 0 3px 1em; |
+ font: 400 14px 'Montserrat', sans-serif; |
+ } |
+ </style> |
+ |
<nav-bar> |
<top-nav-menu></top-nav-menu> |
<isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> |
@@ -20,50 +44,86 @@ |
<nav-refresh callback="{{ refresh }}"></nav-refresh> |
</nav-bar> |
- <div class="row"> |
- <div class="col-md-8 col-md-offset-2"> |
- <div class="panel panel-warning"> |
- <div class="panel-heading"> |
- {{ function['user_name'] }} ({{ function['name'] }}) |
- <class-ref ref="{{ function['class'] }}"></class-ref> |
+ <div class="content"> |
+ <h1>function {{ qualifiedName }}</h1> |
+ |
+ <div class="memberList"> |
+ <div class="memberItem"> |
+ <div class="memberName">kind</div> |
+ <div class="memberValue"> |
+ <template if="{{ function['is_static'] }}">static</template> |
+ <template if="{{ function['is_const'] }}">const</template> |
+ {{ kind }} |
+ </div> |
</div> |
- <div class="panel-body"> |
- <div> |
- <code-ref ref="{{ function['code'] }}"></code-ref> |
- <code-ref ref="{{ function['unoptimized_code'] }}"></code-ref> |
+ <template if="{{ function['parent'] != null }}"> |
+ <div class="memberItem"> |
+ <div class="memberName">parent function</div> |
+ <div class="memberValue"> |
+ <function-ref ref="{{ function['parent'] }}"></function-ref> |
+ </div> |
+ </div> |
+ </template> |
+ <template if="{{ function['parent'] == null && |
+ function['class'] != null }}"> |
+ <div class="memberItem"> |
+ <div class="memberName">parent class</div> |
+ <div class="memberValue"> |
+ <class-ref ref="{{ function['class'] }}"></class-ref> |
+ </div> |
+ </div> |
+ </template> |
+ <div class="memberItem"> |
+ <div class="memberName">script</div> |
+ <div class="memberValue"> |
+ <script-ref ref="{{ function['script'] }}"> |
+ </script-ref> |
</div> |
- <table class="table table-hover"> |
- <tbody> |
- <tr> |
- <td>static</td><td>{{ function['is_static'] }}</td> |
- </tr> |
- <tr> |
- <td>Const</td><td>{{ function['is_const'] }}</td> |
- </tr> |
- <tr> |
- <td>Optimizable</td><td>{{ function['is_optimizable'] }}</td> |
- </tr> |
- <tr> |
- <td>Inlinable</td><td>{{ function['is_inlinable'] }}</td> |
- </tr> |
- <tr> |
- <td>Kind</td><td>{{ function['kind'] }}</td> |
- </tr> |
- <tr> |
- <td>Usage Count</td><td>{{ function['usage_counter'] }}</td> |
- </tr> |
- <tr> |
- <td>Optimized Call Site Count</td><td>{{ function['optimized_call_site_count'] }}</td> |
- </tr> |
- <tr> |
- <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</td> |
- </tr> |
- </tbody> |
- </table> |
</div> |
- </div> |
+ |
+ <div class="memberItem"> </div> |
+ |
+ <template if="{{ function['code'] != null }}"> |
+ <div class="memberItem"> |
+ <div class="memberName">optimized code</div> |
+ <div class="memberValue"> |
+ <code-ref ref="{{ function['code'] }}"></code-ref> |
+ </div> |
+ </div> |
+ </template> |
+ <template if="{{ function['unoptimized_code'] != null }}"> |
+ <div class="memberItem"> |
+ <div class="memberName">unoptimized code</div> |
+ <div class="memberValue"> |
+ <code-ref ref="{{ function['unoptimized_code'] }}"></code-ref> |
+ </div> |
+ <div class="memberValue"> |
+ <span title="This count is used to determine when a function will be optimized. It is a combination of call counts and other factors."> |
+ (usage count: {{ function['usage_counter'] }}) |
+ </span> |
+ </div> |
+ </div> |
+ </template> |
+ <div class="memberItem"> |
+ <div class="memberName">deoptimizations</div> |
+ <div class="memberValue">{{ function['deoptimizations'] }}</div> |
+ </div> |
+ <div class="memberItem"> |
+ <div class="memberName">optimizable</div> |
+ <div class="memberValue">{{ function['is_optimizable'] }}</div> |
+ </div> |
+ <div class="memberItem"> |
+ <div class="memberName">inlinable</div> |
+ <div class="memberValue">{{ function['is_inlinable'] }}</div> |
+ </div> |
+ <template if="{{ function.name != function.vmName }}"> |
+ <div class="memberItem"> |
+ <div class="memberName">vm name</div> |
+ <div class="memberValue">{{ function.vmName }}</div> |
+ </div> |
+ </template> |
+ </div> |
</div> |
- </div> |
</template> |
<script type="application/dart" src="function_view.dart"></script> |
</polymer-element> |