On Fri, 3 Nov 2023 15:50:43 GMT, Rémi Forax <fo...@openjdk.org> wrote:

>> Jan Lahoda has updated the pull request incrementally with two additional 
>> commits since the last revision:
>> 
>>  - Some more get->orElseThrow
>>  - Reflecting review feedback.
>
> src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 429:
> 
>> 427:                         Label next = element.next();
>> 428:                         cb.labelBinding(element.target());
>> 429:                         if (element.caseLabel() instanceof Class<?> 
>> classLabel &&
> 
> I think you can do a if else of isPresent inside instanceof Class<?> to avoid 
> to reapeat the instanceof and store `classLabel.describeConstable()` into a 
> local variable.

Done, thanks.

> src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 437:
> 
>> 435:                             cb.aload(3);
>> 436:                             
>> cb.constantInstruction(extraClassLabels.size());
>> 437:                             cb.aaload();
> 
> Arrays are mutable in Java, so the VM can not know if the array of non 
> denotable classes (`extraClassLabels`) will be changed or not so the result 
> of aaload is not a constant so the call to isInstance can not be optimized. 
> Using a immutable list (`List.of()`) instead of an array should work, because 
> all the implementation of List.of() are using @Stable. In that case aaload 
> becomes invokevirtual List.get().

Done, thanks.

> src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 517:
> 
>> 515:                                                                         
>>       BiPredicate.class,
>> 516:                                                                         
>>       Class[].class));
>> 517:             return MethodHandles.insertArguments(typeSwitch, 2, new 
>> ResolvedEnumLabels(caller, enumDescs.toArray(s -> new EnumDesc<?>[s])),
> 
> you can use the method reference `EnumDesc[]::new`instead of `s -> new 
> EnumDesc<?>[s]` and same below Class[]::new  (the wirldcard should not be 
> necessary)

Done, thanks.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16489#discussion_r1381963834
PR Review Comment: https://git.openjdk.org/jdk/pull/16489#discussion_r1381963986
PR Review Comment: https://git.openjdk.org/jdk/pull/16489#discussion_r1381963719

Reply via email to