| OLD | NEW |
| 1 <!DOCTYPE html><html><head> | 1 <!DOCTYPE html><html><head> |
| 2 <title>Dart VM Observatory</title> | 2 |
| 3 <meta charset="utf-8"> | 3 <title>Dart VM Observatory</title> |
| 4 | 4 <meta charset="utf-8"> |
| 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min
.css"> | 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> |
| 6 | 6 |
| 7 </head> | 7 <script src="index.html_bootstrap.dart.js"></script> |
| 8 <body> | 8 |
| 9 <!-- | 9 </head> |
| 10 <script src="packages/shadow_dom/shadow_dom.debug.js"></script> | 10 <body><polymer-element name="observatory-element"> |
| 11 <script src="packages/browser/interop.js"></script> | 11 |
| 12 --> | 12 </polymer-element><polymer-element name="class-view" extends="observatory-elemen
t"> |
| 13 <polymer-element name="observatory-element"> | 13 <template> |
| 14 <div class="row"> |
| 15 <div class="col-md-8 col-md-offset-2"> |
| 16 <div class="panel panel-warning"> |
| 17 <div class="panel-heading"> |
| 18 {{ cls['user_name'] }} ({{ cls['name'] }}) |
| 19 <template if="{{ cls['super']['type'] != 'Null' }}"> |
| 20 extends |
| 21 <a href="{{ app.locationManager.currentIsolateClassLink(cls['super']
['id'])}}"> |
| 22 {{ cls['super']['user_name'] }} |
| 23 </a> |
| 24 </template> |
| 25 <a class="pull-right" href="{{ app.locationManager.currentIsolateObjec
tLink(cls['library']['id'])}}"> |
| 26 {{ cls['library']['name'] }} |
| 27 </a> |
| 28 </div> |
| 29 <div class="panel-body"> |
| 30 <table class="table table-hover"> |
| 31 <tbody> |
| 32 <tr> |
| 33 <td>Abstract</td><td>{{ cls['abstract'] }}</td> |
| 34 </tr> |
| 35 <tr> |
| 36 <td>Const</td><td>{{ cls['const'] }}</td> |
| 37 </tr> |
| 38 <tr> |
| 39 <td>Finalized</td><td>{{ cls['const'] }}</td> |
| 40 </tr> |
| 41 <tr> |
| 42 <td>Implemented</td><td>{{ cls['implemented'] }}</td> |
| 43 </tr> |
| 44 <tr> |
| 45 <td>Patch</td><td>{{ cls['patch'] }}</td> |
| 46 </tr> |
| 47 </tbody> |
| 48 </table> |
| 49 <blockquote><strong>Fields</strong></blockquote> |
| 50 <table class="table table-hover"> |
| 51 <thead> |
| 52 <tr> |
| 53 <th>User Name</th> |
| 54 <th>VM Name</th> |
| 55 </tr> |
| 56 </thead> |
| 57 <tbody> |
| 58 <tr template="" repeat="{{ field in cls['fields'] }}"> |
| 59 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fie
ld['id'])}}">{{ field['user_name'] }}</a></td> |
| 60 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fie
ld['id'])}}">{{ field['name'] }}</a></td> |
| 61 </tr> |
| 62 </tbody> |
| 63 </table> |
| 64 <blockquote><strong>Functions</strong></blockquote> |
| 65 <table class="table table-hover"> |
| 66 <thead> |
| 67 <tr> |
| 68 <th>User Name</th> |
| 69 <th>VM Name</th> |
| 70 </tr> |
| 71 </thead> |
| 72 <tbody> |
| 73 <tr template="" repeat="{{ function in cls['functions'] }}"> |
| 74 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fun
ction['id'])}}">{{ function['user_name'] }}</a></td> |
| 75 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fun
ction['id'])}}">{{ function['name'] }}</a></td> |
| 76 </tr> |
| 77 </tbody> |
| 78 </table> |
| 79 </div> |
| 80 </div> |
| 81 </div> |
| 82 </div> |
| 83 </template> |
| 84 |
| 85 </polymer-element><polymer-element name="disassembly-entry" extends="observatory
-element"> |
| 86 <template> |
| 87 <div class="row"> |
| 88 <template if="{{ instruction['type'] == 'DisassembledInstructionComment' }}"
> |
| 89 <div class="col-md-2"></div> |
| 90 <div class="col-md-2"></div> |
| 91 <div class="col-md-4"><code>{{ instruction['comment'] }}</code></div> |
| 92 </template> |
| 93 <template if="{{ instruction['type'] == 'DisassembledInstruction' }}"> |
| 94 <div class="col-md-2"></div> |
| 95 <div class="col-md-2">{{ instruction['pc'] }}</div> |
| 96 <div class="col-md-4"> |
| 97 <code>{{ instruction['hex'] }} {{ instruction['human'] }}</code> |
| 98 </div> |
| 99 </template> |
| 100 </div> |
| 101 </template> |
| 102 |
| 103 </polymer-element><polymer-element name="code-view" extends="observatory-element
"> |
| 104 <template> |
| 105 <div class="row"> |
| 106 <div class="col-md-8 col-md-offset-2"> |
| 107 <div class="{{ cssPanelClass }}"> |
| 108 <div class="panel-heading"> |
| 109 <a href="{{ app.locationManager.currentIsolateObjectLink(code['functio
n']['id'])}}"> |
| 110 {{ code['function']['user_name'] }} ({{ code['function']['name'] }}) |
| 111 </a> |
| 112 </div> |
| 113 <div class="panel-body"> |
| 114 <div class="row"> |
| 115 <div class="col-md-2"><strong>Samples</strong></div> |
| 116 <div class="col-md-2"><strong>Address</strong></div> |
| 117 <div><strong>Instruction</strong></div> |
| 118 </div> |
| 119 <template repeat="{{ instruction in code['disassembly'] }}"> |
| 120 <disassembly-entry instruction="{{ instruction }}"> |
| 121 </disassembly-entry> |
| 122 </template> |
| 123 </div> |
| 124 </div> |
| 125 </div> |
| 126 </div> |
| 127 </template> |
| 14 | 128 |
| 15 </polymer-element><polymer-element name="collapsible-content" extends="observato
ry-element"> | 129 </polymer-element><polymer-element name="collapsible-content" extends="observato
ry-element"> |
| 16 <template> | 130 <template> |
| 17 <div class="well row"> | 131 <div class="well row"> |
| 18 <a on-click="toggleDisplay" class="btn muted unselectable"> | 132 <a on-click="toggleDisplay" class="btn muted unselectable"> |
| 19 Raw message... <i class="{{ iconClass }}"></i> | 133 Raw message... <i class="{{ iconClass }}"></i> |
| 20 </a> | 134 </a> |
| 21 <div style="display: {{ displayValue }}" class="well"> | 135 <div style="display: {{ displayValue }}" class="well"> |
| 22 <content></content> | 136 <content></content> |
| 23 </div> | 137 </div> |
| 24 </div> | 138 </div> |
| 25 </template> | 139 </template> |
| 26 | 140 |
| 27 </polymer-element><polymer-element name="error-view" extends="observatory-elemen
t"> | 141 </polymer-element><polymer-element name="error-view" extends="observatory-elemen
t"> |
| 28 <template> | 142 <template> |
| 29 <div class="alert alert-danger">Error!</div> | 143 <div class="row"> |
| 30 <div class="alert alert-info"> | 144 <div class="col-md-8 col-md-offset-2"> |
| 31 <p>Error message:</p> | 145 <div class="panel panel-danger"> |
| 32 <p>{{ error }}</p> | 146 <div class="panel-heading">Error</div> |
| 147 <div class="panel-body"> |
| 148 <p>{{ error }}</p> |
| 149 </div> |
| 150 </div> |
| 151 </div> |
| 33 </div> | 152 </div> |
| 34 </template> | 153 </template> |
| 35 | 154 |
| 155 </polymer-element><polymer-element name="field-view" extends="observatory-elemen
t"> |
| 156 <template> |
| 157 <div class="row"> |
| 158 <div class="col-md-8 col-md-offset-2"> |
| 159 <div class="panel panel-warning"> |
| 160 <div class="panel-heading"> |
| 161 <template if="{{ field['static'] }}">static</template> |
| 162 <template if="{{ field['final'] }}">final</template> |
| 163 <template if="{{ field['const'] }}">const</template> |
| 164 {{ field['user_name'] }} ({{ field['name'] }}) |
| 165 <a class="pull-right" href="{{ app.locationManager.currentIsolateClass
Link(field['class']['id'])}}"> |
| 166 {{ field['class']['user_name'] }} |
| 167 </a> |
| 168 </div> |
| 169 <div class="panel-body"> |
| 170 <template if="{{ field['guard_class'] == 'dynamic'}}"> |
| 171 <div class="alert alert-danger"> |
| 172 Field has been assigned multiple types. If a field is only ever |
| 173 assigned a single type, performance may improve. |
| 174 </div> |
| 175 </template> |
| 176 <template if="{{ field['guard_class'] != 'dynamic'}}"> |
| 177 <div class="alert alert-success">Field has monomorphic type</div> |
| 178 <template if="{{ (field['guard_class'] != 'dynamic') && |
| 179 field['guard_nullable'] }}"> |
| 180 <div class="alert alert-info"> |
| 181 Field has been assigned null. If a field is never assigned null, |
| 182 performance may improve. |
| 183 </div> |
| 184 </template> |
| 185 <blockquote> |
| 186 <a href="{{ app.locationManager.currentIsolateClassLink(field['guard
_class']['id'])}}"> |
| 187 {{ field['guard_class']['user_name'] }} |
| 188 </a> |
| 189 </blockquote> |
| 190 </template> |
| 191 </div> |
| 192 </div> |
| 193 </div> |
| 194 </div> |
| 195 </template> |
| 196 |
| 197 </polymer-element><polymer-element name="function-view" extends="observatory-ele
ment"> |
| 198 <template> |
| 199 <div class="row"> |
| 200 <div class="col-md-8 col-md-offset-2"> |
| 201 <div class="panel panel-warning"> |
| 202 <div class="panel-heading"> |
| 203 {{ function['user_name'] }} ({{ function['name'] }}) |
| 204 <a class="pull-right" href="{{ app.locationManager.currentIsolateClass
Link(function['class']['id'])}}"> |
| 205 {{ function['class']['name'] }} |
| 206 </a> |
| 207 </div> |
| 208 <div class="panel-body"> |
| 209 <div> |
| 210 <a class="btn btn-primary" href="{{ app.locationManager.currentIsolate
ObjectLink(function['code']['id'])}}">Current Code</a> |
| 211 <a class="btn btn-info" href="{{ app.locationManager.currentIsolateObj
ectLink(function['unoptimized_code']['id'])}}">Unoptimized Code</a> |
| 212 </div> |
| 213 <table class="table table-hover"> |
| 214 <tbody> |
| 215 <tr> |
| 216 <td>static</td><td>{{ function['is_static'] }}</td> |
| 217 </tr> |
| 218 <tr> |
| 219 <td>Const</td><td>{{ function['is_const'] }}</td> |
| 220 </tr> |
| 221 <tr> |
| 222 <td>Optimizable</td><td>{{ function['is_optimizable'] }}</td> |
| 223 </tr> |
| 224 <tr> |
| 225 <td>Inlinable</td><td>{{ function['is_inlinable'] }}</td> |
| 226 </tr> |
| 227 <tr> |
| 228 <td>Kind</td><td>{{ function['kind'] }}</td> |
| 229 </tr> |
| 230 <tr> |
| 231 <td>Usage Count</td><td>{{ function['usage_counter'] }}</td> |
| 232 </tr> |
| 233 <tr> |
| 234 <td>Optimized Call Site Count</td><td>{{ function['optimized_cal
l_site_count'] }}</td> |
| 235 </tr> |
| 236 <tr> |
| 237 <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</t
d> |
| 238 </tr> |
| 239 </tbody> |
| 240 </table> |
| 241 </div> |
| 242 </div> |
| 243 </div> |
| 244 </div> |
| 245 </template> |
| 246 |
| 36 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e
lement"> | 247 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e
lement"> |
| 37 <template> | 248 <template> |
| 38 <div class="row"> | 249 <div class="row"> |
| 39 <div class="col-md-1"> | 250 <div class="col-md-1"> |
| 40 <img src="img/isolate_icon.png" class="img-polaroid"> | 251 <img src="img/isolate_icon.png" class="img-polaroid"> |
| 41 </div> | 252 </div> |
| 42 <div class="col-md-1">{{ isolate }}</div> | 253 <div class="col-md-1">{{ isolate }}</div> |
| 43 <div class="col-md-10">{{ name }}</div> | 254 <div class="col-md-10">{{ name }}</div> |
| 44 </div> | 255 </div> |
| 45 <div class="row"> | 256 <div class="row"> |
| 46 <div class="col-md-2"></div> | 257 <div class="col-md-2"></div> |
| 47 <div class="col-md-1"> | 258 <div class="col-md-1"> |
| 48 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac
e') }}">Stacktrace</a> | 259 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac
e') }}">Stacktrace</a> |
| 49 </div> | 260 </div> |
| 50 » <div class="col-md-9"></div> | 261 <div class="col-md-1"> |
| 262 <a href="{{ app.locationManager.relativeLink(isolate, 'library') }}">Lib
rary</a> |
| 263 </div> |
| 264 » <div class="col-md-8"></div> |
| 51 </div> | 265 </div> |
| 52 </template> | 266 </template> |
| 53 | 267 |
| 54 </polymer-element><polymer-element name="isolate-list" extends="observatory-elem
ent"> | 268 </polymer-element><polymer-element name="isolate-list" extends="observatory-elem
ent"> |
| 55 <template> | 269 <template> |
| 56 <ul class="list-group"> | 270 <ul class="list-group"> |
| 57 <template repeat="{{ isolate in app.isolateManager.isolates.values }}"> | 271 <template repeat="{{ isolate in app.isolateManager.isolates.values }}"> |
| 58 <li class="list-group-item"> | 272 <li class="list-group-item"> |
| 59 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso
late.name }}"></isolate-summary> | 273 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso
late.name }}"></isolate-summary> |
| 60 </li> | 274 </li> |
| (...skipping 23 matching lines...) Expand all Loading... |
| 84 <tbody> | 298 <tbody> |
| 85 <tr template="" repeat="{{key in keys}}"> | 299 <tr template="" repeat="{{key in keys}}"> |
| 86 <th>{{key}}</th> | 300 <th>{{key}}</th> |
| 87 <td><json-view json="{{value(key)}}"></json-view></td> | 301 <td><json-view json="{{value(key)}}"></json-view></td> |
| 88 </tr> | 302 </tr> |
| 89 </tbody> | 303 </tbody> |
| 90 </table> | 304 </table> |
| 91 </template> | 305 </template> |
| 92 </template> | 306 </template> |
| 93 | 307 |
| 308 </polymer-element><polymer-element name="library-view" extends="observatory-elem
ent"> |
| 309 <template> |
| 310 <div class="alert alert-success">Library {{ library['name'] }}</div> |
| 311 <div class="alert alert-info">Imported Libraries</div> |
| 312 <table class="table table-hover"> |
| 313 <tbody> |
| 314 <tr template="" repeat="{{ lib in library['libraries'] }}"> |
| 315 <td> |
| 316 <a href="{{ app.locationManager.currentIsolateObjectLink(lib['id'])}}"
> |
| 317 {{ lib['name'] }} |
| 318 </a> |
| 319 </td> |
| 320 </tr> |
| 321 </tbody> |
| 322 </table> |
| 323 <div class="alert alert-info">Classes</div> |
| 324 <table class="table table-hover"> |
| 325 <thead> |
| 326 <tr> |
| 327 <th>Name</th> |
| 328 <th>Internal Name</th> |
| 329 </tr> |
| 330 </thead> |
| 331 <tbody> |
| 332 <tr template="" repeat="{{ cls in library['classes'] }}"> |
| 333 <td> |
| 334 <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}"
> |
| 335 {{ cls['user_name'] }} |
| 336 </a> |
| 337 </td> |
| 338 <td> |
| 339 <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}"
> |
| 340 {{ cls['name'] }} |
| 341 </a> |
| 342 </td> |
| 343 </tr> |
| 344 </tbody> |
| 345 </table> |
| 346 </template> |
| 347 |
| 94 </polymer-element><polymer-element name="stack-trace" extends="observatory-eleme
nt"> | 348 </polymer-element><polymer-element name="stack-trace" extends="observatory-eleme
nt"> |
| 95 <template> | 349 <template> |
| 96 <div class="alert alert-info">Stack Trace</div> | 350 <div class="alert alert-info">Stack Trace</div> |
| 97 <table class="table table-hover"> | 351 <table class="table table-hover"> |
| 98 <thead> | 352 <thead> |
| 99 <tr> | 353 <tr> |
| 100 <th>Depth</th> | 354 <th>Depth</th> |
| 101 <th>Function</th> | 355 <th>Function</th> |
| 102 <th>Url</th> | 356 <th>Url</th> |
| 103 <th>Line</th> | 357 <th>Line</th> |
| 104 </tr> | 358 </tr> |
| 105 </thead> | 359 </thead> |
| 106 <tbody> | 360 <tbody> |
| 107 <tr template="" repeat="{{ frame in trace['members'] }}"> | 361 <tr template="" repeat="{{ frame in trace['members'] }}"> |
| 108 <td>{{$index}}</td> | 362 <td>{{$index}}</td> |
| 109 <td>{{ frame['name'] }}</td> | 363 <td><a href="{{app.locationManager.currentIsolateObjectLink(frame['funct
ion']['id'])}}">{{ frame['name'] }}</a></td> |
| 110 <td>{{ frame['url'] }}</td> | 364 <td>{{ frame['url'] }}</td> |
| 111 <td>{{ frame['line'] }}</td> | 365 <td>{{ frame['line'] }}</td> |
| 112 </tr> | 366 </tr> |
| 113 </tbody> | 367 </tbody> |
| 114 </table> | 368 </table> |
| 115 </template> | 369 </template> |
| 116 | 370 |
| 117 </polymer-element><polymer-element name="message-viewer" extends="observatory-el
ement"> | 371 </polymer-element><polymer-element name="message-viewer" extends="observatory-el
ement"> |
| 118 <!-- | 372 <!-- |
| 119 This is a big switch statement which instantiates the custom element | 373 This is a big switch statement which instantiates the custom element |
| 120 designated to display the message type. | 374 designated to display the message type. |
| 121 --> | 375 --> |
| 122 <template> | 376 <template> |
| 123 <!-- If the message type is an IsolateList --> | 377 <!-- If the message type is an IsolateList --> |
| 124 <template if="{{ messageType == 'IsolateList' }}"> | 378 <template if="{{ messageType == 'IsolateList' }}"> |
| 125 <isolate-list app="{{ app }}"></isolate-list> | 379 <isolate-list app="{{ app }}"></isolate-list> |
| 126 </template> | 380 </template> |
| 127 <!-- If the message type is a StackTrace --> | 381 <!-- If the message type is a StackTrace --> |
| 128 <template if="{{ messageType == 'StackTrace' }}"> | 382 <template if="{{ messageType == 'StackTrace' }}"> |
| 129 <stack-trace app="{{ app }}" trace="{{ message }}"></stack-trace> | 383 <stack-trace app="{{ app }}" trace="{{ message }}"></stack-trace> |
| 130 </template> | 384 </template> |
| 131 <!-- If the message type is a RequestError --> | 385 <!-- If the message type is a RequestError --> |
| 132 <template if="{{ messageType == 'RequestError' }}"> | 386 <template if="{{ messageType == 'RequestError' }}"> |
| 133 <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view> | 387 <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view> |
| 134 </template> | 388 </template> |
| 389 <template if="{{ messageType == 'Library' }}"> |
| 390 <library-view app="{{ app }}" library="{{ message }}"></library-view> |
| 391 </template> |
| 392 <template if="{{ messageType == 'Class' }}"> |
| 393 <class-view app="{{ app }}" cls="{{ message }}"></class-view> |
| 394 </template> |
| 395 <template if="{{ messageType == 'Field' }}"> |
| 396 <field-view app="{{ app }}" field="{{ message }}"></field-view> |
| 397 </template> |
| 398 <template if="{{ messageType == 'Function' }}"> |
| 399 <function-view app="{{ app }}" function="{{ message }}"></function-view> |
| 400 </template> |
| 401 <template if="{{ messageType == 'Code' }}"> |
| 402 <code-view app="{{ app }}" code="{{ message }}"></code-view> |
| 403 </template> |
| 135 <!-- Add new views and message types in the future here. --> | 404 <!-- Add new views and message types in the future here. --> |
| 136 </template> | 405 </template> |
| 137 | 406 |
| 138 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el
ement"> | 407 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el
ement"> |
| 139 <template> | 408 <template> |
| 140 <nav class="navbar navbar-default" role="navigation"> | 409 <nav class="navbar navbar-default" role="navigation"> |
| 141 <div class="navbar-header"> | 410 <div class="navbar-header"> |
| 142 <a class="navbar-brand" href="">Observatory</a> | 411 <a class="navbar-brand" href="">Observatory</a> |
| 143 </div> | 412 </div> |
| 144 <div class="collapse navbar-collapse navbar-ex1-collapse"> | 413 <div class="collapse navbar-collapse navbar-ex1-collapse"> |
| 145 <input class="span2 pull-right navbar-form" placeholder="VM Address" typ
e="text" value="{{ app.requestManager.prefix }}"> | 414 <input class="span2 pull-right navbar-form" placeholder="VM Address" typ
e="text" value="{{ app.requestManager.prefix }}"> |
| 146 </div> | 415 </div> |
| 147 </nav> | 416 </nav> |
| 148 </template> | 417 </template> |
| 149 | 418 |
| 150 </polymer-element><polymer-element name="response-viewer" extends="observatory-e
lement"> | 419 </polymer-element><polymer-element name="response-viewer" extends="observatory-e
lement"> |
| 151 <template> | 420 <template> |
| 152 <template repeat="{{ message in app.requestManager.responses }}"> | 421 <template repeat="{{ message in app.requestManager.responses }}"> |
| 153 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer> | 422 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer> |
| 154 <collapsible-content> | 423 <collapsible-content> |
| 155 <json-view json="{{ message }}"></json-view> | 424 <!-- <json-view json="{{ message }}"></json-view> --> |
| 156 </collapsible-content> | 425 </collapsible-content> |
| 157 </template> | 426 </template> |
| 158 </template> | 427 </template> |
| 159 | 428 |
| 160 </polymer-element><polymer-element name="observatory-application" extends="obser
vatory-element"> | 429 </polymer-element><polymer-element name="observatory-application" extends="obser
vatory-element"> |
| 161 <template> | 430 <template> |
| 162 <navigation-bar app="{{ app }}"></navigation-bar> | 431 <navigation-bar app="{{ app }}"></navigation-bar> |
| 163 <response-viewer app="{{ app }}"></response-viewer> | 432 <response-viewer app="{{ app }}"></response-viewer> |
| 164 </template> | 433 </template> |
| 165 | 434 |
| 166 </polymer-element> | 435 </polymer-element> |
| 167 <observatory-application></observatory-application> | 436 <observatory-application></observatory-application> |
| 168 | |
| 169 | |
| 170 | 437 |
| 171 <script type="application/javascript" src="index.html_bootstrap.dart.js"></scrip
t></body></html> | 438 </body></html> |
| OLD | NEW |