RFR: 8305637: Remove Opaque1 nodes for Parse Predicates and clean up useless predicate elimination [v2]

Roland Westrelin roland at openjdk.org
Wed Aug 30 14:43:14 UTC 2023


On Tue, 29 Aug 2023 08:39:39 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:

>> This is the last clean-up PR before the complete fix for Assertion Predicates ([JDK-8288981](https://bugs.openjdk.org/browse/JDK-8288981)). 
>> 
>> This patch includes:
>> - Removal of `ConI`->`Opaque1`->`Conv2B` input nodes for `ParsePredicateNodes` with the following additional changes:
>>   - Adjusting `ParsePredicateNode` to block unwanted optimizations (added empty `ParsePredicateNode::Ideal()`).
>>   - Changing `Compile::_parse_predicate_opaqs` to not store `Opaque1Nodes` to keep track of Parse Predicates but instead storing `ParsePredicateNodes` directly. Renamed to `Compile::_parse_predicates` and adjusted related methods.
>>   - Removed asserts matching `Opaque1` -> `Conv2B` shape.
>> - Cleaning up `eliminate_useless_predicates()`:
>>   - Adjust code to find useful/useless Parse Predicates with the new `Compile::_parse_predicates` list with `ParsePredicateNodes` instead of `Opaque1Nodes`.
>>   - Changing `ParsePredicateNode` to carry a `_useless` state which simplifies the elimination of useless predicates with `eliminate_useless_predicates()` and during IGVN (added `ParsePredicateNode::Value()` for that which also removes the predicate once we are in post loop opts IGVN). 
>> - Some refactoring/clean-ups of involved code.
>>   
>> Testing: tier1-7 + some fuzzer testing
>> 
>> Thanks,
>> Christian
>
> Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
> 
>   remove hash_delete()

Looks good to me.

src/hotspot/share/opto/multnode.cpp line 226:

> 224: 
> 225:   // we need a ParsePredicate node for predicate reasons
> 226:   if (reason != Deoptimization::Reason_none && !iff->is_ParsePredicate()) {

Unrelated to your change but this code doesn't seem to do what the comment says. `reason != Deoptimization::Reason_none` is not "predicate reasons". I think this needs to be cleaned up at some point.

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

Marked as reviewed by roland (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/15449#pullrequestreview-1602873411
PR Review Comment: https://git.openjdk.org/jdk/pull/15449#discussion_r1310387192


More information about the hotspot-compiler-dev mailing list