| Index: runtime/bin/vmstats/isolate_list.dart
|
| ===================================================================
|
| --- runtime/bin/vmstats/isolate_list.dart (revision 21569)
|
| +++ runtime/bin/vmstats/isolate_list.dart (working copy)
|
| @@ -17,6 +17,7 @@
|
| static const String NEW_SPACE = 'new_space';
|
| static const String OLD_SPACE = 'old_space';
|
| static const String STACK_FRAME = 'stack_frame';
|
| + static const String EMPTY_STACK_FRAME = 'empty_stack_frame';
|
| static const String STACK_LIMIT = 'stack_limit';
|
| static const String STACK_TRACE = 'stack_trace';
|
| static const String STACK_TRACE_TITLE = 'stack_trace_title';
|
| @@ -58,7 +59,7 @@
|
| stacktrace.classes.addAll([STACK_TRACE, HIDDEN]);
|
| stacktraceCell.children.add(stacktrace);
|
|
|
| - isolateRow.onClick.listen((e) => toggle(isolateRow));
|
| + isolateRow.onClick.listen((e) => toggleRow(isolateRow));
|
| updateIsolateDetails(isolate, isolateRow);
|
| }
|
| }
|
| @@ -73,20 +74,28 @@
|
| title.text = "Stack Trace";
|
| element.children.add(title);
|
|
|
| - var stackIterator = response['stacktrace'].iterator;
|
| - var i = 0;
|
| - while (stackIterator.moveNext()) {
|
| - i++;
|
| - var frame = stackIterator.current;
|
| - var frameElement = new DivElement();
|
| - frameElement.$dom_className = STACK_FRAME;
|
| - var text = '$i: ${frame["url"]}:${frame["line"]}: ${frame["function"]}';
|
| - var code = frame["code"];
|
| - if (code['optimized']) {
|
| - text = '$text (optimized)';
|
| + var stackTrace = response['stacktrace'];
|
| + if (stackTrace.length > 0) {
|
| + var stackIterator = response['stacktrace'].iterator;
|
| + var i = 0;
|
| + while (stackIterator.moveNext()) {
|
| + i++;
|
| + var frame = stackIterator.current;
|
| + var frameElement = new DivElement();
|
| + var text = '$i: ${frame["url"]}:${frame["line"]}: ${frame["function"]}';
|
| + var code = frame["code"];
|
| + if (code['optimized']) {
|
| + text = '$text (optimized)';
|
| + }
|
| + frameElement.text = text;
|
| + frameElement.$dom_className = STACK_FRAME;
|
| + element.children.add(frameElement);
|
| }
|
| - frameElement.text = text;
|
| - element.children.add(frameElement);
|
| + } else {
|
| + DivElement noStack = new DivElement();
|
| + noStack.$dom_className = EMPTY_STACK_FRAME;
|
| + noStack.text = "<no stack>";
|
| + element.children.add(noStack);
|
| }
|
| }
|
|
|
| @@ -114,12 +123,13 @@
|
| (String response) => setStacktrace(stackTrace, response));
|
| }
|
|
|
| - void toggle(TableRowElement row) {
|
| - var details = row.query('.$DETAILS');
|
| - details.classes.toggle(VISIBLE);
|
| - details.classes.toggle(HIDDEN);
|
| - var stacktrace = row.query('.$ISOLATE_STACKTRACE_COLUMN');
|
| - stacktrace.classes.toggle(VISIBLE);
|
| - stacktrace.classes.toggle(HIDDEN);
|
| + void toggleRow(TableRowElement row) {
|
| + toggleElement(row.query('.$DETAILS'));
|
| + toggleElement(row.query('.$ISOLATE_STACKTRACE_COLUMN'));
|
| }
|
| +
|
| + void toggleElement(Element e) {
|
| + e.classes.toggle(VISIBLE);
|
| + e.classes.toggle(HIDDEN);
|
| + }
|
| }
|
|
|