RFR: 8343745: Only update Last Value Assertion Predicates in Loop Unrolling

Christian Hagedorn chagedorn at openjdk.org
Fri Nov 8 07:19:16 UTC 2024


On Fri, 8 Nov 2024 07:12:12 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:

> (Note: This is a dependent PR on https://github.com/openjdk/jdk/pull/21944 which is fully reviewed but I'd prefer to integrate it on Monday and run again some testing over the weekend)
> 
> This is a follow-up feature to https://github.com/openjdk/jdk/pull/21944 which updated Loop Unrolling to use a new predicate visitor and enables this patch.
> 
> In Loop Unrolling, we only update the stride and not the init value of a loop. Thus, we actually only require to update the Last Value Assertion Predicates because the Init Value Assertion Predicates do not use `OpaqueLoopStride`. So, we also would not be required to kill the old Init Value Initialized Assertion Predicates. This patch implements that improvement.
> 
> To make this work, we need to query the associated `AssertionPredicateType` of an Assertion Predicate which is stored in the `If/RangeCheckNode` (I guess it's okay to have this additional node field in product). This was guarded by `NOT_PRODUCT` before. For this patch, I make this information available in product builds and use it to implement this feature.
> 
> Thanks,
> Christian

src/hotspot/share/opto/predicates.cpp line 881:

> 879:     // Only Last Value Assertion Predicates have an OpaqueLoopStrideNode.
> 880:     return;
> 881:   }

Skipping to update Init Value Template Assertion Predicate.

src/hotspot/share/opto/predicates.hpp line 1073:

> 1071:       // Only Last Value Initialized Assertion Predicates need to be killed and updated.
> 1072:       initialized_assertion_predicate.kill(_phase);
> 1073:     }

Only killing old Last Value Initialized Assertion Predicate

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21969#discussion_r1833814389
PR Review Comment: https://git.openjdk.org/jdk/pull/21969#discussion_r1833813957


More information about the hotspot-compiler-dev mailing list