Skip to content

Commit 7469b87

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[observatory] Display isolate groups.
[vm, service] Hide internal isolate groups unless --show-invisible-isolates. Change-Id: I9be4dc128f66099d11e37f04fb59253d3a459c09 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136340 Reviewed-by: Alexander Aprelev <aam@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Ryan Macnak <rmacnak@google.com>
1 parent 7eedaf1 commit 7469b87

File tree

8 files changed

+369
-224
lines changed

8 files changed

+369
-224
lines changed

runtime/observatory/lib/src/app/page.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,14 @@ class VMPage extends MatchingPage {
172172
app.vm.reload().then((serviceObject) {
173173
VM vm = serviceObject;
174174
container.children = <Element>[
175-
new VMViewElement(vm, _vmrepository, app.events, app.notifications,
176-
new IsolateRepository(app.vm), _scriptRepository,
175+
new VMViewElement(
176+
vm,
177+
_vmrepository,
178+
app.events,
179+
app.notifications,
180+
new IsolateRepository(app.vm),
181+
new IsolateGroupRepository(app.vm),
182+
_scriptRepository,
177183
queue: app.queue)
178184
.element
179185
];

runtime/observatory/lib/src/elements/css/shared.css

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,20 @@ hr {
145145
flex-wrap: wrap;
146146
}
147147

148+
.flex-row-wrap-right {
149+
display: flex;
150+
flex-direction: row;
151+
flex-wrap: wrap;
152+
justify-content: flex-end;
153+
}
154+
155+
.flex-row-spaced {
156+
display: flex;
157+
flex-direction: row;
158+
justify-content: space-between;
159+
flex-wrap: wrap;
160+
}
161+
148162
.inline-flex-row {
149163
display: inline-flex;
150164
flex-direction: row;
@@ -283,6 +297,12 @@ hr {
283297
flex-basis: 90%;
284298
}
285299

300+
.flex-item-even {
301+
flex-grow: 1;
302+
flex-shrink: 0;
303+
padding: 5px;
304+
}
305+
286306
.indent {
287307
margin-left: 1.5em;
288308
font: 400 14px 'Montserrat', sans-serif;
@@ -1506,11 +1526,12 @@ eval-box .historyDelete button:hover {
15061526
.isolate-ref-container {
15071527
overflow: hidden;
15081528
text-overflow: ellipsis;
1529+
padding: 5px;
1530+
font-weight: bolder;
15091531
}
15101532

15111533
.isolate-state-container {
15121534
display: inline-block;
1513-
min-width: 18ex;
15141535
}
15151536

15161537
.isolate-shared-summary > .summary {

runtime/observatory/lib/src/elements/isolate/shared_summary.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ class IsolateSharedSummaryElement extends CustomElement implements Renderable {
9191
new DivElement()
9292
..children = <Element>[
9393
new SpanElement()..text = 'see ',
94-
new AnchorElement(href: Uris.debugger(_isolate))..text = 'debug'
94+
new AnchorElement(href: Uris.debugger(_isolate))
95+
..text = 'debugger'
9596
],
9697
new DivElement()
9798
..children = <Element>[

runtime/observatory/lib/src/elements/isolate/summary.dart

Lines changed: 100 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'dart:html';
66
import 'dart:async';
77
import 'package:observatory/models.dart' as M;
8+
import 'package:observatory/utils.dart';
89
import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
910
import 'package:observatory/src/elements/helpers/tag.dart';
1011
import 'package:observatory/src/elements/helpers/uris.dart';
@@ -75,35 +76,109 @@ class IsolateSummaryElement extends CustomElement implements Renderable {
7576
];
7677
} else {
7778
children = <Element>[
79+
linkAndStatusRow(),
80+
new BRElement(),
81+
memoryRow(),
82+
new BRElement(),
83+
toolsRow(),
84+
];
85+
}
86+
}
87+
88+
Element linkAndStatusRow() {
89+
return new DivElement()
90+
..classes = ['flex-row-wrap']
91+
..children = <Element>[
7892
new DivElement()
79-
..classes = ['flex-row']
93+
..classes = ['isolate-ref-container']
8094
..children = <Element>[
81-
new DivElement()
82-
..classes = ['isolate-ref-container']
83-
..children = <Element>[
84-
new IsolateRefElement(_isolate, _events, queue: _r.queue)
85-
.element
86-
],
87-
new DivElement()..style.flex = '1',
88-
new DivElement()
89-
..classes = ['flex-row', 'isolate-state-container']
90-
..children = <Element>[
91-
new IsolateRunStateElement(_isolate, _events, queue: _r.queue)
92-
.element,
93-
new IsolateLocationElement(_isolate, _events, _scripts,
94-
queue: _r.queue)
95-
.element,
96-
new SpanElement()..text = ' [',
97-
new AnchorElement(href: Uris.debugger(_isolate))
98-
..text = 'debug',
99-
new SpanElement()..text = ']'
100-
]
95+
new IsolateRefElement(_isolate, _events, queue: _r.queue).element
10196
],
102-
new BRElement(),
103-
new IsolateSharedSummaryElement(_isolate, _events, queue: _r.queue)
104-
.element
97+
new DivElement()..style.flex = '1',
98+
new DivElement()
99+
..classes = ['flex-row', 'isolate-state-container']
100+
..children = <Element>[
101+
new IsolateRunStateElement(_isolate, _events, queue: _r.queue)
102+
.element,
103+
new IsolateLocationElement(_isolate, _events, _scripts,
104+
queue: _r.queue)
105+
.element,
106+
new SpanElement()..text = ' [',
107+
new AnchorElement(href: Uris.debugger(_isolate))..text = 'debug',
108+
new SpanElement()..text = ']'
109+
]
110+
];
111+
}
112+
113+
Element memoryRow() {
114+
final isolate = _isolate as M.Isolate;
115+
final newHeapUsed = Utils.formatSize(isolate.newSpace.used);
116+
final newHeapCapacity = Utils.formatSize(isolate.newSpace.capacity);
117+
final oldHeapUsed = Utils.formatSize(isolate.oldSpace.used);
118+
final oldHeapCapacity = Utils.formatSize(isolate.oldSpace.capacity);
119+
final heapUsed =
120+
Utils.formatSize(isolate.newSpace.used + isolate.oldSpace.used);
121+
final heapCapacity =
122+
Utils.formatSize(isolate.newSpace.capacity + isolate.oldSpace.capacity);
123+
return new DivElement()
124+
..classes = ['flex-row-wrap-right']
125+
..children = <Element>[
126+
new DivElement()
127+
..style.padding = '5px'
128+
..text = 'new-space $newHeapUsed of $newHeapCapacity',
129+
new DivElement()
130+
..style.padding = '5px'
131+
..text = '/',
132+
new DivElement()
133+
..style.padding = '5px'
134+
..text = 'old-space $oldHeapUsed of $oldHeapCapacity',
135+
new DivElement()
136+
..style.padding = '5px'
137+
..text = '/',
138+
new DivElement()
139+
..style.padding = '5px'
140+
..text = 'heap $heapUsed of $heapCapacity',
141+
];
142+
}
143+
144+
Element toolsRow() {
145+
return new DivElement()
146+
..classes = ['flex-row-spaced']
147+
..children = <Element>[
148+
new AnchorElement(href: Uris.debugger(_isolate))
149+
..classes = ['flex-item-even']
150+
..text = 'debugger',
151+
new AnchorElement(href: Uris.classTree(_isolate))
152+
..classes = ['flex-item-even']
153+
..text = 'class hierarchy',
154+
new AnchorElement(href: Uris.cpuProfiler(_isolate))
155+
..classes = ['flex-item-even']
156+
..text = 'cpu profile',
157+
new AnchorElement(href: Uris.cpuProfilerTable(_isolate))
158+
..classes = ['flex-item-even']
159+
..text = 'cpu profile (table)',
160+
new AnchorElement(href: Uris.allocationProfiler(_isolate))
161+
..classes = ['flex-item-even']
162+
..text = 'allocation profile',
163+
new AnchorElement(href: Uris.heapSnapshot(_isolate))
164+
..classes = ['flex-item-even']
165+
..text = 'heap snapshot',
166+
new AnchorElement(href: Uris.heapMap(_isolate))
167+
..classes = ['flex-item-even']
168+
..text = 'heap map',
169+
new AnchorElement(href: Uris.metrics(_isolate))
170+
..classes = ['flex-item-even']
171+
..text = 'metrics',
172+
new AnchorElement(href: Uris.persistentHandles(_isolate))
173+
..classes = ['flex-item-even']
174+
..text = 'persistent handles',
175+
new AnchorElement(href: Uris.ports(_isolate))
176+
..classes = ['flex-item-even']
177+
..text = 'ports',
178+
new AnchorElement(href: Uris.logging(_isolate))
179+
..classes = ['flex-item-even']
180+
..text = 'logging',
105181
];
106-
}
107182
}
108183

109184
Future _load() async {

0 commit comments

Comments
 (0)