RFR: 8309463: IGV: Dynamic graph layout algorithm [v7]

Christian Hagedorn chagedorn at openjdk.org
Fri Aug 25 09:55:19 UTC 2023


On Fri, 25 Aug 2023 08:53:25 GMT, emmyyin <duke at openjdk.org> wrote:

>> src/utils/IdealGraphVisualizer/HierarchicalLayout/src/main/java/com/sun/hotspot/igv/hierarchicallayout/HierarchicalStableLayoutManager.java line 189:
>> 
>>> 187:                     assert e.to.layer == n.layer + 1;
>>> 188:                 } else {
>>> 189:                     n.succs.remove(e);
>> 
>> This removal and the one in the next loop seem unexpected being in a sanity check method where the expectation would be to only query and not modify. Do we really need these removals for the correctness of the algorithm?
>
> Yes, it breaks often if removed. It's mostly sanity checking but also ensuring the state of the graph is correct by fixing weird edge connections

As mentioned below, this method is still a bottleneck and we spend quite some time inside it. Overall, it attributes to around 90% of the overall time to open the graph in the example mentioned earlier. Is there another way to fix these breakages instead of looping over all nodes and edges here?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14349#discussion_r1305452104


More information about the hotspot-compiler-dev mailing list