How to get rid of MethodHandle::linkTo* call when target method is known but not inlined?
Dean Long
dean.long at oracle.com
Thu Feb 12 01:09:17 UTC 2015
I'm not an expert, but it appears that we generate code for linkTo*
intrinsics using the assembler, so the compiler,
which is good at detecting compile-time constants, isn't allowed to do
what it's good at. What if we implement
all linkTo* intrinsics (or linkToStatic at least) using IR instead?
dl
On 2/11/2015 3:37 PM, Vladimir Ivanov wrote:
> Hi,
>
> I'm looking at JDK-8072008 [1]. The idea is to get rid of linkTo* call
> when MemberName is a compile-time constant, but target method isn't
> inlined. Direct call to target method is issued instead. It should
> help recursive calls, for example.
>
> The problem is that compiled call sites start in unlinked state and
> runtime lacks information to patch them with a correct method (what it
> sees during fixup is just a linkTo* call).
>
> The only way I see how to get call site linking working is to attach
> pre-resolved target method (Method*) to the nmethod and make fixup
> logic aware of it, so it can skip bytecode inspection step (in
> SharedRuntime::find_callee_info()).
>
> Do you see any problems with such approach?
> Any other ideas how to fix original problem?
>
> Thanks!
>
> Best regards,
> Vladimir Ivanov
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8072008
More information about the hotspot-compiler-dev
mailing list