[jdk17] RFR: 8269285: Crash/miscompile in CallGenerator::for_method_handle_inline after JDK-8191998 [v2]

Vladimir Ivanov vlivanov at openjdk.java.net
Wed Jun 30 15:58:04 UTC 2021


On Wed, 30 Jun 2021 10:34:32 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> See the bug report for more details.
>> 
>> I believe the [JDK-8191998](https://bugs.openjdk.java.net/browse/JDK-8191998) change introduced a slight regression, where the speculative type join may empty the type. It would then crash on assert in `fastdebug` builds, or miscompile the null-check to `true` in `release` bits. New test captures both failure modes.
>> 
>> This is not a recent regression, but a regression nevertheless, so I would like to have that fix in JDK 17. Please review carefully, or speak up if you want to move it to JDK 18+ and then backport later.
>> 
>> Additional testing:
>>  - [x] New test fails without the patch, passes with it
>>  - [x] Linux x86_64 `fastdebug` `tier1`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Just filter signature interfaces

Also, another way to fix the immediate bug is to switch from `join_speculative` to `filter_speculative` which, among other things, tries to work around limitations imposed by interface types:

> p arg_type->dump()
byte[int:>=0]:exact * (speculative=byte[int:>=0]:NotNull:exact *)

> p sig_type->dump()
java/io/Serializable *

> p arg_type->join_speculative(sig_type)->dump()
java/lang/Object:AnyNull *,iid=top

> p arg_type->filter_speculative(sig_type)->dump()
java/io/Serializable *

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

PR: https://git.openjdk.java.net/jdk17/pull/169


More information about the hotspot-compiler-dev mailing list