| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 document.onload = (function(d3){ | 5 document.onload = (function(d3){ |
| 6 "use strict"; | 6 "use strict"; |
| 7 var jsonObj; | 7 var jsonObj; |
| 8 var sourceExpandClassList = document.getElementById(SOURCE_EXPAND_ID).classLis
t; | 8 var sourceExpandClassList = document.getElementById(SOURCE_EXPAND_ID).classLis
t; |
| 9 var sourceCollapseClassList = document.getElementById(SOURCE_COLLAPSE_ID).clas
sList; | 9 var sourceCollapseClassList = document.getElementById(SOURCE_COLLAPSE_ID).clas
sList; |
| 10 var sourceExpanded = sourceCollapseClassList.contains(COLLAPSE_PANE_BUTTON_VIS
IBLE); | 10 var sourceExpanded = sourceCollapseClassList.contains(COLLAPSE_PANE_BUTTON_VIS
IBLE); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "50%"); | 37 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "50%"); |
| 38 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "50%"); | 38 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "50%"); |
| 39 } else { | 39 } else { |
| 40 d3.select("#" + SOURCE_PANE_ID).style(WIDTH, "0%"); | 40 d3.select("#" + SOURCE_PANE_ID).style(WIDTH, "0%"); |
| 41 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "100%"); | 41 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "100%"); |
| 42 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "0%"); | 42 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "0%"); |
| 43 } | 43 } |
| 44 } | 44 } |
| 45 } | 45 } |
| 46 | 46 |
| 47 function getLastExpandedState(type, default_state) { |
| 48 var state = window.sessionStorage.getItem("expandedState-"+type); |
| 49 if (state === null) return default_state; |
| 50 return state === 'true'; |
| 51 } |
| 52 |
| 53 function setLastExpandedState(type, state) { |
| 54 window.sessionStorage.setItem("expandedState-"+type, state); |
| 55 } |
| 56 |
| 47 function toggleSourceExpanded() { | 57 function toggleSourceExpanded() { |
| 48 setSourceExpanded(!sourceExpanded); | 58 setSourceExpanded(!sourceExpanded); |
| 49 } | 59 } |
| 50 | 60 |
| 51 function setSourceExpanded(newState) { | 61 function setSourceExpanded(newState) { |
| 52 sourceExpanded = newState; | 62 sourceExpanded = newState; |
| 63 setLastExpandedState("source", newState); |
| 53 updatePanes(); | 64 updatePanes(); |
| 54 if (newState) { | 65 if (newState) { |
| 55 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); | 66 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 56 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); | 67 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 57 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); | 68 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 58 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); | 69 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 59 } else { | 70 } else { |
| 60 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); | 71 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 61 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); | 72 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 62 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); | 73 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 63 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); | 74 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 64 } | 75 } |
| 65 } | 76 } |
| 66 | 77 |
| 67 function toggleDisassemblyExpanded() { | 78 function toggleDisassemblyExpanded() { |
| 68 setDisassemblyExpanded(!disassemblyExpanded); | 79 setDisassemblyExpanded(!disassemblyExpanded); |
| 69 } | 80 } |
| 70 | 81 |
| 71 function setDisassemblyExpanded(newState) { | 82 function setDisassemblyExpanded(newState) { |
| 72 disassemblyExpanded = newState; | 83 disassemblyExpanded = newState; |
| 84 setLastExpandedState("disassembly", newState); |
| 73 updatePanes(); | 85 updatePanes(); |
| 74 if (newState) { | 86 if (newState) { |
| 75 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); | 87 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 76 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); | 88 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 77 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); | 89 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 78 disassemblyExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); | 90 disassemblyExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 79 } else { | 91 } else { |
| 80 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); | 92 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); |
| 81 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); | 93 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); |
| 82 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); | 94 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 optionElement.text = jsonObj.phases[i].name; | 180 optionElement.text = jsonObj.phases[i].name; |
| 169 if (optionElement.text == 'disassembly') { | 181 if (optionElement.text == 'disassembly') { |
| 170 disassemblyPhase = jsonObj.phases[i]; | 182 disassemblyPhase = jsonObj.phases[i]; |
| 171 } else { | 183 } else { |
| 172 selectMenu.add(optionElement, null); | 184 selectMenu.add(optionElement, null); |
| 173 } | 185 } |
| 174 } | 186 } |
| 175 disassemblyView.setNodePositionMap(jsonObj.nodePositions); | 187 disassemblyView.setNodePositionMap(jsonObj.nodePositions); |
| 176 disassemblyView.show(disassemblyPhase.data, null); | 188 disassemblyView.show(disassemblyPhase.data, null); |
| 177 | 189 |
| 190 var initialPhaseIndex = +window.sessionStorage.getItem("lastSelected
Phase"); |
| 191 if (!(initialPhaseIndex in jsonObj.phases)) { |
| 192 initialPhaseIndex = 0; |
| 193 } |
| 194 |
| 195 // We wish to show the remembered phase {lastSelectedPhase}, but |
| 196 // this will crash if the first view we switch to is a |
| 197 // ScheduleView. So we first switch to the first phase, which |
| 198 // should never be a ScheduleView. |
| 178 displayPhase(jsonObj.phases[0]); | 199 displayPhase(jsonObj.phases[0]); |
| 200 displayPhase(jsonObj.phases[initialPhaseIndex]); |
| 201 selectMenu.selectedIndex = initialPhaseIndex; |
| 179 | 202 |
| 180 selectMenu.onchange = function(item) { | 203 selectMenu.onchange = function(item) { |
| 204 window.sessionStorage.setItem("lastSelectedPhase", selectMenu.sele
ctedIndex); |
| 181 displayPhase(jsonObj.phases[selectMenu.selectedIndex]); | 205 displayPhase(jsonObj.phases[selectMenu.selectedIndex]); |
| 182 } | 206 } |
| 183 | 207 |
| 184 fitPanesToParents(); | 208 fitPanesToParents(); |
| 209 |
| 210 d3.select("#search-input").attr("value", window.sessionStorage.getIt
em("lastSearch") || ""); |
| 211 |
| 185 } | 212 } |
| 186 catch(err) { | 213 catch(err) { |
| 214 window.console.log("caught exception, clearing session storage just
in case"); |
| 215 window.sessionStorage.clear(); // just in case |
| 216 window.console.log("showing error"); |
| 187 window.alert("Invalid TurboFan JSON file\n" + | 217 window.alert("Invalid TurboFan JSON file\n" + |
| 188 "error: " + err.message); | 218 "error: " + err.message); |
| 189 return; | 219 return; |
| 190 } | 220 } |
| 191 }; | 221 }; |
| 192 filereader.readAsText(uploadFile); | 222 filereader.readAsText(uploadFile); |
| 193 } else { | 223 } else { |
| 194 alert("Can't load graph"); | 224 alert("Can't load graph"); |
| 195 } | 225 } |
| 196 }); | 226 }); |
| 197 } | 227 } |
| 198 | 228 |
| 199 sourceView = new CodeView(SOURCE_PANE_ID, PR, "", 0, selectionBroker); | 229 sourceView = new CodeView(SOURCE_PANE_ID, PR, "", 0, selectionBroker); |
| 200 disassemblyView = new DisassemblyView(DISASSEMBLY_PANE_ID, selectionBroker); | 230 disassemblyView = new DisassemblyView(DISASSEMBLY_PANE_ID, selectionBroker); |
| 201 graph = new GraphView(d3, GRAPH_PANE_ID, [], [], selectionBroker); | 231 graph = new GraphView(d3, GRAPH_PANE_ID, [], [], selectionBroker); |
| 202 schedule = new ScheduleView(SCHEDULE_PANE_ID, selectionBroker); | 232 schedule = new ScheduleView(SCHEDULE_PANE_ID, selectionBroker); |
| 203 empty = new EmptyView(EMPTY_PANE_ID, selectionBroker); | 233 empty = new EmptyView(EMPTY_PANE_ID, selectionBroker); |
| 204 | 234 |
| 205 initializeHandlers(graph); | 235 initializeHandlers(graph); |
| 206 | 236 |
| 207 setSourceExpanded(true); | 237 setSourceExpanded(getLastExpandedState("source", true)); |
| 208 setDisassemblyExpanded(false); | 238 setDisassemblyExpanded(getLastExpandedState("disassembly", false)); |
| 209 | 239 |
| 210 displayPhaseView(empty, null); | 240 displayPhaseView(empty, null); |
| 211 fitPanesToParents(); | 241 fitPanesToParents(); |
| 212 })(window.d3); | 242 })(window.d3); |
| OLD | NEW |