2020-06-29 19:21:56 +00:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<!-- Copyright 2020 the V8 project authors. All rights reserved.
|
|
|
|
|
Use of this source code is governed by a BSD-style license that can be
|
|
|
|
|
found in the LICENSE file. -->
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<title>Indicium</title>
|
|
|
|
|
<!-- <link rel="icon" type="image/png" href="/images/favicon.png"/> -->
|
2020-10-23 11:21:18 +00:00
|
|
|
|
|
|
|
|
|
<link rel="modulepreload" href="./helper.mjs" >
|
2020-11-18 15:51:07 +00:00
|
|
|
|
<link rel="modulepreload" href="./view/log-file-reader.mjs" >
|
|
|
|
|
<link rel="modulepreload" href="./view/helper.mjs" >
|
2021-12-17 03:09:34 +00:00
|
|
|
|
<link rel="preload" href="../js/log-file-reader-template.html" as="fetch" crossorigin="anonymous">
|
2020-10-23 11:21:18 +00:00
|
|
|
|
<script type="module">
|
2022-07-19 13:11:01 +00:00
|
|
|
|
// Force instantiating the log-reader before anything else.
|
2020-11-18 15:51:07 +00:00
|
|
|
|
import "./view/log-file-reader.mjs";
|
2020-10-23 11:21:18 +00:00
|
|
|
|
// Delay loading of the main App
|
|
|
|
|
(async function() {
|
|
|
|
|
let module = await import('./index.mjs');
|
2020-12-03 17:48:45 +00:00
|
|
|
|
globalThis.app = new module.App();
|
2020-10-23 11:21:18 +00:00
|
|
|
|
})();
|
|
|
|
|
</script>
|
2020-07-13 18:02:52 +00:00
|
|
|
|
<link rel="stylesheet" type="text/css" href="./index.css">
|
2020-08-13 12:55:19 +00:00
|
|
|
|
<style>
|
|
|
|
|
#container.initial {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-19 16:48:36 +00:00
|
|
|
|
#timeline-panel {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-07 08:44:54 +00:00
|
|
|
|
.panels {
|
2020-08-13 12:55:19 +00:00
|
|
|
|
display: grid;
|
2020-08-14 16:00:55 +00:00
|
|
|
|
align-content: center;
|
2022-04-14 15:17:44 +00:00
|
|
|
|
grid-template-columns: repeat(auto-fill, minmax(600px, 1fr));
|
2020-10-19 16:48:36 +00:00
|
|
|
|
grid-auto-flow: row dense;
|
|
|
|
|
grid-gap: 10px;
|
|
|
|
|
margin-top: 10px;
|
2020-08-13 12:55:19 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-10-10 18:02:26 +00:00
|
|
|
|
dt::after {
|
|
|
|
|
content: ":";
|
2020-09-16 17:47:01 +00:00
|
|
|
|
}
|
2020-08-13 12:55:19 +00:00
|
|
|
|
</style>
|
2020-06-29 19:21:56 +00:00
|
|
|
|
</head>
|
2020-08-13 12:55:19 +00:00
|
|
|
|
|
2020-06-29 19:21:56 +00:00
|
|
|
|
<body>
|
2022-03-15 11:34:52 +00:00
|
|
|
|
<tool-tip id="tool-tip" style="will-change: transform"></tool-tip>
|
2020-11-26 14:07:19 +00:00
|
|
|
|
|
2020-10-10 18:02:26 +00:00
|
|
|
|
<section id="file-reader">
|
|
|
|
|
<log-file-reader id="log-file-reader"></log-file-reader>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section id="container" class="initial">
|
|
|
|
|
<timeline-panel id="timeline-panel">
|
2021-06-07 14:57:44 +00:00
|
|
|
|
<timeline-track-tick id="tick-track" title="Samples"></timeline-track-tick>
|
2021-06-28 19:46:31 +00:00
|
|
|
|
<timeline-track-timer id="timer-track" title="Timers"></timeline-track-timer>
|
2021-06-07 14:57:44 +00:00
|
|
|
|
<timeline-track-map id="map-track" title="Map"></timeline-track-map>
|
2020-12-07 08:44:54 +00:00
|
|
|
|
<timeline-track id="ic-track" title="IC"></timeline-track>
|
|
|
|
|
<timeline-track id="deopt-track" title="Deopt"></timeline-track>
|
|
|
|
|
<timeline-track id="code-track" title="Code"></timeline-track>
|
2020-10-10 18:02:26 +00:00
|
|
|
|
</timeline-panel>
|
2020-12-07 08:44:54 +00:00
|
|
|
|
|
2020-10-19 16:48:36 +00:00
|
|
|
|
<div class="panels">
|
2021-06-15 11:19:00 +00:00
|
|
|
|
<script-panel id="script-panel"></script-panel>
|
|
|
|
|
<code-panel id="code-panel"></code-panel>
|
2020-10-19 16:48:36 +00:00
|
|
|
|
<map-panel id="map-panel"></map-panel>
|
2020-12-09 08:01:26 +00:00
|
|
|
|
<list-panel id="ic-list" title="IC List">
|
2020-12-13 19:33:07 +00:00
|
|
|
|
<div class="legend">
|
2020-12-07 08:44:54 +00:00
|
|
|
|
<h3>Legend</h3>
|
|
|
|
|
<dl>
|
|
|
|
|
<dt>0</dt>
|
|
|
|
|
<dd>uninitialized</dd>
|
|
|
|
|
<dt>X</dt>
|
|
|
|
|
<dd>no feedback</dd>
|
|
|
|
|
<dt>1</dt>
|
|
|
|
|
<dd>monomorphic</dd>
|
|
|
|
|
<dt>^</dt>
|
|
|
|
|
<dd>recompute handler</dd>
|
|
|
|
|
<dt>P</dt>
|
|
|
|
|
<dd>polymorphic</dd>
|
|
|
|
|
<dt>N</dt>
|
|
|
|
|
<dd>megamorphic</dd>
|
|
|
|
|
<dt>G</dt>
|
|
|
|
|
<dd>generic</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
</div>
|
|
|
|
|
</list-panel>
|
2020-12-09 08:01:26 +00:00
|
|
|
|
<list-panel id="map-list" title="Map Events"></list-panel>
|
|
|
|
|
<list-panel id="deopt-list" title="Deopt Events"></list-panel>
|
|
|
|
|
<list-panel id="code-list" title="Code Events"></list-panel>
|
2022-04-26 17:18:04 +00:00
|
|
|
|
<profiler-panel id="profiler-panel"></profiler-panel>
|
2020-08-28 04:18:59 +00:00
|
|
|
|
</div>
|
2020-10-10 18:02:26 +00:00
|
|
|
|
</section>
|
|
|
|
|
|
2020-10-19 16:48:36 +00:00
|
|
|
|
<div class="panels">
|
|
|
|
|
<section id="instructions" class="panel">
|
|
|
|
|
<h2>Instructions</h2>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<div class="panelBody">
|
|
|
|
|
<p>
|
|
|
|
|
Unified web interface to analyse runtime information stored in the v8 log.
|
|
|
|
|
</p>
|
|
|
|
|
For generating a v8.log file from <a href="https://v8.dev/docs/build">d8</a>:
|
|
|
|
|
<ul>
|
|
|
|
|
<li>
|
|
|
|
|
<code>/path/do/d8 $LOG_FLAGS $FILE</code>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
For generating a v8.log file from Chrome:
|
|
|
|
|
<ul>
|
|
|
|
|
<li>
|
|
|
|
|
<code>/path/to/chrome --user-data-dir=/var/tmp/chr$RANDOM --no-sandbox
|
|
|
|
|
--js-flags='$LOG_FLAGS’
|
|
|
|
|
$WEBSITE_URL</code>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h3><code>LOG_FLAGS</code>:</h3>
|
|
|
|
|
<dl class="d8-options">
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_all">
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<code>--log-all</code>
|
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>Enable all V8 logging options.</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.trace_maps">
|
2021-01-12 14:54:10 +00:00
|
|
|
|
<code>--log-maps</code>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>
|
2021-05-25 08:49:11 +00:00
|
|
|
|
Log <a href="https://v8.dev/blog/fast-properties">Maps</a>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_ic">
|
2021-01-12 14:54:10 +00:00
|
|
|
|
<code>--log-ic</code>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>
|
|
|
|
|
Log <a href="https://mathiasbynens.be/notes/shapes-ics">ICs</a>
|
|
|
|
|
</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_source_code">
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<code>--log-source-code</code>
|
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>Log source code</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_code_disassemble">
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<code>--log-code-disassemble</code>
|
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>Log detailed generated generated code</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_code">
|
2022-04-07 12:48:04 +00:00
|
|
|
|
<code>--log-code</code>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
2021-01-12 14:54:10 +00:00
|
|
|
|
<dd>Log details about deoptimized code</dd>
|
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.log_deopt">
|
2021-01-12 14:54:10 +00:00
|
|
|
|
<code>--log-deopt</code>
|
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<dd>Log various API uses.</dd>
|
2021-06-15 15:22:17 +00:00
|
|
|
|
<dt>
|
2022-10-13 14:17:31 +00:00
|
|
|
|
<a href="https://source.chromium.org/search?q=v8_flags.prof">
|
2021-06-15 15:22:17 +00:00
|
|
|
|
<code>--prof</code>
|
|
|
|
|
</a>
|
|
|
|
|
</dt>
|
|
|
|
|
<dd>Log ticks from the sampling profiler.</dd>
|
2020-12-21 09:47:32 +00:00
|
|
|
|
</dl>
|
|
|
|
|
|
2022-07-19 13:11:01 +00:00
|
|
|
|
<h3>Local Symbol Server</h3>
|
|
|
|
|
To get detailed C++ symbols for local binaries you can host the
|
|
|
|
|
system-analyzer locally using <code>tools/system-analyzer/local-server.sh</code>.
|
|
|
|
|
You can then access the analyzer on
|
|
|
|
|
<a href="http://localhost:8000/system-analyzer/index.html">localhost</a>.
|
|
|
|
|
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<h3>Keyboard Shortcuts for Navigation</h3>
|
|
|
|
|
<dl>
|
2022-11-08 11:23:52 +00:00
|
|
|
|
<dt><kbd>CTRL</kbd> + <kbd>Mouse Move</kbd></dt>
|
|
|
|
|
<dd>Show tooltips immediately</dd>
|
|
|
|
|
|
2022-04-05 17:42:47 +00:00
|
|
|
|
<dt><kbd>A</kbd></dt>
|
|
|
|
|
<dd>Scroll left</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>D</kbd></dt>
|
2022-11-08 11:23:52 +00:00
|
|
|
|
<dd>Scroll right</dd>
|
2022-04-05 17:42:47 +00:00
|
|
|
|
|
2020-12-21 09:47:32 +00:00
|
|
|
|
<dt><kbd>SHIFT</kbd> + <kbd>Arrow Up</kbd></dt>
|
|
|
|
|
<dd>Follow Map transition forward (first child)</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>SHIFT</kbd> + <kbd>Arrow Down</kbd></dt>
|
|
|
|
|
<dd>Follow Map transition backwards</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>Arrow Up</kbd></dt>
|
|
|
|
|
<dd>Go to previous Map chunk</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>Arrow Down</kbd></dt>
|
|
|
|
|
<dd>Go to next Map in chunk</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>Arrow Left</kbd></dt>
|
|
|
|
|
<dd>Go to previous chunk</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>Arrow Right</kbd></dt>
|
|
|
|
|
<dd>Go to next chunk</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>+</kbd></dt>
|
|
|
|
|
<dd>Timeline zoom in</dd>
|
|
|
|
|
|
|
|
|
|
<dt><kbd>-</kbd></dt>
|
|
|
|
|
<dd>Timeline zoom out</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
</div>
|
2020-10-19 16:48:36 +00:00
|
|
|
|
</section>
|
|
|
|
|
</div>
|
2020-06-29 19:21:56 +00:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|