RFR: 8284579: Improve VarHandle checks for interpreter [v2]
Claes Redestad
redestad at openjdk.java.net
Mon Apr 11 10:00:46 UTC 2022
On Mon, 11 Apr 2022 09:34:17 GMT, ExE Boss <duke at openjdk.java.net> wrote:
>> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Simplified as suggested by @ExE-Boss
>
> src/java.base/share/classes/java/lang/invoke/VarHandles.java line 719:
>
>> 717: // MethodHandle.linkToStatic(<LINK_TO_STATIC_ARGS>);
>> 718: // } else {
>> 719: // MethodHandle mh = handle.getMethodHandle(ad.mode);
>
> The `direct`‑ness check can be hoisted into an enclosing `if` statement:
> Suggestion:
>
> // if (direct) {
> // if (handle.vform.methodType_table[ad.type] == ad.symbolicMethodTypeErased) {
> // MethodHandle.linkToStatic(<LINK_TO_STATIC_ARGS>);
> // return;
> // } else if (handle.vform.getMethodType_V(ad.type) == ad.symbolicMethodTypeErased) {
> // MethodHandle.linkToStatic(<LINK_TO_STATIC_ARGS>);
> // return;
> // }
> // }
> // MethodHandle mh = handle.getMethodHandle(ad.mode);
>
>
> Also, any reason `GUARD_METHOD_TEMPLATE_V` uses `LINK_TO_STATIC_ARGS` instead of `LINK_TO_STATIC_ARGS_V`?
> How would the performance change if the `isDirect` and `checkExactAccessMode` merger was reverted?
Add around 15-20ns/op for these micros.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8160
More information about the core-libs-dev
mailing list