RFR: 8333793: Improve BootstrapMethodInvoker for ConstantBootstraps and ProxyGenerator [v3]

Claes Redestad redestad at openjdk.org
Thu Aug 15 20:10:01 UTC 2024


On Mon, 10 Jun 2024 10:09:38 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:
> 
>   Copy-paste error; CONDY_INVOKE returns Object. Fixes TestDynamicConstant.java

Since [JDK-8332457](https://bugs.openjdk.org/browse/JDK-8332457) was more or less backed out there's no obvious gain from parts of this patch. I'd like to rework it and add startup tests that verify the ConstantBootstraps. Closing for now.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19598#issuecomment-2292126179


More information about the core-libs-dev mailing list