RFR: 8333793: Improve BootstrapMethodInvoker for ConstantBootstraps and ProxyGenerator [v2]
Chen Liang
liach at openjdk.org
Sat Jun 8 13:18:13 UTC 2024
On Fri, 7 Jun 2024 18:58:36 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> This PR refactors type matching in BootstrapMethodInvoker and adds a few types, seeking to improve bootstrap overheads of some ConstantBootstraps and in particular the ProxyGenerator condys generated for e.g. annotation proxies since [JDK-8332457](https://bugs.openjdk.org/browse/JDK-8332457)
>>
>> I've adjusted the micro-benchmark added by JDK-8332457 to not only generate a proxy but also call into one of the proxied methodt (`Object::hashCode`).
>>
>> Running org.openjdk.bench.java.lang.reflect.ProxyGenBench as a one-off startup benchmark sees significant improvement (-9% instructions, -6% cycles):
>>
>> Name Cnt Base Error Test Error Unit Change
>> Perfstartup-JMH 20 154,000 ± 8,165 148,000 ± 23,164 ms/op 1,04x (p = 0,352 )
>> :.cycles 925335973,200 ± 47147600,262 842221278,800 ± 46836254,964 cycles 0,91x (p = 0,000*)
>> :.instructions 2101588857,600 ± 81105850,361 1966307798,400 ± 22011043,908 instructions 0,94x (p = 0,000*)
>> :.taskclock 291,500 ± 16,494 262,000 ± 15,328 ms 0,90x (p = 0,000*)
>> * = significant
>>
>> Number of classes loaded drops from 1096 to 1092
>>
>> Running the micro regularly shows no significant difference:
>>
>> Name Cnt Base Error Test Error Unit Change
>> ProxyGenBench.generateAndProxy100 10 26,827 ± 8,954 26,855 ± 7,531 ms/op 1,00x (p = 0,991 )
>> * = significant
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>
> Adress review comments, add ConstantBootstraps#invoke to list of recognized type signatures
I think Jorn is recommending to use invokeBasic with erased types as how LambdaForm does it. We can try that approach, but we need new tests to verify that bootstrap method type mismatches throw the same exceptions, so that should be another RFE.
-------------
Marked as reviewed by liach (Author).
PR Review: https://git.openjdk.org/jdk/pull/19598#pullrequestreview-2105846859
More information about the core-libs-dev
mailing list