- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
144 lines
5.4 KiB
Java
144 lines
5.4 KiB
Java
package kotlin.jvm.internal;
|
|
|
|
import java.lang.reflect.Array;
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.functions.Function2;
|
|
|
|
@SourceDebugExtension({"SMAP\nCollectionToArray.kt\nKotlin\n*S Kotlin\n*F\n+ 1 CollectionToArray.kt\nkotlin/jvm/internal/CollectionToArray\n+ 2 ArrayIntrinsics.kt\nkotlin/ArrayIntrinsicsKt\n*L\n1#1,88:1\n63#1,22:89\n63#1,22:111\n26#2:133\n*S KotlinDebug\n*F\n+ 1 CollectionToArray.kt\nkotlin/jvm/internal/CollectionToArray\n*L\n22#1:89,22\n37#1:111,22\n14#1:133\n*E\n"})
|
|
/* loaded from: classes5.dex */
|
|
public final class CollectionToArray {
|
|
private static final Object[] EMPTY = new Object[0];
|
|
private static final int MAX_SIZE = 2147483645;
|
|
|
|
public static final Object[] toArray(Collection<?> collection, Object[] objArr) {
|
|
Object[] objArr2;
|
|
Intrinsics.checkNotNullParameter(collection, "collection");
|
|
objArr.getClass();
|
|
int size = collection.size();
|
|
int i = 0;
|
|
if (size == 0) {
|
|
if (objArr.length <= 0) {
|
|
return objArr;
|
|
}
|
|
objArr[0] = null;
|
|
return objArr;
|
|
}
|
|
Iterator<?> it = collection.iterator();
|
|
if (!it.hasNext()) {
|
|
if (objArr.length <= 0) {
|
|
return objArr;
|
|
}
|
|
objArr[0] = null;
|
|
return objArr;
|
|
}
|
|
if (size <= objArr.length) {
|
|
objArr2 = objArr;
|
|
} else {
|
|
Object newInstance = Array.newInstance(objArr.getClass().getComponentType(), size);
|
|
Intrinsics.checkNotNull(newInstance, "null cannot be cast to non-null type kotlin.Array<kotlin.Any?>");
|
|
objArr2 = (Object[]) newInstance;
|
|
}
|
|
while (true) {
|
|
int i2 = i + 1;
|
|
objArr2[i] = it.next();
|
|
if (i2 >= objArr2.length) {
|
|
if (!it.hasNext()) {
|
|
return objArr2;
|
|
}
|
|
int i3 = ((i2 * 3) + 1) >>> 1;
|
|
if (i3 <= i2) {
|
|
i3 = MAX_SIZE;
|
|
if (i2 >= MAX_SIZE) {
|
|
throw new OutOfMemoryError();
|
|
}
|
|
}
|
|
objArr2 = Arrays.copyOf(objArr2, i3);
|
|
Intrinsics.checkNotNullExpressionValue(objArr2, "copyOf(...)");
|
|
} else if (!it.hasNext()) {
|
|
if (objArr2 == objArr) {
|
|
objArr[i2] = null;
|
|
return objArr;
|
|
}
|
|
Object[] copyOf = Arrays.copyOf(objArr2, i2);
|
|
Intrinsics.checkNotNullExpressionValue(copyOf, "copyOf(...)");
|
|
return copyOf;
|
|
}
|
|
i = i2;
|
|
}
|
|
}
|
|
|
|
public static final Object[] toArray(Collection<?> collection) {
|
|
Intrinsics.checkNotNullParameter(collection, "collection");
|
|
int size = collection.size();
|
|
if (size != 0) {
|
|
Iterator<?> it = collection.iterator();
|
|
if (it.hasNext()) {
|
|
Object[] objArr = new Object[size];
|
|
int i = 0;
|
|
while (true) {
|
|
int i2 = i + 1;
|
|
objArr[i] = it.next();
|
|
if (i2 >= objArr.length) {
|
|
if (!it.hasNext()) {
|
|
return objArr;
|
|
}
|
|
int i3 = ((i2 * 3) + 1) >>> 1;
|
|
if (i3 <= i2) {
|
|
i3 = MAX_SIZE;
|
|
if (i2 >= MAX_SIZE) {
|
|
throw new OutOfMemoryError();
|
|
}
|
|
}
|
|
objArr = Arrays.copyOf(objArr, i3);
|
|
Intrinsics.checkNotNullExpressionValue(objArr, "copyOf(...)");
|
|
} else if (!it.hasNext()) {
|
|
Object[] copyOf = Arrays.copyOf(objArr, i2);
|
|
Intrinsics.checkNotNullExpressionValue(copyOf, "copyOf(...)");
|
|
return copyOf;
|
|
}
|
|
i = i2;
|
|
}
|
|
}
|
|
}
|
|
return EMPTY;
|
|
}
|
|
|
|
private static final Object[] toArrayImpl(Collection<?> collection, Function0 function0, Function1 function1, Function2 function2) {
|
|
int size = collection.size();
|
|
if (size == 0) {
|
|
return (Object[]) function0.invoke();
|
|
}
|
|
Iterator<?> it = collection.iterator();
|
|
if (!it.hasNext()) {
|
|
return (Object[]) function0.invoke();
|
|
}
|
|
Object[] objArr = (Object[]) function1.invoke(Integer.valueOf(size));
|
|
int i = 0;
|
|
while (true) {
|
|
int i2 = i + 1;
|
|
objArr[i] = it.next();
|
|
if (i2 >= objArr.length) {
|
|
if (!it.hasNext()) {
|
|
return objArr;
|
|
}
|
|
int i3 = ((i2 * 3) + 1) >>> 1;
|
|
if (i3 <= i2) {
|
|
i3 = MAX_SIZE;
|
|
if (i2 >= MAX_SIZE) {
|
|
throw new OutOfMemoryError();
|
|
}
|
|
}
|
|
objArr = Arrays.copyOf(objArr, i3);
|
|
Intrinsics.checkNotNullExpressionValue(objArr, "copyOf(...)");
|
|
} else if (!it.hasNext()) {
|
|
return (Object[]) function2.invoke(objArr, Integer.valueOf(i2));
|
|
}
|
|
i = i2;
|
|
}
|
|
}
|
|
}
|