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

Side by Side Diff: tools/ic-explorer.html

Issue 2046943003: [ic] print map pointer value for --trace-ic (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « src/ic/ic.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <html> 1 <html>
2 <!-- 2 <!--
3 Copyright 2016 the V8 project authors. All rights reserved. Use of this source 3 Copyright 2016 the V8 project authors. All rights reserved. Use of this source
4 code is governed by a BSD-style license that can be found in the LICENSE file. 4 code is governed by a BSD-style license that can be found in the LICENSE file.
5 --> 5 -->
6 6
7 <head> 7 <head>
8 <style> 8 <style>
9 .entry-details {} 9 .entry-details {}
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 constructor(id, line) { 44 constructor(id, line) {
45 this.id = id; 45 this.id = id;
46 this.line = line; 46 this.line = line;
47 var parts = line.split(" "); 47 var parts = line.split(" ");
48 if (parts.length < 6) return 48 if (parts.length < 6) return
49 this.isValid = false; 49 this.isValid = false;
50 if (parts[0][0] !== "[") return; 50 if (parts[0][0] !== "[") return;
51 if (parts[1] === "patching") return; 51 if (parts[1] === "patching") return;
52 this.type = parts[0].substr(1); 52 this.type = parts[0].substr(1);
53 this.category = "Other"; 53 this.category = "Other";
54 this.map = undefined;
54 if (this.type.indexOf("Store") !== -1) { 55 if (this.type.indexOf("Store") !== -1) {
55 this.category = "Store"; 56 this.category = "Store";
56 } else if (this.type.indexOf("Load") !== -1) { 57 } else if (this.type.indexOf("Load") !== -1) {
57 this.category = "Load"; 58 this.category = "Load";
58 } 59 }
59 if (this.type.length == 0) return; 60 if (this.type.length == 0) return;
60 if (this.type.indexOf('BinaryOpIC(') === 0) { 61 if (this.type.indexOf('BinaryOpIC(') === 0) {
61 this.type = "BinaryOpIC"; 62 this.type = "BinaryOpIC";
62 var split = parts[0].split('('); 63 var split = parts[0].split('(');
63 this.state = "(" + split[1] + " => " + parts[2]; 64 this.state = "(" + split[1] + " => " + parts[2];
64 var offset = this.parsePositionAndFile(parts, 6); 65 var offset = this.parsePositionAndFile(parts, 6);
65 if (offset == -1) return 66 if (offset == -1) return
66 if (this.file === undefined) return 67 if (this.file === undefined) return
67 this.file = this.file.slice(0, -1); 68 this.file = this.file.slice(0, -1);
68 } else { 69 } else {
69 var offset = this.parsePositionAndFile(parts, 2); 70 var offset = this.parsePositionAndFile(parts, 2);
70 if (offset == -1) return 71 if (offset == -1) return
71 this.state = parts[++offset]; 72 this.state = parts[++offset];
73 this.map = parts[offset + 1];
74 if (this.map.startsWith("map=")) {
75 this.map = this.map.substring(4);
76 offset++;
77 } else {
78 this.map = undefined;
79 }
72 if (this.type !== "CompareIC") { 80 if (this.type !== "CompareIC") {
73 // if there is no address we have a smi key 81 // if there is no address we have a smi key
74 var address = parts[++offset]; 82 var address = parts[++offset];
75 if (address !== undefined && address.indexOf("0x") === 0) { 83 if (address !== undefined && address.indexOf("0x") === 0) {
76 this.key = parts.slice(++offset).join(" "); 84 this.key = parts.slice(++offset).join(" ");
77 } else { 85 } else {
78 this.key = address; 86 this.key = address;
79 } 87 }
80 } 88 }
81 } 89 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 var end = this.result.length; 136 var end = this.result.length;
129 var current = 0; 137 var current = 0;
130 var next = 0; 138 var next = 0;
131 var line; 139 var line;
132 var i = 0; 140 var i = 0;
133 var entry; 141 var entry;
134 while (current < end) { 142 while (current < end) {
135 next = this.result.indexOf("\n", current); 143 next = this.result.indexOf("\n", current);
136 if (next === -1) break; 144 if (next === -1) break;
137 i++; 145 i++;
138
139 line = this.result.substring(current, next); 146 line = this.result.substring(current, next);
140 current = next + 1; 147 current = next + 1;
141 entry = new Entry(i, line); 148 entry = new Entry(i, line);
142 if (entry.isValid) entries.push(entry); 149 if (entry.isValid) entries.push(entry);
143 } 150 }
144 151
145 document.getElementById("count").innerHTML = i; 152 document.getElementById("count").innerHTML = i;
146 updateTable(); 153 updateTable();
147 } 154 }
148 reader.readAsText(file); 155 reader.readAsText(file);
149 initGroupKeySelect(); 156 initGroupKeySelect();
150 } 157 }
151 158
152 159
153 160
154 var properties = ['type', 'category', 'file', 'filePosition', 'state', 161 var properties = ['type', 'category', 'file', 'filePosition', 'state',
155 'key', 'isNative' 162 'key', 'isNative', 'map'
156 ] 163 ]
157 164
158 class Group { 165 class Group {
159 constructor(property, key, entry) { 166 constructor(property, key, entry) {
160 this.property = property; 167 this.property = property;
161 this.key = key; 168 this.key = key;
162 this.count = 1; 169 this.count = 1;
163 this.entries = [entry]; 170 this.entries = [entry];
164 this.percentage = undefined; 171 this.percentage = undefined;
165 this.groups = undefined; 172 this.groups = undefined;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 result.push(group); 209 result.push(group);
203 } 210 }
204 result.sort((a, b) => { 211 result.sort((a, b) => {
205 return b.count - a.count 212 return b.count - a.count
206 }); 213 });
207 return result; 214 return result;
208 } 215 }
209 216
210 217
211 218
219 function escapeHtml(unsafe) {
220 return unsafe.toString()
221 .replace(/&/g, "&amp;")
222 .replace(/</g, "&lt;")
223 .replace(/>/g, "&gt;")
224 .replace(/"/g, "&quot;")
225 .replace(/'/g, "&#039;");
226 }
212 227
213 function updateTable() { 228 function updateTable() {
214 var select = document.getElementById("group-key"); 229 var select = document.getElementById("group-key");
215 var key = select.options[select.selectedIndex].text; 230 var key = select.options[select.selectedIndex].text;
216 console.log(key); 231 console.log(key);
217 var tableBody = document.getElementById("table-body"); 232 var tableBody = document.getElementById("table-body");
218 removeAllChildren(tableBody); 233 removeAllChildren(tableBody);
219 var groups = groupBy(entries, key, true); 234 var groups = groupBy(entries, key, true);
220 display(groups, tableBody); 235 display(groups, tableBody);
221 } 236 }
(...skipping 19 matching lines...) Expand all
241 return td 256 return td
242 } 257 }
243 var max = Math.min(1000, entries.length) 258 var max = Math.min(1000, entries.length)
244 for (var i = 0; i < max; i++) { 259 for (var i = 0; i < max; i++) {
245 var entry = entries[i]; 260 var entry = entries[i];
246 var tr = document.createElement("tr"); 261 var tr = document.createElement("tr");
247 tr.entry = entry; 262 tr.entry = entry;
248 td(tr, '<span onclick="toggleDetails(this)">details</a>', 'details'); 263 td(tr, '<span onclick="toggleDetails(this)">details</a>', 'details');
249 td(tr, entry.percentage + "%", 'percentage'); 264 td(tr, entry.percentage + "%", 'percentage');
250 td(tr, entry.count, 'count'); 265 td(tr, entry.count, 'count');
251 td(tr, entry.key, 'key'); 266 td(tr, escapeHtml(entry.key), 'key');
252 fragment.appendChild(tr); 267 fragment.appendChild(tr);
253 } 268 }
254 var omitted = entries.length - max; 269 var omitted = entries.length - max;
255 if (omitted > 0) { 270 if (omitted > 0) {
256 var tr = document.createElement("tr"); 271 var tr = document.createElement("tr");
257 var td = td(tr, 'Omitted ' + omitted + " entries."); 272 var td = td(tr, 'Omitted ' + omitted + " entries.");
258 td.colSpan = 4; 273 td.colSpan = 4;
259 fragment.appendChild(tr); 274 fragment.appendChild(tr);
260 } 275 }
261 parent.appendChild(fragment); 276 parent.appendChild(fragment);
(...skipping 13 matching lines...) Expand all
275 tr.appendChild(td); 290 tr.appendChild(td);
276 // Append the new TR after previousSibling. 291 // Append the new TR after previousSibling.
277 previousSibling.parentNode.insertBefore(tr, previousSibling.nextSibling) 292 previousSibling.parentNode.insertBefore(tr, previousSibling.nextSibling)
278 } 293 }
279 294
280 function displayDrilldownGroup(entry, key) { 295 function displayDrilldownGroup(entry, key) {
281 var max = 20; 296 var max = 20;
282 var group = entry.groups[key]; 297 var group = entry.groups[key];
283 var div = document.createElement("div") 298 var div = document.createElement("div")
284 div.className = 'drilldown-group-title' 299 div.className = 'drilldown-group-title'
285 div.innerHTML = key + ' [top ' + max + ']'; 300 div.innerHTML = key + ' [top ' + max + ' out of ' + group.length + ']';
286 var table = document.createElement("table"); 301 var table = document.createElement("table");
287 display(group.slice(0, max), table, false) 302 display(group.slice(0, max), table, false)
288 div.appendChild(table); 303 div.appendChild(table);
289 return div; 304 return div;
290 } 305 }
291 306
292 function toggleDetails(node) { 307 function toggleDetails(node) {
293 var tr = node.parentNode.parentNode; 308 var tr = node.parentNode.parentNode;
294 var entry = tr.entry; 309 var entry = tr.entry;
295 310
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 </p> 356 </p>
342 <p> 357 <p>
343 <table id="table" width="100%"> 358 <table id="table" width="100%">
344 <tbody id="table-body"> 359 <tbody id="table-body">
345 </tbody> 360 </tbody>
346 </table> 361 </table>
347 </p> 362 </p>
348 </body> 363 </body>
349 364
350 </html> 365 </html>
OLDNEW
« no previous file with comments | « src/ic/ic.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698