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

Side by Side Diff: runtime/observatory/lib/src/elements/code_view.dart

Issue 1439893002: - Annotate instructions that load objects from the ObjectPool or Thread. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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
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 library code_view_element; 5 library code_view_element;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'observatory_element.dart'; 9 import 'observatory_element.dart';
10 import 'service_ref.dart';
10 import 'package:observatory/app.dart'; 11 import 'package:observatory/app.dart';
11 import 'package:observatory/service.dart'; 12 import 'package:observatory/service.dart';
12 import 'package:observatory/cpu_profile.dart'; 13 import 'package:observatory/cpu_profile.dart';
13 import 'package:polymer/polymer.dart'; 14 import 'package:polymer/polymer.dart';
14 15
15 class DisassemblyTable extends SortedTable { 16 class DisassemblyTable extends SortedTable {
16 DisassemblyTable(columns) : super(columns); 17 DisassemblyTable(columns) : super(columns);
17 } 18 }
18 19
19 class InlineTable extends SortedTable { 20 class InlineTable extends SortedTable {
20 InlineTable(columns) : super(columns); 21 InlineTable(columns) : super(columns);
21 } 22 }
22 23
23 @CustomTag('code-view') 24 @CustomTag('code-view')
24 class CodeViewElement extends ObservatoryElement { 25 class CodeViewElement extends ObservatoryElement {
25 @observable Code code; 26 @observable Code code;
26 ProfileCode get profile => code == null ? null : code.profile; 27 ProfileCode get profile => code == null ? null : code.profile;
27 DisassemblyTable disassemblyTable; 28 DisassemblyTable disassemblyTable;
28 InlineTable inlineTable; 29 InlineTable inlineTable;
29 30
30 CodeViewElement.created() : super.created() { 31 CodeViewElement.created() : super.created() {
31 // Create table models. 32 // Create table models.
32 var columns = [ 33 var columns = [
33 new SortedTableColumn('Address'), 34 new SortedTableColumn('Address'),
34 new SortedTableColumn('Inclusive'), 35 new SortedTableColumn('Inclusive'),
35 new SortedTableColumn('Exclusive'), 36 new SortedTableColumn('Exclusive'),
36 new SortedTableColumn('Disassembly'), 37 new SortedTableColumn('Disassembly'),
38 new SortedTableColumn('Objects'),
37 ]; 39 ];
38 disassemblyTable = new DisassemblyTable(columns); 40 disassemblyTable = new DisassemblyTable(columns);
39 columns = [ 41 columns = [
40 new SortedTableColumn('Address'), 42 new SortedTableColumn('Address'),
41 new SortedTableColumn('Inclusive'), 43 new SortedTableColumn('Inclusive'),
42 new SortedTableColumn('Exclusive'), 44 new SortedTableColumn('Exclusive'),
43 new SortedTableColumn('Functions'), 45 new SortedTableColumn('Functions'),
44 ]; 46 ];
45 inlineTable = new InlineTable(columns); 47 inlineTable = new InlineTable(columns);
46 } 48 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 166
165 void _updateDiasssemblyTable() { 167 void _updateDiasssemblyTable() {
166 disassemblyTable.clearRows(); 168 disassemblyTable.clearRows();
167 if (code == null) { 169 if (code == null) {
168 return; 170 return;
169 } 171 }
170 for (CodeInstruction instruction in code.instructions) { 172 for (CodeInstruction instruction in code.instructions) {
171 var row = [formattedAddress(instruction), 173 var row = [formattedAddress(instruction),
172 formattedInclusive(instruction), 174 formattedInclusive(instruction),
173 formattedExclusive(instruction), 175 formattedExclusive(instruction),
174 instruction.human]; 176 instruction.human,
177 instruction.object];
175 disassemblyTable.addRow(new SortedTableRow(row)); 178 disassemblyTable.addRow(new SortedTableRow(row));
176 } 179 }
177 } 180 }
178 181
179 void _addDisassemblyDOMRow() { 182 void _addDisassemblyDOMRow() {
180 var tableBody = $['disassemblyTableBody']; 183 var tableBody = $['disassemblyTableBody'];
181 assert(tableBody != null); 184 assert(tableBody != null);
182 var tr = new TableRowElement(); 185 var tr = new TableRowElement();
183 186
184 var cell; 187 var cell;
185 188
186 // Add new space. 189 // Add new space.
187 cell = tr.insertCell(-1); 190 cell = tr.insertCell(-1);
188 cell.classes.add('monospace'); 191 cell.classes.add('monospace');
189 cell = tr.insertCell(-1); 192 cell = tr.insertCell(-1);
190 cell.classes.add('monospace'); 193 cell.classes.add('monospace');
191 cell = tr.insertCell(-1); 194 cell = tr.insertCell(-1);
192 cell.classes.add('monospace'); 195 cell.classes.add('monospace');
193 cell = tr.insertCell(-1); 196 cell = tr.insertCell(-1);
194 cell.classes.add('monospace'); 197 cell.classes.add('monospace');
198 cell = tr.insertCell(-1);
199 cell.classes.add('monospace');
195 200
196 tableBody.children.add(tr); 201 tableBody.children.add(tr);
197 } 202 }
198 203
199 void _fillDisassemblyDOMRow(TableRowElement tr, int rowIndex) { 204 void _fillDisassemblyDOMRow(TableRowElement tr, int rowIndex) {
200 final row = disassemblyTable.rows[rowIndex]; 205 final row = disassemblyTable.rows[rowIndex];
201 final n = row.values.length; 206 final n = row.values.length;
202 for (var i = 0; i < n; i++) { 207 for (var i = 0; i < n; i++) {
203 final cell = tr.children[i]; 208 final cell = tr.children[i];
204 cell.title = row.values[i].toString(); 209 final content = row.values[i];
205 cell.text = row.values[i].toString(); 210 if (content is ServiceObject) {
211 ServiceRefElement element = new Element.tag('any-service-ref');
212 element.ref = content;
213 cell.append(element);
214 } else if (content != null) {
215 cell.text = content.toString();
216 }
206 } 217 }
207 } 218 }
208 219
209 void _updateDisassemblyDOMTable() { 220 void _updateDisassemblyDOMTable() {
210 var tableBody = $['disassemblyTableBody']; 221 var tableBody = $['disassemblyTableBody'];
211 assert(tableBody != null); 222 assert(tableBody != null);
212 // Resize DOM table. 223 // Resize DOM table.
213 if (tableBody.children.length > disassemblyTable.sortedRows.length) { 224 if (tableBody.children.length > disassemblyTable.sortedRows.length) {
214 // Shrink the table. 225 // Shrink the table.
215 var deadRows = 226 var deadRows =
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 var addressRangeString = formattedAddressRange(interval); 298 var addressRangeString = formattedAddressRange(interval);
288 var addressRangeElement = new SpanElement(); 299 var addressRangeElement = new SpanElement();
289 addressRangeElement.classes.add('monospace'); 300 addressRangeElement.classes.add('monospace');
290 addressRangeElement.text = addressRangeString; 301 addressRangeElement.text = addressRangeString;
291 addressRangeCell.children.clear(); 302 addressRangeCell.children.clear();
292 addressRangeCell.children.add(addressRangeElement); 303 addressRangeCell.children.add(addressRangeElement);
293 } 304 }
294 305
295 for (var i = addressRangeColumn + 1; i < columns - 1; i++) { 306 for (var i = addressRangeColumn + 1; i < columns - 1; i++) {
296 var cell = tr.children[i]; 307 var cell = tr.children[i];
297 cell.title = row.values[i].toString();
298 cell.text = row.values[i].toString(); 308 cell.text = row.values[i].toString();
299 } 309 }
300 var functions = row.values[functionsColumn]; 310 var functions = row.values[functionsColumn];
301 var functionsCell = tr.children[functionsColumn]; 311 var functionsCell = tr.children[functionsColumn];
302 functionsCell.children.clear(); 312 functionsCell.children.clear();
303 for (var func in functions) { 313 for (var func in functions) {
304 var functionRef = new Element.tag('function-ref'); 314 var functionRef = new Element.tag('function-ref');
305 functionRef.ref = func; 315 functionRef.ref = func;
306 functionsCell.children.add(functionRef); 316 functionsCell.children.add(functionRef);
307 var gap = new SpanElement(); 317 var gap = new SpanElement();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 } 374 }
365 375
366 void mouseOut(Event e, var detail, Node target) { 376 void mouseOut(Event e, var detail, Node target) {
367 var jt = _findJumpTarget(target); 377 var jt = _findJumpTarget(target);
368 if (jt == null) { 378 if (jt == null) {
369 return; 379 return;
370 } 380 }
371 jt.classes.remove('highlight'); 381 jt.classes.remove('highlight');
372 } 382 }
373 } 383 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/cpu_profile/cpu_profile.dart ('k') | runtime/observatory/lib/src/elements/code_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698