RFR: 8284579: Improve VarHandle checks for interpreter [v2]
Mandy Chung
mchung at openjdk.java.net
Fri Apr 8 22:45:33 UTC 2022
On Fri, 8 Apr 2022 12:20:32 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> A few additional enhancements aiming to improve VH performance in the interpreter:
>>
>> - Flatten `TypeAndInvokers`: adds a pointer to `VarHandle` (a small increase 40->48) but removes an object and an indirection on any instance actually used - and might avoid allocating the `MethodHandle[]` unnecessarily on some instances
>> - Have `checkExactAccessMode` return the directness of the `VarHandle` so that we can avoid some `isDirect` method calls.
>>
>> Baseline, `-Xint`
>>
>> Benchmark Mode Cnt Score Error Units
>> VarHandleExact.exact_exactInvocation avgt 30 478.324 ? 5.762 ns/op
>> VarHandleExact.generic_exactInvocation avgt 30 392.114 ? 1.644 ns/op
>> VarHandleExact.generic_genericInvocation avgt 30 822.484 ? 1.865 ns/op
>>
>>
>> Patched, `-Xint`
>>
>> Benchmark Mode Cnt Score Error Units
>> VarHandleExact.exact_exactInvocation avgt 30 437.704 ? 5.320 ns/op
>> VarHandleExact.generic_exactInvocation avgt 30 374.512 ? 3.154 ns/op
>> VarHandleExact.generic_genericInvocation avgt 30 757.054 ? 1.237 ns/op
>>
>>
>> No significant performance difference in normal mode.
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>
> Simplified as suggested by @ExE-Boss
The change looks fine. A `checkXXX` method if returning a boolean would typically indicate if it succeeds or not. `checkExactAccessMode` returns the directness of this VarHandle which is not obvious from its method name. It'd be better if the method name can be explicit that it returns its directness after the exact access mode check. But I can't think of a good method name though.
-------------
Marked as reviewed by mchung (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/8160
More information about the core-libs-dev
mailing list