RFR: 8320308: C2 compilation crashes in LibraryCallKit::inline_unsafe_access

Tobias Holenstein tholenstein at openjdk.org
Tue Sep 3 09:34:24 UTC 2024


On Mon, 26 Aug 2024 12:34:57 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> Is igvn run between incremental inlining and the crash? Or is that all part of a single incremental inlining sequence? 

No, IGVN is not run. Yes, it is all part of a single incremental inlining sequence

> In `LibraryCallKit::make_unsafe_address`, `base` is the `CheckCastPP`. What I don't quite understand is how we can get `top` out of `basic_plus_adr` if the `base` input is a `CheckCastPP`.

`base` is ` 147  CheckCastPP  === 136 71  [[ 150 149 ]]  #java/lang/Object * (speculative=byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * (inline_depth=2))  Oop:java/lang/Object * (speculative=byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * (inline_depth=2)) !jvms: Test::helperSmall @ bci:11 (line 23) Test::accessSmallArray @ bci:7 (line 29) Test::test2 @ bci:2 (line 38)
` before
https://github.com/openjdk/jdk/blob/34c6e0deac567c0f4ed08aa2824671551d843e95/src/hotspot/share/opto/library_call.cpp#L2090
and `1  Con  === 0  [[ ]]  #top` after. 
Then `base` is top when we call `basic_plus_adr(base, offset)` right after.

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

PR Comment: https://git.openjdk.org/jdk/pull/20033#issuecomment-2326049334


More information about the hotspot-compiler-dev mailing list