| Index: runtime/observatory/lib/src/elements/isolate_view.dart
|
| diff --git a/runtime/observatory/lib/src/elements/isolate_view.dart b/runtime/observatory/lib/src/elements/isolate_view.dart
|
| index 73fde1acc5b4a5e331d9febdfd4f0c0c314f3a5d..ef157c09efa87c68edca2330885f7d294d5006ef 100644
|
| --- a/runtime/observatory/lib/src/elements/isolate_view.dart
|
| +++ b/runtime/observatory/lib/src/elements/isolate_view.dart
|
| @@ -27,6 +27,7 @@ import 'package:observatory/src/elements/nav/vm_menu.dart';
|
| import 'package:observatory/src/elements/script_inset.dart';
|
| import 'package:observatory/src/elements/source_inset.dart';
|
| import 'package:observatory/src/elements/view_footer.dart';
|
| +import 'package:observatory/utils.dart';
|
|
|
| class IsolateViewElement extends HtmlElement implements Renderable {
|
| static const tag =
|
| @@ -133,6 +134,7 @@ class IsolateViewElement extends HtmlElement implements Renderable {
|
| void render() {
|
| final uptime = new DateTime.now().difference(_isolate.startTime);
|
| final libraries = _isolate.libraries.toList();
|
| + final List<Thread> threads = _isolate.threads;
|
| children = [
|
| navBar([
|
| new NavTopMenuElement(queue: _r.queue),
|
| @@ -294,6 +296,20 @@ class IsolateViewElement extends HtmlElement implements Renderable {
|
| ])
|
| .toList()
|
| ]
|
| + ],
|
| + new DivElement()
|
| + ..classes = ['memberItem']
|
| + ..children = [
|
| + new DivElement()
|
| + ..classes = ['memberName']
|
| + ..text = 'threads (${threads.length})',
|
| + new DivElement()
|
| + ..classes = ['memberValue']
|
| + ..children = [
|
| + new CurlyBlockElement(queue: _r.queue)
|
| + ..content = threads
|
| + .map(_populateThreadInfo)
|
| + ]
|
| ]
|
| ],
|
| new HRElement(),
|
| @@ -314,6 +330,67 @@ class IsolateViewElement extends HtmlElement implements Renderable {
|
| ];
|
| }
|
|
|
| + DivElement _populateThreadInfo(Thread t) {
|
| + int index = 0;
|
| + return new DivElement()
|
| + ..classes = ['indent']
|
| + ..children = [
|
| + new SpanElement()
|
| + ..text = '${t.id} ',
|
| + new CurlyBlockElement(queue: _r.queue)
|
| + ..content = [
|
| + new DivElement()
|
| + ..classes = ['indent']
|
| + ..text = 'kind ${t.kindString}',
|
| + new DivElement()
|
| + ..children = t.zones
|
| + .map((z) => new DivElement()
|
| + ..classes = ['indent']
|
| + ..children = [
|
| + new DivElement()
|
| + ..children = [
|
| + new SpanElement()
|
| + ..children = [
|
| + new SpanElement()
|
| + ..text = 'zone ${index++} ',
|
| + new CurlyBlockElement(queue: _r.queue)
|
| + ..content = [
|
| + new DivElement()
|
| + ..classes = ['memberList']
|
| + ..children = [
|
| + new DivElement()
|
| + ..classes = ['memberItem']
|
| + ..children = [
|
| + new SpanElement()
|
| + ..classes = ['memberName']
|
| + ..text = 'used ',
|
| + new SpanElement()
|
| + ..classes = ['memberValue']
|
| + ..title = '${z.used}B'
|
| + ..text =
|
| + Utils.formatSize(z.used)
|
| + ],
|
| + new DivElement()
|
| + ..classes = ['memberItem']
|
| + ..children = [
|
| + new SpanElement()
|
| + ..classes = ['memberName']
|
| + ..text = 'capacity',
|
| + new SpanElement()
|
| + ..classes = ['memberValue']
|
| + ..title = '${z.capacity}B'
|
| + ..text =
|
| + Utils.formatSize(z.capacity)
|
| + ]
|
| + ]
|
| + ]
|
| + ]
|
| + ]
|
| + ]
|
| + )]
|
| + ];
|
| + }
|
| +
|
| Future _loadExtraData() async {
|
| _function = null;
|
| _rootScript = null;
|
|
|