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

Side by Side Diff: runtime/bin/vmstats/isolate_list.dart

Issue 14308006: Resubmission of 21573, with corrected strndup call. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/vmstats/bargraph.dart ('k') | runtime/bin/vmstats/vmstats.css » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.vmstats; 5 part of dart.vmstats;
6 6
7 class IsolateList { 7 class IsolateList {
8 TableElement _isolateTable; 8 TableElement _isolateTable;
9 9
10 static const String DETAILS = 'isolate_details'; 10 static const String DETAILS = 'isolate_details';
11 static const String VISIBLE = 'visible'; 11 static const String VISIBLE = 'visible';
12 static const String HIDDEN = 'hidden'; 12 static const String HIDDEN = 'hidden';
13 static const String ISOLATE_LIST_ITEM = 'isolate_list_item'; 13 static const String ISOLATE_LIST_ITEM = 'isolate_list_item';
14 static const String ISOLATE_DETAILS_COLUMN = 'isolate_details_column'; 14 static const String ISOLATE_DETAILS_COLUMN = 'isolate_details_column';
15 static const String ISOLATE_ROW = 'isolate_row'; 15 static const String ISOLATE_ROW = 'isolate_row';
16 static const String ISOLATE_STACKTRACE_COLUMN = 'isolate_stacktrace_column'; 16 static const String ISOLATE_STACKTRACE_COLUMN = 'isolate_stacktrace_column';
17 static const String NEW_SPACE = 'new_space'; 17 static const String NEW_SPACE = 'new_space';
18 static const String OLD_SPACE = 'old_space'; 18 static const String OLD_SPACE = 'old_space';
19 static const String STACK_FRAME = 'stack_frame'; 19 static const String STACK_FRAME = 'stack_frame';
20 static const String EMPTY_STACK_FRAME = 'empty_stack_frame';
20 static const String STACK_LIMIT = 'stack_limit'; 21 static const String STACK_LIMIT = 'stack_limit';
21 static const String STACK_TRACE = 'stack_trace'; 22 static const String STACK_TRACE = 'stack_trace';
22 static const String STACK_TRACE_TITLE = 'stack_trace_title'; 23 static const String STACK_TRACE_TITLE = 'stack_trace_title';
23 24
24 IsolateList(this._isolateTable) {} 25 IsolateList(this._isolateTable) {}
25 26
26 void updateList(IsolateListModel model) { 27 void updateList(IsolateListModel model) {
27 var iterator = model.iterator; 28 var iterator = model.iterator;
28 while (iterator.moveNext()) { 29 while (iterator.moveNext()) {
29 var isolate = iterator.current; 30 var isolate = iterator.current;
(...skipping 21 matching lines...) Expand all
51 detailsCell.children.add(details); 52 detailsCell.children.add(details);
52 53
53 // Add stacktrace column. 54 // Add stacktrace column.
54 var stacktraceCell = new TableCellElement(); 55 var stacktraceCell = new TableCellElement();
55 stacktraceCell.classes.addAll([ISOLATE_STACKTRACE_COLUMN, HIDDEN]); 56 stacktraceCell.classes.addAll([ISOLATE_STACKTRACE_COLUMN, HIDDEN]);
56 isolateRow.children.add(stacktraceCell); 57 isolateRow.children.add(stacktraceCell);
57 var stacktrace = new DivElement(); 58 var stacktrace = new DivElement();
58 stacktrace.classes.addAll([STACK_TRACE, HIDDEN]); 59 stacktrace.classes.addAll([STACK_TRACE, HIDDEN]);
59 stacktraceCell.children.add(stacktrace); 60 stacktraceCell.children.add(stacktrace);
60 61
61 isolateRow.onClick.listen((e) => toggle(isolateRow)); 62 isolateRow.onClick.listen((e) => toggleRow(isolateRow));
62 updateIsolateDetails(isolate, isolateRow); 63 updateIsolateDetails(isolate, isolateRow);
63 } 64 }
64 } 65 }
65 } 66 }
66 67
67 void setStacktrace(DivElement element, String json) { 68 void setStacktrace(DivElement element, String json) {
68 element.children.clear(); 69 element.children.clear();
69 var response = JSON.parse(json); 70 var response = JSON.parse(json);
70 element.id = response['handle']; 71 element.id = response['handle'];
71 var title = new DivElement(); 72 var title = new DivElement();
72 title.$dom_className = STACK_TRACE_TITLE; 73 title.$dom_className = STACK_TRACE_TITLE;
73 title.text = "Stack Trace"; 74 title.text = "Stack Trace";
74 element.children.add(title); 75 element.children.add(title);
75 76
76 var stackIterator = response['stacktrace'].iterator; 77 var stackTrace = response['stacktrace'];
77 var i = 0; 78 if (stackTrace.length > 0) {
78 while (stackIterator.moveNext()) { 79 var stackIterator = response['stacktrace'].iterator;
79 i++; 80 var i = 0;
80 var frame = stackIterator.current; 81 while (stackIterator.moveNext()) {
81 var frameElement = new DivElement(); 82 i++;
82 frameElement.$dom_className = STACK_FRAME; 83 var frame = stackIterator.current;
83 var text = '$i: ${frame["url"]}:${frame["line"]}: ${frame["function"]}'; 84 var frameElement = new DivElement();
84 var code = frame["code"]; 85 var text = '$i: ${frame["url"]}:${frame["line"]}: ${frame["function"]}';
85 if (code['optimized']) { 86 var code = frame["code"];
86 text = '$text (optimized)'; 87 if (code['optimized']) {
88 text = '$text (optimized)';
89 }
90 frameElement.text = text;
91 frameElement.$dom_className = STACK_FRAME;
92 element.children.add(frameElement);
87 } 93 }
88 frameElement.text = text; 94 } else {
89 element.children.add(frameElement); 95 DivElement noStack = new DivElement();
96 noStack.$dom_className = EMPTY_STACK_FRAME;
97 noStack.text = "<no stack>";
98 element.children.add(noStack);
90 } 99 }
91 } 100 }
92 101
93 Element findOrAddChild(DivElement parent, String className) { 102 Element findOrAddChild(DivElement parent, String className) {
94 var child = parent.query('.$className'); 103 var child = parent.query('.$className');
95 if (child == null) { 104 if (child == null) {
96 child = new DivElement(); 105 child = new DivElement();
97 child.$dom_className = className; 106 child.$dom_className = className;
98 parent.children.add(child); 107 parent.children.add(child);
99 } 108 }
100 return child; 109 return child;
101 } 110 }
102 111
103 void updateIsolateDetails(Isolate isolate, TableRowElement row) { 112 void updateIsolateDetails(Isolate isolate, TableRowElement row) {
104 var details = row.query('.$DETAILS'); 113 var details = row.query('.$DETAILS');
105 var newSpace = findOrAddChild(details, NEW_SPACE); 114 var newSpace = findOrAddChild(details, NEW_SPACE);
106 newSpace.text = 'New space: ${isolate.newSpace.used}K'; 115 newSpace.text = 'New space: ${isolate.newSpace.used}K';
107 var oldSpace = findOrAddChild(details, OLD_SPACE); 116 var oldSpace = findOrAddChild(details, OLD_SPACE);
108 oldSpace.text = 'Old space: ${isolate.oldSpace.used}K'; 117 oldSpace.text = 'Old space: ${isolate.oldSpace.used}K';
109 var stackLimit = findOrAddChild(details, STACK_LIMIT); 118 var stackLimit = findOrAddChild(details, STACK_LIMIT);
110 stackLimit.text = 119 stackLimit.text =
111 'Stack limit: ${(isolate.stackLimit.abs() / 1000000).round()}M'; 120 'Stack limit: ${(isolate.stackLimit.abs() / 1000000).round()}M';
112 var stackTrace = findOrAddChild(row, ISOLATE_STACKTRACE_COLUMN); 121 var stackTrace = findOrAddChild(row, ISOLATE_STACKTRACE_COLUMN);
113 HttpRequest.getString('/isolate/${isolate.handle}/stacktrace').then( 122 HttpRequest.getString('/isolate/${isolate.handle}/stacktrace').then(
114 (String response) => setStacktrace(stackTrace, response)); 123 (String response) => setStacktrace(stackTrace, response));
115 } 124 }
116 125
117 void toggle(TableRowElement row) { 126 void toggleRow(TableRowElement row) {
118 var details = row.query('.$DETAILS'); 127 toggleElement(row.query('.$DETAILS'));
119 details.classes.toggle(VISIBLE); 128 toggleElement(row.query('.$ISOLATE_STACKTRACE_COLUMN'));
120 details.classes.toggle(HIDDEN); 129 }
121 var stacktrace = row.query('.$ISOLATE_STACKTRACE_COLUMN'); 130
122 stacktrace.classes.toggle(VISIBLE); 131 void toggleElement(Element e) {
123 stacktrace.classes.toggle(HIDDEN); 132 e.classes.toggle(VISIBLE);
133 e.classes.toggle(HIDDEN);
124 } 134 }
125 } 135 }
OLDNEW
« no previous file with comments | « runtime/bin/vmstats/bargraph.dart ('k') | runtime/bin/vmstats/vmstats.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698