8156071: List.of: reduce array copying during creation

Reviewed-by: psandoz, redestad
This commit is contained in:
Stuart Marks 2020-10-05 17:00:57 +00:00
parent ea27a54bf0
commit 88d75c9ad5
6 changed files with 203 additions and 18 deletions

View file

@ -842,7 +842,7 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3) {
return new ImmutableCollections.ListN<>(e1, e2, e3);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3);
}
/**
@ -861,7 +861,7 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4);
}
/**
@ -881,7 +881,7 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5);
}
/**
@ -902,8 +902,8 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5,
e6);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5,
e6);
}
/**
@ -925,8 +925,8 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5,
e6, e7);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5,
e6, e7);
}
/**
@ -949,8 +949,8 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5,
e6, e7, e8);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5,
e6, e7, e8);
}
/**
@ -974,8 +974,8 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5,
e6, e7, e8, e9);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5,
e6, e7, e8, e9);
}
/**
@ -1000,8 +1000,8 @@ public interface List<E> extends Collection<E> {
* @since 9
*/
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) {
return new ImmutableCollections.ListN<>(e1, e2, e3, e4, e5,
e6, e7, e8, e9, e10);
return ImmutableCollections.ListN.fromTrustedArray(e1, e2, e3, e4, e5,
e6, e7, e8, e9, e10);
}
/**
@ -1042,7 +1042,7 @@ public interface List<E> extends Collection<E> {
case 2:
return new ImmutableCollections.List12<>(elements[0], elements[1]);
default:
return new ImmutableCollections.ListN<>(elements);
return ImmutableCollections.ListN.fromArray(elements);
}
}