RFR: 8299444 java.util.Set.copyOf allocates needlessly for empty input collections [v2]
Stuart Marks
smarks at openjdk.org
Mon Jan 9 18:29:57 UTC 2023
On Mon, 9 Jan 2023 08:33:09 GMT, Viktor Klang <duke at openjdk.org> wrote:
>> Currently Set.copyOf allocates both a HashSet and a new empty array when the input collection is empty.
>>
>> This patch avoids allocating anything for the case where the parameter collection's isEmpty returns true.
>
> Viktor Klang has updated the pull request incrementally with two additional commits since the last revision:
>
> - 8299444: java.util.Set.copyOf allocates needlessly for empty input collections
>
> Modifies ImmutableCollections.listCopy:
> Introduces a check for isEmpty to avoid allocation in the case of an empty input collection.
> - 8299444: java.util.Set.copyOf allocates needlessly for empty input collections
>
> Modifies Map.copyOf:
> Introduces a check for isEmpty to avoid allocation in the case of an empty input Map.
src/java.base/share/classes/java/util/ImmutableCollections.java line 169:
> 167: @SuppressWarnings("unchecked")
> 168: static <E> List<E> listCopy(Collection<? extends E> coll) {
> 169: if (coll instanceof List12 || (coll instanceof ListN && ! ((ListN<?>)coll).allowNulls)) {
Maybe replace the cast with an instanceof pattern here?
-------------
PR: https://git.openjdk.org/jdk/pull/11847
More information about the core-libs-dev
mailing list