RFR: 8287442: Reduce list to array conversions in java.lang.invoke.MethodHandles [v2]
Daniel Fuchs
dfuchs at openjdk.java.net
Thu Jun 2 14:29:26 UTC 2022
On Thu, 2 Jun 2022 13:59:50 GMT, Сергей Цыпанов <duke at openjdk.java.net> wrote:
>> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Review comments, eagerly convert sooner in tryFinally
>
> src/java.base/share/classes/java/lang/invoke/MethodHandles.java line 5462:
>
>> 5460: Objects.requireNonNull(target);
>> 5461: Objects.requireNonNull(newTypes);
>> 5462: return dropArgumentsToMatch(target, skip, newTypes.toArray(new Class<?>[0]).clone(), pos, false);
>
> Do we really need to clone an array returned from `List.toArray()`? As far as I know from the JavaDoc of `List` if the passed array is not long enough to include all the items then the new array must be allocated. Here we always pass empty arrays, so the new ones are returned from `toArray()` method and we don't need `clone()`, right?
The clone is needed - as the `List<Class<?>>` may be a custom implementation of List - so you cannot make any assumption on the concrete implementation of `toArray`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8923
More information about the core-libs-dev
mailing list