RFR: JDK-8324950: IGV: save the state to a file [v18]
Roberto Castañeda Lozano
rcastanedalo at openjdk.org
Wed Apr 10 08:54:00 UTC 2024
On Tue, 9 Apr 2024 15:06:42 GMT, Tobias Holenstein <tholenstein at openjdk.org> wrote:
>> The current workflow in IGV is the following:
>> 1) import an XML file with graphs or send via network
>> 2) open or more graphs in a tab
>> 3) extract a set of nodes to be displayed in the tab
>> 4) close IGV and start from 1) again
>>
>> The idea of this RFE is to save the opened graph tabs and extracted nodes of a graph in the `graph.xml` file.
>> ### The new workflow
>>
>> When opening IGV the user gets an empty workspace without any opened files.
>> - Graphs can be sent via the network to IGV
>> - Graph can be opened from an XML file
>> <img width="260" alt="empty" src="https://github.com/openjdk/jdk/assets/71546117/ed4b572a-f6dc-4ea0-bc45-45d21cfe3ecc">
>>
>> Unzipping this [example.zip](https://github.com/openjdk/jdk/files/14905764/example.zip) and opening `graphs.xml`
>> shows the following graph. New with this RFE is that opened graph tabs and extracted nodes are saved to the `graph.xml` file and restored when re-opening the `graphs.xml`:
>>
>> <img width="739" alt="graph" src="https://github.com/openjdk/jdk/assets/71546117/ad65c000-0fb3-440f-94f7-5777dc87ac8e">
>>
>> A new `<graphStates>` is introduced in `graphs.xml` that stores the opened graphs and their hidden (visible) nodes:
>>
>> <graphDocument>
>> <group>
>> <graph>
>> <properties>...</properties>
>> <nodes>...</nodes>
>> <edges>...</edges>
>> <controlFlow>...</controlFlow>
>> <graphStates>
>> <state>
>> <difference value="0"/>
>> <hiddenNodes>
>> <node id="0"/>
>> <node id="1"/>
>> <node id="3"/>
>> </hiddenNodes>
>> </state>
>> </graphStates>
>> </graph>
>> </group>
>> </graphDocument>
>>
>>
>> The workspace menu is restructured:
>>
>> <img width="47" alt="open" src="https://github.com/openjdk/jdk/assets/71546117/d92fffdb-6431-4ac6-b21c-7d7b89d36ef5">
>>
>> - `Open` allows the user to open an XML file. In IGV there is either no XML opened indicated as `untitled` or exactly one xml file opened. It's not possible to have two XML files opened at the same time:
>>
>> <img width="101" alt="save" src="https://github.com/openjdk/jdk/assets/71546117/46a9e945-7f5c-4777-a66d-2fc8a95705c3">
>>
>> - `Save..` saves the current opened xml file. Create a new file if no file is opened.
>> - `Save as...` save the current graphs as a copy to an xml file.
>> Note: there is no...
>
> Tobias Holenstein has updated the pull request incrementally with two additional commits since the last revision:
>
> - Merge branch 'JDK-8324950' of github.com:tobiasholenstein/jdk into JDK-8324950
> - fix diffgraph
Hi Toby, this feature seems very useful, thanks for developing it! I very much prefer the current model that saves the state into the graph XML file compared to the original proposal. A few comments (this is not a full review yet):
- The export/import icons I see differ from those shown in the PR description:
![outline](https://github.com/openjdk/jdk/assets/8792647/946952d4-4ddc-495f-b5cd-22adf9721839)
- I find the distinction between 'Save' and 'Export' a bit unclear from a user perspective. My suggestion would be to either remove 'Export' (one can achieve the same result by removing the unnecessary graphs and then saving all remaining ones) or rename 'Save', 'Save as...', and 'Export' with 'Save all', 'Save all as...', and 'Save selected as...' (and using similar icons for the three), if that is the only difference between saving and exporting.
- It would be nice to make more tab-specific state persistent, for example which view is displayed (sea of nodes, CFG, etc.) or whether neighboring nodes of extracted nodes are shown. This could be done here or in a future RFE.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17630#issuecomment-2046941480
More information about the hotspot-compiler-dev
mailing list