Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(667)

Unified Diff: runtime/observatory/lib/src/elements/retaining_path.dart

Issue 2862383002: Clarify presentation of the target in retaining paths. (Closed)
Patch Set: review Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/lib/src/elements/retaining_path.dart
diff --git a/runtime/observatory/lib/src/elements/retaining_path.dart b/runtime/observatory/lib/src/elements/retaining_path.dart
index 547b573c90224e012472cda8a9f3fda3ae8ed356..dc6c88c6b81cd9070518cf375e78fbe7df51b19b 100644
--- a/runtime/observatory/lib/src/elements/retaining_path.dart
+++ b/runtime/observatory/lib/src/elements/retaining_path.dart
@@ -85,27 +85,37 @@ class RetainingPathElement extends HtmlElement implements Renderable {
if (_path == null) {
return [new SpanElement()..text = 'Loading'];
}
- return _path.elements.map(_createItem).toList();
+
+ var elements = new List();
+ bool first = true;
+ for (var item in _path.elements) {
+ elements.add(_createItem(item, first));
+ first = false;
+ }
+ elements.add(_createGCRootItem());
+ return elements;
}
- Element _createItem(M.RetainingPathItem item) {
+ Element _createItem(M.RetainingPathItem item, bool first) {
final content = <Element>[];
- if (item.parentField != null) {
+ if (first) {
+ // No prefix.
+ } else if (item.parentField != null) {
content.add(new SpanElement()
..children = [
- new SpanElement()..text = 'from ',
+ new SpanElement()..text = 'retained by ',
anyRef(_isolate, item.parentField, _instances, queue: _r.queue),
new SpanElement()..text = ' of ',
]);
} else if (item.parentListIndex != null) {
- content.add(
- new SpanElement()..text = 'from [ ${item.parentListIndex} ] of ');
+ content.add(new SpanElement()
+ ..text = 'retained by [ ${item.parentListIndex} ] of ');
} else if (item.parentWordOffset != null) {
content.add(new SpanElement()
- ..text = 'from word [ ${item.parentWordOffset} ] of ');
+ ..text = 'retained by offset ${item.parentWordOffset} of ');
} else {
- content.add(new SpanElement()..text = 'from ');
+ content.add(new SpanElement()..text = 'retained by ');
}
content.add(anyRef(_isolate, item.source, _instances, queue: _r.queue));
@@ -114,4 +124,10 @@ class RetainingPathElement extends HtmlElement implements Renderable {
..classes = ['indent']
..children = content;
}
+
+ Element _createGCRootItem() {
+ return new DivElement()
+ ..classes = ['indent']
+ ..text = 'retained by a GC root';
+ }
}
« no previous file with comments | « runtime/observatory/lib/src/elements/objectpool_view.dart ('k') | runtime/observatory/lib/src/elements/timeline_page.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698