From c1a51d44a47eedfafaa3795269f7322e795a2c3c Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 28 Dec 2018 02:57:12 +0300 Subject: [PATCH] Rewrite copyInto without using copyRangeTo Rename array copying implementation to arrayCopy --- .../tools/kotlin-stdlib-gen/src/templates/Arrays.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt index 6423e4d015a..4093b47ecaa 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt @@ -611,7 +611,7 @@ object ArrayOps : TemplateGroupBase() { val thisSize = size val arraySize = elements.size val result = copyOfUninitializedElements(thisSize + arraySize) - elements.copyRangeTo(result, 0, arraySize, thisSize) + elements.copyInto(result, thisSize) return result """ } @@ -687,10 +687,19 @@ object ArrayOps : TemplateGroupBase() { suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") body { """ - this.copyRangeTo(destination, startIndex, endIndex, destinationOffset) + arrayCopy(this, startIndex, destination, destinationOffset, endIndex - startIndex) return destination """ } + specialFor(InvariantArraysOfObjects) { + body { + """ + @Suppress("UNCHECKED_CAST") + arrayCopy(this as Array, startIndex, destination as Array, destinationOffset, endIndex - startIndex) + return destination + """ + } + } } } }