On Fri, 23 Aug 2024 12:34:17 GMT, Claes Redestad <redes...@openjdk.org> wrote:

> This PR refactors SwitchBootstraps so that extra EnumDescs and classes are 
> only passed into bootstraps when needed. Benchmarking shows that in many 
> cases these are not needed, and avoiding passing them (via binding in the 
> lists via `MethodHandle::insertArguments`) avoids some auxiliary MH 
> combinator generation during bootstrap. 
> 
> Additional cleanups and refactoring further reduce bootstrap overhead and 
> number of classes loaded.

src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 85:

> 83:     private static final boolean previewEnabled = 
> PreviewFeatures.isEnabled();
> 84: 
> 85:     private static final ClassDesc CD_BiPredicate = 
> referenceClassDesc(BiPredicate.class);

This can use `ReferenceClassDescImpl​::ofValidated​(String)`, which also avoids 
going through `Class​::descriptorString()` for a statically known class 
descriptor:
Suggestion:

    private static final ClassDesc CD_BiPredicate = 
ReferenceClassDescImpl.ofValidated("Ljava/util/function/BiPredicate;");

src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 97:

> 95:             ConstantDescs.CD_int,
> 96:             CD_BiPredicate,
> 97:             ConstantDescs.CD_List);

These can use `MethodTypeDescImpl​::ofValidated(…)`:
Suggestion:

    private static final MethodTypeDesc MTD_TYPE_SWITCH = 
MethodTypeDescImpl.ofValidated(ConstantDescs.CD_int,
            ConstantDescs.CD_Object,
            ConstantDescs.CD_int);
    private static final MethodTypeDesc MTD_TYPE_SWITCH_EXTRA = 
MethodTypeDescImpl.ofValidated(ConstantDescs.CD_int,
            ConstantDescs.CD_Object,
            ConstantDescs.CD_int,
            CD_BiPredicate,
            ConstantDescs.CD_List);

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20693#discussion_r1729952813
PR Review Comment: https://git.openjdk.org/jdk/pull/20693#discussion_r1729952571

Reply via email to