RFR: 8285558: IGV: scheduling crashes on control-unreachable CFG nodes
Christian Hagedorn
chagedorn at openjdk.java.net
Mon May 30 07:34:35 UTC 2022
On Fri, 27 May 2022 10:08:22 GMT, Roberto Castañeda Lozano <rcastanedalo at openjdk.org> wrote:
> This changeset relaxes IGV's schedule approximation algorithm to handle CFG nodes that are not reachable from the root node via a control path. This is done by 1) removing the assumption that, after `ServerCompilerScheduler::buildBlocks()`, `Node::block` is non-null for CFG nodes; and 2) leaving the assignment of blockless nodes to an artificial "no block" to `InputGraph::ensureNodesInBlocks()`, which is always called after running the schedule approximation algorithm.
>
> Additionally, the changeset marks unreachable CFG nodes with a warning, making it easier to identify ill-formed graphs:
>
> ![screenshot of IGV graph where some nodes are marked with a warning](https://user-images.githubusercontent.com/8792647/170678998-bffc293f-90ce-45e7-9aea-7cc5ab184026.png)
>
> #### Testing
>
> - Tested manually on the two graphs reported in the [JBS issue](https://bugs.openjdk.java.net/browse/JDK-8285558).
>
> - Tested automatically that scheduling tens of thousands of graphs (by instrumenting IGV to schedule parsed graphs eagerly and running `java -Xcomp -XX:-TieredCompilation -XX:PrintIdealGraphLevel=4`) does not introduce any exception or assertion failure.
Looks good! That's useful to mark them with a warning when analyzing dead loop problems.
-------------
Marked as reviewed by chagedorn (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/8916
More information about the hotspot-compiler-dev
mailing list