| Index: runtime/bin/vmservice/client/out/web/index.html
|
| diff --git a/runtime/bin/vmservice/client/out/web/index.html b/runtime/bin/vmservice/client/out/web/index.html
|
| index d691a58e443a45673f0424c236f0338998c6233a..b74ab37e5363d92194aaa96d458fd57cb8a91545 100644
|
| --- a/runtime/bin/vmservice/client/out/web/index.html
|
| +++ b/runtime/bin/vmservice/client/out/web/index.html
|
| @@ -1,16 +1,130 @@
|
| <!DOCTYPE html><html><head>
|
| - <title>Dart VM Observatory</title>
|
| - <meta charset="utf-8">
|
| -
|
| - <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.css">
|
| -
|
| - </head>
|
| - <body>
|
| -<!--
|
| -<script src="packages/shadow_dom/shadow_dom.debug.js"></script>
|
| -<script src="packages/browser/interop.js"></script>
|
| --->
|
| -<polymer-element name="observatory-element">
|
| +
|
| + <title>Dart VM Observatory</title>
|
| + <meta charset="utf-8">
|
| + <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.css">
|
| +
|
| + <script src="index.html_bootstrap.dart.js"></script>
|
| +
|
| +</head>
|
| +<body><polymer-element name="observatory-element">
|
| +
|
| +</polymer-element><polymer-element name="class-view" extends="observatory-element">
|
| + <template>
|
| + <div class="row">
|
| + <div class="col-md-8 col-md-offset-2">
|
| + <div class="panel panel-warning">
|
| + <div class="panel-heading">
|
| + {{ cls['user_name'] }} ({{ cls['name'] }})
|
| + <template if="{{ cls['super']['type'] != 'Null' }}">
|
| + extends
|
| + <a href="{{ app.locationManager.currentIsolateClassLink(cls['super']['id'])}}">
|
| + {{ cls['super']['user_name'] }}
|
| + </a>
|
| + </template>
|
| + <a class="pull-right" href="{{ app.locationManager.currentIsolateObjectLink(cls['library']['id'])}}">
|
| + {{ cls['library']['name'] }}
|
| + </a>
|
| + </div>
|
| + <div class="panel-body">
|
| + <table class="table table-hover">
|
| + <tbody>
|
| + <tr>
|
| + <td>Abstract</td><td>{{ cls['abstract'] }}</td>
|
| + </tr>
|
| + <tr>
|
| + <td>Const</td><td>{{ cls['const'] }}</td>
|
| + </tr>
|
| + <tr>
|
| + <td>Finalized</td><td>{{ cls['const'] }}</td>
|
| + </tr>
|
| + <tr>
|
| + <td>Implemented</td><td>{{ cls['implemented'] }}</td>
|
| + </tr>
|
| + <tr>
|
| + <td>Patch</td><td>{{ cls['patch'] }}</td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| + <blockquote><strong>Fields</strong></blockquote>
|
| + <table class="table table-hover">
|
| + <thead>
|
| + <tr>
|
| + <th>User Name</th>
|
| + <th>VM Name</th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr template="" repeat="{{ field in cls['fields'] }}">
|
| + <td><a href="{{ app.locationManager.currentIsolateObjectLink(field['id'])}}">{{ field['user_name'] }}</a></td>
|
| + <td><a href="{{ app.locationManager.currentIsolateObjectLink(field['id'])}}">{{ field['name'] }}</a></td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| + <blockquote><strong>Functions</strong></blockquote>
|
| + <table class="table table-hover">
|
| + <thead>
|
| + <tr>
|
| + <th>User Name</th>
|
| + <th>VM Name</th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr template="" repeat="{{ function in cls['functions'] }}">
|
| + <td><a href="{{ app.locationManager.currentIsolateObjectLink(function['id'])}}">{{ function['user_name'] }}</a></td>
|
| + <td><a href="{{ app.locationManager.currentIsolateObjectLink(function['id'])}}">{{ function['name'] }}</a></td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </template>
|
| +
|
| +</polymer-element><polymer-element name="disassembly-entry" extends="observatory-element">
|
| + <template>
|
| + <div class="row">
|
| + <template if="{{ instruction['type'] == 'DisassembledInstructionComment' }}">
|
| + <div class="col-md-2"></div>
|
| + <div class="col-md-2"></div>
|
| + <div class="col-md-4"><code>{{ instruction['comment'] }}</code></div>
|
| + </template>
|
| + <template if="{{ instruction['type'] == 'DisassembledInstruction' }}">
|
| + <div class="col-md-2"></div>
|
| + <div class="col-md-2">{{ instruction['pc'] }}</div>
|
| + <div class="col-md-4">
|
| + <code>{{ instruction['hex'] }} {{ instruction['human'] }}</code>
|
| + </div>
|
| + </template>
|
| + </div>
|
| + </template>
|
| +
|
| +</polymer-element><polymer-element name="code-view" extends="observatory-element">
|
| + <template>
|
| + <div class="row">
|
| + <div class="col-md-8 col-md-offset-2">
|
| + <div class="{{ cssPanelClass }}">
|
| + <div class="panel-heading">
|
| + <a href="{{ app.locationManager.currentIsolateObjectLink(code['function']['id'])}}">
|
| + {{ code['function']['user_name'] }} ({{ code['function']['name'] }})
|
| + </a>
|
| + </div>
|
| + <div class="panel-body">
|
| + <div class="row">
|
| + <div class="col-md-2"><strong>Samples</strong></div>
|
| + <div class="col-md-2"><strong>Address</strong></div>
|
| + <div><strong>Instruction</strong></div>
|
| + </div>
|
| + <template repeat="{{ instruction in code['disassembly'] }}">
|
| + <disassembly-entry instruction="{{ instruction }}">
|
| + </disassembly-entry>
|
| + </template>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </template>
|
|
|
| </polymer-element><polymer-element name="collapsible-content" extends="observatory-element">
|
| <template>
|
| @@ -26,11 +140,108 @@
|
|
|
| </polymer-element><polymer-element name="error-view" extends="observatory-element">
|
| <template>
|
| - <div class="alert alert-danger">Error!</div>
|
| - <div class="alert alert-info">
|
| - <p>Error message:</p>
|
| - <p>{{ error }}</p>
|
| + <div class="row">
|
| + <div class="col-md-8 col-md-offset-2">
|
| + <div class="panel panel-danger">
|
| + <div class="panel-heading">Error</div>
|
| + <div class="panel-body">
|
| + <p>{{ error }}</p>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </template>
|
| +
|
| +</polymer-element><polymer-element name="field-view" extends="observatory-element">
|
| + <template>
|
| + <div class="row">
|
| + <div class="col-md-8 col-md-offset-2">
|
| + <div class="panel panel-warning">
|
| + <div class="panel-heading">
|
| + <template if="{{ field['static'] }}">static</template>
|
| + <template if="{{ field['final'] }}">final</template>
|
| + <template if="{{ field['const'] }}">const</template>
|
| + {{ field['user_name'] }} ({{ field['name'] }})
|
| + <a class="pull-right" href="{{ app.locationManager.currentIsolateClassLink(field['class']['id'])}}">
|
| + {{ field['class']['user_name'] }}
|
| + </a>
|
| + </div>
|
| + <div class="panel-body">
|
| + <template if="{{ field['guard_class'] == 'dynamic'}}">
|
| + <div class="alert alert-danger">
|
| + Field has been assigned multiple types. If a field is only ever
|
| + assigned a single type, performance may improve.
|
| + </div>
|
| + </template>
|
| + <template if="{{ field['guard_class'] != 'dynamic'}}">
|
| + <div class="alert alert-success">Field has monomorphic type</div>
|
| + <template if="{{ (field['guard_class'] != 'dynamic') &&
|
| + field['guard_nullable'] }}">
|
| + <div class="alert alert-info">
|
| + Field has been assigned null. If a field is never assigned null,
|
| + performance may improve.
|
| + </div>
|
| + </template>
|
| + <blockquote>
|
| + <a href="{{ app.locationManager.currentIsolateClassLink(field['guard_class']['id'])}}">
|
| + {{ field['guard_class']['user_name'] }}
|
| + </a>
|
| + </blockquote>
|
| + </template>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </template>
|
| +
|
| +</polymer-element><polymer-element name="function-view" extends="observatory-element">
|
| + <template>
|
| + <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'] }})
|
| + <a class="pull-right" href="{{ app.locationManager.currentIsolateClassLink(function['class']['id'])}}">
|
| + {{ function['class']['name'] }}
|
| + </a>
|
| + </div>
|
| + <div class="panel-body">
|
| + <div>
|
| + <a class="btn btn-primary" href="{{ app.locationManager.currentIsolateObjectLink(function['code']['id'])}}">Current Code</a>
|
| + <a class="btn btn-info" href="{{ app.locationManager.currentIsolateObjectLink(function['unoptimized_code']['id'])}}">Unoptimized Code</a>
|
| + </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>
|
| + </div>
|
| </template>
|
|
|
| </polymer-element><polymer-element name="isolate-summary" extends="observatory-element">
|
| @@ -47,7 +258,10 @@
|
| <div class="col-md-1">
|
| <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrace') }}">Stacktrace</a>
|
| </div>
|
| - <div class="col-md-9"></div>
|
| + <div class="col-md-1">
|
| + <a href="{{ app.locationManager.relativeLink(isolate, 'library') }}">Library</a>
|
| + </div>
|
| + <div class="col-md-8"></div>
|
| </div>
|
| </template>
|
|
|
| @@ -91,6 +305,46 @@
|
| </template>
|
| </template>
|
|
|
| +</polymer-element><polymer-element name="library-view" extends="observatory-element">
|
| + <template>
|
| + <div class="alert alert-success">Library {{ library['name'] }}</div>
|
| + <div class="alert alert-info">Imported Libraries</div>
|
| + <table class="table table-hover">
|
| + <tbody>
|
| + <tr template="" repeat="{{ lib in library['libraries'] }}">
|
| + <td>
|
| + <a href="{{ app.locationManager.currentIsolateObjectLink(lib['id'])}}">
|
| + {{ lib['name'] }}
|
| + </a>
|
| + </td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| + <div class="alert alert-info">Classes</div>
|
| + <table class="table table-hover">
|
| + <thead>
|
| + <tr>
|
| + <th>Name</th>
|
| + <th>Internal Name</th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr template="" repeat="{{ cls in library['classes'] }}">
|
| + <td>
|
| + <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}">
|
| + {{ cls['user_name'] }}
|
| + </a>
|
| + </td>
|
| + <td>
|
| + <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}">
|
| + {{ cls['name'] }}
|
| + </a>
|
| + </td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| + </template>
|
| +
|
| </polymer-element><polymer-element name="stack-trace" extends="observatory-element">
|
| <template>
|
| <div class="alert alert-info">Stack Trace</div>
|
| @@ -106,7 +360,7 @@
|
| <tbody>
|
| <tr template="" repeat="{{ frame in trace['members'] }}">
|
| <td>{{$index}}</td>
|
| - <td>{{ frame['name'] }}</td>
|
| + <td><a href="{{app.locationManager.currentIsolateObjectLink(frame['function']['id'])}}">{{ frame['name'] }}</a></td>
|
| <td>{{ frame['url'] }}</td>
|
| <td>{{ frame['line'] }}</td>
|
| </tr>
|
| @@ -132,6 +386,21 @@
|
| <template if="{{ messageType == 'RequestError' }}">
|
| <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view>
|
| </template>
|
| + <template if="{{ messageType == 'Library' }}">
|
| + <library-view app="{{ app }}" library="{{ message }}"></library-view>
|
| + </template>
|
| + <template if="{{ messageType == 'Class' }}">
|
| + <class-view app="{{ app }}" cls="{{ message }}"></class-view>
|
| + </template>
|
| + <template if="{{ messageType == 'Field' }}">
|
| + <field-view app="{{ app }}" field="{{ message }}"></field-view>
|
| + </template>
|
| + <template if="{{ messageType == 'Function' }}">
|
| + <function-view app="{{ app }}" function="{{ message }}"></function-view>
|
| + </template>
|
| + <template if="{{ messageType == 'Code' }}">
|
| + <code-view app="{{ app }}" code="{{ message }}"></code-view>
|
| + </template>
|
| <!-- Add new views and message types in the future here. -->
|
| </template>
|
|
|
| @@ -152,7 +421,7 @@
|
| <template repeat="{{ message in app.requestManager.responses }}">
|
| <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer>
|
| <collapsible-content>
|
| - <json-view json="{{ message }}"></json-view>
|
| + <!-- <json-view json="{{ message }}"></json-view> -->
|
| </collapsible-content>
|
| </template>
|
| </template>
|
| @@ -164,8 +433,6 @@
|
| </template>
|
|
|
| </polymer-element>
|
| - <observatory-application></observatory-application>
|
| -
|
| -
|
| + <observatory-application></observatory-application>
|
|
|
| -<script type="application/javascript" src="index.html_bootstrap.dart.js"></script></body></html>
|
| +</body></html>
|
|
|