RFR: 8344213: Cleanup OpaqueLoop*Node verification code for Assertion Predicates
Christian Hagedorn
chagedorn at openjdk.org
Fri Nov 15 08:30:07 UTC 2024
This patch cleans up the `OpaqueLoop*Node` verification code that is called with `PhaseIdeaLoop::assertion_predicate_has_loop_opaque_node()`.
There are some places where the verification code is
- missing
- called twice in row with different methods
- unnecessarily called
This patch cleans this up and moves the verification code inside the `TemplateAssertionPredicate` and the `InitializedAssertionPredicate` class.
#### Details of this Patch
- Doing a simpler BFS similar to what `ReplaceOpaqueStrideInput::replace()` is doing.
- Noticed that the new code looks very similar, so I decided to create a dedicated `DataNodeBFS` class which could be reused again in the future to perform a BFS on data nodes.
- One can implement the new `BFSActions` interface to define
- Whether a node's input should be further visited.
- Whether a node is a target node for this BFS.
- What action that should be performed with the target node.
- Updated `ReplaceOpaqueStrideInput` to use the new `DataNodeBFS/BFSActions` classes.
- Implemented a new `OpaqueLoopNodesVerifier` class using `DataNodeBFS/BFSActions` which does the `OpaqueLoop*Node` verification previously done with `assertion_predicate_has_loop_opaque_node()`:
- Verify Template Assertion Predicates:
- For init value: Only `OpaqueLoopInit`
- For last value: Both `OpaqueLoop*Nodes`
- Verify Initialized Assertion Predicates:
- No `OpaqueLoop*Nodes`
Thanks,
Christian
-------------
Commit messages:
- 8344213: Cleanup OpaqueLoop*Node verification code for Assertion Predicates
Changes: https://git.openjdk.org/jdk/pull/22136/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22136&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8344213
Stats: 275 lines in 7 files changed: 150 ins; 92 del; 33 mod
Patch: https://git.openjdk.org/jdk/pull/22136.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22136/head:pull/22136
PR: https://git.openjdk.org/jdk/pull/22136
More information about the hotspot-compiler-dev
mailing list