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