| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html><html><head> | |
| 2 | |
| 3 <title>Dart VM Observatory</title> | |
| 4 <meta charset="utf-8"> | |
| 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> | |
| 6 | |
| 7 <script src="index.html_bootstrap.dart.js"></script> | |
| 8 | |
| 9 </head> | |
| 10 <body><polymer-element name="observatory-element"> | |
| 11 | |
| 12 </polymer-element><polymer-element name="class-view" extends="observatory-elemen
t"> | |
| 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> | |
| 128 | |
| 129 </polymer-element><polymer-element name="collapsible-content" extends="observato
ry-element"> | |
| 130 <template> | |
| 131 <div class="well row"> | |
| 132 <a on-click="toggleDisplay" class="btn muted unselectable"> | |
| 133 Raw message... <i class="{{ iconClass }}"></i> | |
| 134 </a> | |
| 135 <div style="display: {{ displayValue }}" class="well"> | |
| 136 <content></content> | |
| 137 </div> | |
| 138 </div> | |
| 139 </template> | |
| 140 | |
| 141 </polymer-element><polymer-element name="error-view" extends="observatory-elemen
t"> | |
| 142 <template> | |
| 143 <div class="row"> | |
| 144 <div class="col-md-8 col-md-offset-2"> | |
| 145 <div class="panel panel-danger"> | |
| 146 <div class="panel-heading">Error</div> | |
| 147 <div class="panel-body"> | |
| 148 <p>{{ error }}</p> | |
| 149 </div> | |
| 150 </div> | |
| 151 </div> | |
| 152 </div> | |
| 153 </template> | |
| 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 | |
| 247 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e
lement"> | |
| 248 <template> | |
| 249 <div class="row"> | |
| 250 <div class="col-md-1"> | |
| 251 <img src="img/isolate_icon.png" class="img-polaroid"> | |
| 252 </div> | |
| 253 <div class="col-md-1">{{ isolate }}</div> | |
| 254 <div class="col-md-10">{{ name }}</div> | |
| 255 </div> | |
| 256 <div class="row"> | |
| 257 <div class="col-md-2"></div> | |
| 258 <div class="col-md-1"> | |
| 259 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac
e') }}">Stacktrace</a> | |
| 260 </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> | |
| 265 </div> | |
| 266 </template> | |
| 267 | |
| 268 </polymer-element><polymer-element name="isolate-list" extends="observatory-elem
ent"> | |
| 269 <template> | |
| 270 <ul class="list-group"> | |
| 271 <template repeat="{{ isolate in app.isolateManager.isolates.values }}"> | |
| 272 <li class="list-group-item"> | |
| 273 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso
late.name }}"></isolate-summary> | |
| 274 </li> | |
| 275 </template> | |
| 276 </ul> | |
| 277 </template> | |
| 278 | |
| 279 </polymer-element><polymer-element name="json-view" extends="observatory-element
"> | |
| 280 <template> | |
| 281 <template bind="" if="{{ valueType == 'Primitive' }}"> | |
| 282 <span>{{primitiveString}}</span> | |
| 283 </template> | |
| 284 <template bind="" if="{{ valueType == 'List' }}"> | |
| 285 <table class="table table-condensed table-bordered"> | |
| 286 <caption class="text-left">List, {{list.length}}</caption> | |
| 287 <tbody> | |
| 288 <tr template="" repeat="{{item in list)}}"> | |
| 289 <th>{{counter}}</th> | |
| 290 <td><json-view json="{{item}}"></json-view></td> | |
| 291 </tr> | |
| 292 </tbody> | |
| 293 </table> | |
| 294 </template> | |
| 295 <template if="{{ valueType == 'Map' }}"> | |
| 296 <table class="table table-condensed table-bordered"> | |
| 297 <caption class="text-left">Map, {{keys.length}}</caption> | |
| 298 <tbody> | |
| 299 <tr template="" repeat="{{key in keys}}"> | |
| 300 <th>{{key}}</th> | |
| 301 <td><json-view json="{{value(key)}}"></json-view></td> | |
| 302 </tr> | |
| 303 </tbody> | |
| 304 </table> | |
| 305 </template> | |
| 306 </template> | |
| 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 | |
| 348 </polymer-element><polymer-element name="stack-trace" extends="observatory-eleme
nt"> | |
| 349 <template> | |
| 350 <div class="alert alert-info">Stack Trace</div> | |
| 351 <table class="table table-hover"> | |
| 352 <thead> | |
| 353 <tr> | |
| 354 <th>Depth</th> | |
| 355 <th>Function</th> | |
| 356 <th>Url</th> | |
| 357 <th>Line</th> | |
| 358 </tr> | |
| 359 </thead> | |
| 360 <tbody> | |
| 361 <tr template="" repeat="{{ frame in trace['members'] }}"> | |
| 362 <td>{{$index}}</td> | |
| 363 <td><a href="{{app.locationManager.currentIsolateObjectLink(frame['funct
ion']['id'])}}">{{ frame['name'] }}</a></td> | |
| 364 <td>{{ frame['url'] }}</td> | |
| 365 <td>{{ frame['line'] }}</td> | |
| 366 </tr> | |
| 367 </tbody> | |
| 368 </table> | |
| 369 </template> | |
| 370 | |
| 371 </polymer-element><polymer-element name="message-viewer" extends="observatory-el
ement"> | |
| 372 <!-- | |
| 373 This is a big switch statement which instantiates the custom element | |
| 374 designated to display the message type. | |
| 375 --> | |
| 376 <template> | |
| 377 <!-- If the message type is an IsolateList --> | |
| 378 <template if="{{ messageType == 'IsolateList' }}"> | |
| 379 <isolate-list app="{{ app }}"></isolate-list> | |
| 380 </template> | |
| 381 <!-- If the message type is a StackTrace --> | |
| 382 <template if="{{ messageType == 'StackTrace' }}"> | |
| 383 <stack-trace app="{{ app }}" trace="{{ message }}"></stack-trace> | |
| 384 </template> | |
| 385 <!-- If the message type is a RequestError --> | |
| 386 <template if="{{ messageType == 'RequestError' }}"> | |
| 387 <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view> | |
| 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> | |
| 404 <!-- Add new views and message types in the future here. --> | |
| 405 </template> | |
| 406 | |
| 407 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el
ement"> | |
| 408 <template> | |
| 409 <nav class="navbar navbar-default" role="navigation"> | |
| 410 <div class="navbar-header"> | |
| 411 <a class="navbar-brand" href="">Observatory</a> | |
| 412 </div> | |
| 413 <div class="collapse navbar-collapse navbar-ex1-collapse"> | |
| 414 <input class="span2 pull-right navbar-form" placeholder="VM Address" typ
e="text" value="{{ app.requestManager.prefix }}"> | |
| 415 </div> | |
| 416 </nav> | |
| 417 </template> | |
| 418 | |
| 419 </polymer-element><polymer-element name="response-viewer" extends="observatory-e
lement"> | |
| 420 <template> | |
| 421 <template repeat="{{ message in app.requestManager.responses }}"> | |
| 422 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer> | |
| 423 <collapsible-content> | |
| 424 <!-- <json-view json="{{ message }}"></json-view> --> | |
| 425 </collapsible-content> | |
| 426 </template> | |
| 427 </template> | |
| 428 | |
| 429 </polymer-element><polymer-element name="observatory-application" extends="obser
vatory-element"> | |
| 430 <template> | |
| 431 <navigation-bar app="{{ app }}"></navigation-bar> | |
| 432 <response-viewer app="{{ app }}"></response-viewer> | |
| 433 </template> | |
| 434 | |
| 435 </polymer-element> | |
| 436 <observatory-application></observatory-application> | |
| 437 | |
| 438 </body></html> | |
| OLD | NEW |