RFR: 8294609: C2: Improve inlining of methods with unloaded signature classes
Vladimir Kozlov
kvn at openjdk.org
Thu Sep 29 19:18:24 UTC 2022
On Thu, 29 Sep 2022 18:42:49 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
> C2 bails out an inlining attempt when the callee method mentions an unloaded
> class in its signature (either as an argument or return type).
>
> The current check is too strict (and caused problems in the past [1]) since it
> doesn't take into account whether the problematic class is loaded in the caller
> context. It's safe to relax the original check in such a way because class
> loader constratints ensure that both caller and callee agree on the signature
> classes.
>
> (I believe the aforementioned check [2] is redundant and can be removed even when
> the class is not yet loaded, but I'll explore it separately.)
>
> Testing: hs-tier1 - hs-tier4
>
> [1] https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2020-June/038604.html
> [2] https://github.com/openjdk/jdk/blob/5f6ad926d7ea763bf61aa98c7be7087a7aa6089c/src/hotspot/share/opto/bytecodeInfo.cpp#L226
Can you explain why C2's type system has better `loaded` state of class than VM's runtime?
Does C2 updates this state during compilation?
I assume when we taking CI snapshot of these types they are matching types in VM's runtime.
-------------
PR: https://git.openjdk.org/jdk/pull/10496
More information about the hotspot-compiler-dev
mailing list