RFR: 8332528: Generate code in SwitchBootstraps.generateTypeSwitch that require fewer adaptations [v3]
Jan Lahoda
jlahoda at openjdk.org
Thu May 23 09:50:02 UTC 2024
On Tue, 21 May 2024 09:01:32 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> We can fold the call to `Objects.checkIndex` into the code generated in generateTypeSwitchSkeleton instead of doing so by filtering the MH argument. This loads 9 less classes (of which 8 generated LFs and Species classes) on a minimal test, while being neutral on a throughput sanity test:
>>
>>
>> Name Cnt Base Error Test Error Unit Change
>> SwitchSanity.switchSum 15 8,162 ± 0,117 8,152 ± 0,131 ns/op 1,00x (p = 0,800 )
>> * = significant
>> ```
>>
>> A few additional optimizations includes moving some seldom used `findStatic` calls to a holder. All in all this means a reduction by 22M cycles to bootstrap a trivial switch expression on my M1.
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>
> Add type switch to HelloClasslist
Seems goo to me, with one nit related to `MethodTypeDescImpl`.
src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 53:
> 51: import java.lang.classfile.instruction.SwitchCase;
> 52:
> 53: import jdk.internal.constant.MethodTypeDescImpl;
Nit - this import seems to be unused, and neither seem to be the changes to `MethodTypeDescImpl`. Is there some use missing? (OTOH, I like the `StaticHolders` for the stuff that relates to the enum-switch special case, for the time being.)
-------------
PR Review: https://git.openjdk.org/jdk/pull/19307#pullrequestreview-2073448995
PR Review Comment: https://git.openjdk.org/jdk/pull/19307#discussion_r1611368747
More information about the core-libs-dev
mailing list