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

Unified Diff: tools/turbolizer/disassembly-view.js

Issue 2174803002: [turbolizer] Add support for showing perf profiling information. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: [turbolizer] Add support for showing perf profiling information. Created 4 years, 5 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
« no previous file with comments | « tools/turbolizer/constants.js ('k') | tools/turbolizer/index.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/turbolizer/disassembly-view.js
diff --git a/tools/turbolizer/disassembly-view.js b/tools/turbolizer/disassembly-view.js
index e74468416e6bf35641f24a4a8b0ed66d498c50e6..8c1352b3ed02d2ba5956784ef732dafb4f16f2bd 100644
--- a/tools/turbolizer/disassembly-view.js
+++ b/tools/turbolizer/disassembly-view.js
@@ -9,6 +9,9 @@ class DisassemblyView extends TextView {
super(id, broker, null, false);
this.pos_start = -1;
this.pos_lines = null;
+ this.addr_event_counts = null;
+ this.total_event_counts = null;
+
let view = this;
let ADDRESS_STYLE = {
css: 'tag',
@@ -143,6 +146,11 @@ class DisassemblyView extends TextView {
return result;
}
+ initializeContent(data, rememberedSelection) {
+ this.data = data;
+ super.initializeContent(data, rememberedSelection);
+ }
+
initializeCode(sourceText, sourcePosition) {
let view = this;
view.pos_lines = new Array();
@@ -153,7 +161,7 @@ class DisassemblyView extends TextView {
let base = sourcePosition;
let current = 0;
let source_lines = sourceText.split("\n");
- for (i=1; i < source_lines.length; i++) {
+ for (let i = 1; i < source_lines.length; i++) {
// Add 1 for newline character that is split off.
current += source_lines[i-1].length + 1;
view.pos_lines[i] = base + current;
@@ -161,6 +169,29 @@ class DisassemblyView extends TextView {
}
}
+ initializePerfProfile(eventCounts) {
+ let view = this;
+ if (eventCounts !== undefined) {
+ view.addr_event_counts = eventCounts;
+
+ view.total_event_counts = {};
+ for (var ev_name in view.addr_event_counts) {
+ let keys = Object.keys(view.addr_event_counts[ev_name]);
+ let values = keys.map(key => view.addr_event_counts[ev_name][key]);
+ view.total_event_counts[ev_name] = values.reduce((a, b) => a + b);
+ }
+ }
+ else {
+ view.addr_event_counts = null;
+ view.total_event_counts = null;
+ }
+ }
+
+ // Shorten decimals and remove trailing zeroes for readability.
+ humanize(num) {
+ return num.toFixed(3).replace(/\.?0+$/, "") + "%";
+ }
+
processLine(line) {
let view = this;
let func = function(match, p1, p2, p3) {
@@ -174,6 +205,35 @@ class DisassemblyView extends TextView {
};
line = line.replace(view.SOURCE_POSITION_HEADER_REGEX, func);
let fragments = super.processLine(line);
+
+ // Add profiling data per instruction if available.
+ if (view.total_event_counts) {
+ let event_selector = document.getElementById('event-selector');
+ if (event_selector.length !== 0) {
+ let event = event_selector.value;
+ let matches = /^(0x[0-9a-fA-F]+)\s+\d+\s+[0-9a-fA-F]+/.exec(line);
+ if (matches) {
+ let count = view.addr_event_counts[event][matches[1]];
+ let str = "";
+ let css_cls = undefined;
+ if(count !== undefined) {
+ let perc = count / view.total_event_counts[event] * 100;
+
+ str = "(" + view.humanize(perc) + ") ";
+
+ css_cls = "prof-low";
+ if(perc > PROF_HIGH)
+ css_cls = "prof-high";
+ else if(perc > PROF_MED)
+ css_cls = "prof-med";
+ }
+ // Pad extra spaces to keep alignment for all instructions.
+ str = (" ".repeat(10) + str).slice(-10);
+
+ fragments.splice(0, 0, view.createFragment(str, css_cls));
+ }
+ }
+ }
return fragments;
}
}
« no previous file with comments | « tools/turbolizer/constants.js ('k') | tools/turbolizer/index.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698