| Index: tools/ic-explorer.html
|
| diff --git a/tools/ic-explorer.html b/tools/ic-explorer.html
|
| index 6e0a7fd733cf27ecb38f1d48de790287cfae4f48..02214e3ee997cea274d8ff74f6e509b25721e111 100644
|
| --- a/tools/ic-explorer.html
|
| +++ b/tools/ic-explorer.html
|
| @@ -40,6 +40,11 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| "use strict"
|
| var entries = [];
|
|
|
| + var properties = ['type', 'category', 'file', 'filePosition', 'state',
|
| + 'key', 'isNative', 'map', 'propertiesMode', 'numberOfOwnProperties',
|
| + 'instanceType'
|
| + ]
|
| +
|
| class Entry {
|
| constructor(id, line) {
|
| this.id = id;
|
| @@ -50,8 +55,11 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| if (parts[0][0] !== "[") return;
|
| if (parts[1] === "patching") return;
|
| this.type = parts[0].substr(1);
|
| - this.category = "Other";
|
| - this.map = undefined;
|
| + this.category = "unknown";
|
| + this.map = "unknown";
|
| + this.propertiesMode = "unknown";
|
| + this.numberOfOwnProperties = 0;
|
| + this.instanceType = "unknown";
|
| if (this.type.indexOf("Store") !== -1) {
|
| this.category = "Store";
|
| } else if (this.type.indexOf("Load") !== -1) {
|
| @@ -70,13 +78,22 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| var offset = this.parsePositionAndFile(parts, 2);
|
| if (offset == -1) return
|
| this.state = parts[++offset];
|
| - this.map = parts[offset + 1];
|
| - if (this.map !== undefined && this.map.startsWith("map=")) {
|
| - this.map = this.map.substring(4);
|
| - offset++;
|
| - } else {
|
| - this.map = undefined;
|
| - }
|
| + var mapPart = parts[offset + 1];
|
| + if (mapPart !== undefined && mapPart.startsWith("map=")) {
|
| + if (mapPart[4] == "(") {
|
| + if (mapPart.endsWith(")")) {
|
| + this.map = mapPart.substr(5, mapPart.length-6);
|
| + } else {
|
| + this.map = mapPart.substr(5);
|
| + }
|
| + offset++;
|
| + offset = this.parseMapProperties(parts, offset);
|
| + } else {
|
| + this.map = mapPart.substr(4);
|
| + offset++;
|
| + }
|
| + if (this.map == "(nil)") this.map = "unknown";
|
| + }
|
| if (this.type !== "CompareIC") {
|
| // if there is no address we have a smi key
|
| var address = parts[++offset];
|
| @@ -108,6 +125,17 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| this.isValid = true;
|
| }
|
|
|
| + parseMapProperties(parts, offset) {
|
| + var next = parts[++offset];
|
| + if (!next.startsWith('dict')) return offset;
|
| + this.propertiesMode =
|
| + next.substr(5) == "0" ? "fast" : "slow";
|
| + this.numberOfOwnProperties = parts[++offset].substr(4);
|
| + next = parts[++offset];
|
| + this.instanceType = next.substr(5, next.length-6);
|
| + return offset;
|
| + }
|
| +
|
| parsePositionAndFile(parts, start) {
|
| // find the position of 'at' in the parts array.
|
| var offset = start;
|
| @@ -157,11 +185,6 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| }
|
|
|
|
|
| -
|
| - var properties = ['type', 'category', 'file', 'filePosition', 'state',
|
| - 'key', 'isNative', 'map'
|
| - ]
|
| -
|
| class Group {
|
| constructor(property, key, entry) {
|
| this.property = property;
|
| @@ -332,10 +355,14 @@ code is governed by a BSD-style license that can be found in the LICENSE file.
|
| select.add(option);
|
| }
|
| }
|
| +
|
| + function handleOnLoad() {
|
| + document.querySelector("#uploadInput").focus();
|
| + }
|
| </script>
|
| </head>
|
|
|
| -<body>
|
| +<body onload="handleOnLoad()">
|
| <h1>
|
| <span style="color: #00FF00">I</span>
|
| <span style="color: #FF00FF">C</span>
|
|
|