cmd/compile: make expanded/hidden columns in GOSSAFUNC persist across
reloads
use pushState with updated state and read it on page load,so that state
can survive across reloads.
Change-Id: I6c5e80e9747576245b979a62cb96d231d8f27d57
Reviewed-on: https://go-review.googlesource.com/c/go/+/248687
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bradford Lamson-Scribner <brad.lamson@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/src/cmd/compile/internal/ssa/html.go b/src/cmd/compile/internal/ssa/html.go
index 1c70b64..c781ca9 100644
--- a/src/cmd/compile/internal/ssa/html.go
+++ b/src/cmd/compile/internal/ssa/html.go
@@ -358,6 +358,21 @@
</style>
<script type="text/javascript">
+
+// Contains phase names which are expanded by default. Other columns are collapsed.
+let expandedDefault = [
+ "start",
+ "deadcode",
+ "opt",
+ "lower",
+ "late-deadcode",
+ "regalloc",
+ "genssa",
+];
+if (history.state === null) {
+ history.pushState({expandedDefault}, "", location.href);
+}
+
// ordered list of all available highlight colors
var highlights = [
"highlight-aquamarine",
@@ -402,6 +417,9 @@
}
window.onload = function() {
+ if (history.state !== null) {
+ expandedDefault = history.state.expandedDefault;
+ }
if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
toggleDarkMode();
document.getElementById("dark-mode-button").checked = true;
@@ -410,9 +428,6 @@
var ssaElemClicked = function(elem, event, selections, selected) {
event.stopPropagation();
- // TODO: pushState with updated state and read it on page load,
- // so that state can survive across reloads
-
// find all values with the same name
var c = elem.classList.item(0);
var x = document.getElementsByClassName(c);
@@ -490,21 +505,18 @@
lines[i].addEventListener('click', ssaValueClicked);
}
- // Contains phase names which are expanded by default. Other columns are collapsed.
- var expandedDefault = [
- "start",
- "deadcode",
- "opt",
- "lower",
- "late-deadcode",
- "regalloc",
- "genssa",
- ];
function toggler(phase) {
return function() {
toggle_cell(phase+'-col');
toggle_cell(phase+'-exp');
+ const i = expandedDefault.indexOf(phase);
+ if (i !== -1) {
+ expandedDefault.splice(i, 1);
+ } else {
+ expandedDefault.push(phase);
+ }
+ history.pushState({expandedDefault}, "", location.href);
};
}
@@ -532,9 +544,13 @@
const len = combined.length;
if (len > 1) {
for (let i = 0; i < len; i++) {
- if (expandedDefault.indexOf(combined[i]) !== -1) {
- show = true;
- break;
+ const num = expandedDefault.indexOf(combined[i]);
+ if (num !== -1) {
+ expandedDefault.splice(num, 1);
+ if (expandedDefault.indexOf(phase) === -1) {
+ expandedDefault.push(phase);
+ show = true;
+ }
}
}
}