RFR: 8344171: Clone and initialize Assertion Predicates in order instead of in reverse-order [v4]
Christian Hagedorn
chagedorn at openjdk.org
Thu Nov 28 08:37:15 UTC 2024
> This patch changes the order in which we clone and initialize Assertion Predicates from "reverse-order" to "in-order".
>
> #### Current State: Mostly "reverse-order" for Assertion Predicates
> We are currently cloning and initializing Assertion Predicates in reverse-order out of convenience and simplicity for most of the loop splitting optimizations - except for Loop Unswitching (see next section). This means that we do the following:
>
> old target loop entry
> |
> x Cloned Template Assertion
> | Predicate 2
> Template Assertion |
> Predicate 1 Initialized Assertion
> | ==> Predicate 2
> Template Assertion |
> Predicate 2 Cloned Template Assertion
> | Predicate 1
> source loop |
> Initialized Assertion
> Predicate 1
> |
> target loop
>
> I don't think this is wrong but still kinda unexpected when trying to reason about a graph. But now with the recent refactorings, I think it's easy to change this to an in-order processing:
>
> old target loop entry
> |
> x Cloned Template Assertion
> | Predicate 1
> Template Assertion |
> Predicate 1 Initialized Assertion
> | ==> Predicate 1
> Template Assertion |
> Predicate 2 Cloned Template Assertion
> | Predicate 2
> source loop |
> Initialized Assertion
> Predicate 2
> |
> target loop
>
> This will also align all cloning/initializing of Assertion Predicates to the same order which was not the case before: Loop Unswitching already had an in-order cloning.
>
> #### Why Does Loop Unswitching Use In-Order?
> The main reason wa...
Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
Add some visualization
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/22275/files
- new: https://git.openjdk.org/jdk/pull/22275/files/dfcbf459..07fca8a2
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=22275&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=22275&range=02-03
Stats: 25 lines in 1 file changed: 24 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/22275.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22275/head:pull/22275
PR: https://git.openjdk.org/jdk/pull/22275
More information about the hotspot-compiler-dev
mailing list