diff --git a/runtime/src/main/kotlin/generated/_ArraysNative.kt b/runtime/src/main/kotlin/generated/_ArraysNative.kt index c1be4dee4ef..f3417426554 100644 --- a/runtime/src/main/kotlin/generated/_ArraysNative.kt +++ b/runtime/src/main/kotlin/generated/_ArraysNative.kt @@ -538,7 +538,8 @@ public actual fun CharArray.contentToString(): String { @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + @Suppress("UNCHECKED_CAST") + arrayCopy(this as Array, startIndex, destination as Array, destinationOffset, endIndex - startIndex) return destination } @@ -561,7 +562,7 @@ public actual fun Array.copyInto(destination: Array, destinationOf @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -584,7 +585,7 @@ public actual fun ByteArray.copyInto(destination: ByteArray, destinationOffset: @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -607,7 +608,7 @@ public actual fun ShortArray.copyInto(destination: ShortArray, destinationOffset @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -630,7 +631,7 @@ public actual fun IntArray.copyInto(destination: IntArray, destinationOffset: In @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -653,7 +654,7 @@ public actual fun LongArray.copyInto(destination: LongArray, destinationOffset: @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -676,7 +677,7 @@ public actual fun FloatArray.copyInto(destination: FloatArray, destinationOffset @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -699,7 +700,7 @@ public actual fun DoubleArray.copyInto(destination: DoubleArray, destinationOffs @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -722,7 +723,7 @@ public actual fun BooleanArray.copyInto(destination: BooleanArray, destinationOf @SinceKotlin("1.3") @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") public actual fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray { - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination } @@ -1237,7 +1238,7 @@ public actual operator fun Array.plus(elements: Array): Array { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1248,7 +1249,7 @@ public actual operator fun ByteArray.plus(elements: ByteArray): ByteArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1259,7 +1260,7 @@ public actual operator fun ShortArray.plus(elements: ShortArray): ShortArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1270,7 +1271,7 @@ public actual operator fun IntArray.plus(elements: IntArray): IntArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1281,7 +1282,7 @@ public actual operator fun LongArray.plus(elements: LongArray): LongArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1292,7 +1293,7 @@ public actual operator fun FloatArray.plus(elements: FloatArray): FloatArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1303,7 +1304,7 @@ public actual operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1314,7 +1315,7 @@ public actual operator fun BooleanArray.plus(elements: BooleanArray): BooleanArr val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } @@ -1325,7 +1326,7 @@ public actual operator fun CharArray.plus(elements: CharArray): CharArray { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result } diff --git a/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt b/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt index 9925d28e423..357e408dbe7 100644 --- a/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt +++ b/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt @@ -235,61 +235,56 @@ internal fun IntArray.fill(fromIndex: Int, toIndex: Int, value: Int) { @SymbolName("Kotlin_Array_copyImpl") @PointsTo(0b000100, 0, 0b000001) // points to , points to . -external private fun copyImpl(array: Array, fromIndex: Int, +internal external fun arrayCopy(array: Array, fromIndex: Int, destination: Array, toIndex: Int, count: Int) @SymbolName("Kotlin_ByteArray_copyImpl") -external private fun copyImpl(array: ByteArray, fromIndex: Int, - destination: ByteArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: ByteArray, fromIndex: Int, destination: ByteArray, toIndex: Int, count: Int) @SymbolName("Kotlin_ShortArray_copyImpl") -external private fun copyImpl(array: ShortArray, fromIndex: Int, - destination: ShortArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: ShortArray, fromIndex: Int, destination: ShortArray, toIndex: Int, count: Int) @SymbolName("Kotlin_CharArray_copyImpl") -external private fun copyImpl(array: CharArray, fromIndex: Int, - destination: CharArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: CharArray, fromIndex: Int, destination: CharArray, toIndex: Int, count: Int) @SymbolName("Kotlin_IntArray_copyImpl") -external private fun copyImpl(array: IntArray, fromIndex: Int, - destination: IntArray, toIndex: Int, count: Int) -@SymbolName("Kotlin_LongArray_copyImpl") -external private fun copyImpl(array: LongArray, fromIndex: Int, - destination: LongArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: IntArray, fromIndex: Int, destination: IntArray, toIndex: Int, count: Int) -// Note: [copyImpl] for an unsigned array is bitwise identical to signed type, so +@SymbolName("Kotlin_LongArray_copyImpl") +internal external fun arrayCopy(array: LongArray, fromIndex: Int, destination: LongArray, toIndex: Int, count: Int) + +// Note: [arrayCopy] for an unsigned array is bitwise identical to signed type, so // signed array implementations from runtime are directly reused for unsigned ones. @ExperimentalUnsignedTypes @SymbolName("Kotlin_ByteArray_copyImpl") -external private fun copyImpl(array: UByteArray, fromIndex: Int, - destination: UByteArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: UByteArray, fromIndex: Int, destination: UByteArray, toIndex: Int, count: Int) @ExperimentalUnsignedTypes @SymbolName("Kotlin_ShortArray_copyImpl") -external private fun copyImpl(array: UShortArray, fromIndex: Int, - destination: UShortArray, toIndex: Int, count: Int) +internal external fun arrayCopy(array: UShortArray, fromIndex: Int, destination: UShortArray, toIndex: Int, count: Int) @ExperimentalUnsignedTypes @SymbolName("Kotlin_IntArray_copyImpl") -external private fun copyImpl(array: UIntArray, fromIndex: Int, +internal external fun arrayCopy(array: UIntArray, fromIndex: Int, destination: UIntArray, toIndex: Int, count: Int) @ExperimentalUnsignedTypes @SymbolName("Kotlin_LongArray_copyImpl") -external private fun copyImpl(array: ULongArray, fromIndex: Int, +internal external fun arrayCopy(array: ULongArray, fromIndex: Int, destination: ULongArray, toIndex: Int, count: Int) + @SymbolName("Kotlin_FloatArray_copyImpl") -external private fun copyImpl(array: FloatArray, fromIndex: Int, +internal external fun arrayCopy(array: FloatArray, fromIndex: Int, destination: FloatArray, toIndex: Int, count: Int) @SymbolName("Kotlin_DoubleArray_copyImpl") -external private fun copyImpl(array: DoubleArray, fromIndex: Int, +internal external fun arrayCopy(array: DoubleArray, fromIndex: Int, destination: DoubleArray, toIndex: Int, count: Int) @SymbolName("Kotlin_BooleanArray_copyImpl") -external private fun copyImpl(array: BooleanArray, fromIndex: Int, +internal external fun arrayCopy(array: BooleanArray, fromIndex: Int, destination: BooleanArray, toIndex: Int, count: Int) /** @@ -299,65 +294,65 @@ external private fun copyImpl(array: BooleanArray, fromIndex: Int, @PublishedApi internal fun Array.copyRangeTo( destination: Array, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(@Suppress("UNCHECKED_CAST") (this as Array), fromIndex, + arrayCopy(@Suppress("UNCHECKED_CAST") (this as Array), fromIndex, @Suppress("UNCHECKED_CAST") (destination as Array), destinationIndex, toIndex - fromIndex) } internal fun ByteArray.copyRangeTo(destination: ByteArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun ShortArray.copyRangeTo(destination: ShortArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun CharArray.copyRangeTo(destination: CharArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun IntArray.copyRangeTo(destination: IntArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun LongArray.copyRangeTo(destination: LongArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } @SinceKotlin("1.3") @ExperimentalUnsignedTypes internal fun UByteArray.copyRangeTo(destination: UByteArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } @SinceKotlin("1.3") @ExperimentalUnsignedTypes internal fun UShortArray.copyRangeTo(destination: UShortArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } @SinceKotlin("1.3") @ExperimentalUnsignedTypes internal fun UIntArray.copyRangeTo(destination: UIntArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } @SinceKotlin("1.3") @ExperimentalUnsignedTypes internal fun ULongArray.copyRangeTo(destination: ULongArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun FloatArray.copyRangeTo(destination: FloatArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun DoubleArray.copyRangeTo(destination: DoubleArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun BooleanArray.copyRangeTo(destination: BooleanArray, fromIndex: Int, toIndex: Int, destinationIndex: Int = 0) { - copyImpl(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) + arrayCopy(this, fromIndex, destination, destinationIndex, toIndex - fromIndex) } internal fun Collection.collectionToString(): String {