Optimized toArray method for ArrayDeque and ListBuilder #KT-42720

This commit is contained in:
Abduqodiri Qurbonzoda
2021-01-22 13:12:50 +03:00
parent c2f6a2cb96
commit 421cb6971d
8 changed files with 194 additions and 23 deletions
@@ -133,7 +133,25 @@ public actual open class ArrayList<E> internal constructor(private var array: Ar
actual override fun lastIndexOf(element: E): Int = array.lastIndexOf(element)
override fun toString() = arrayToString(array)
override fun toArray(): Array<Any?> = js("[]").slice.call(array)
@Suppress("UNCHECKED_CAST")
override fun <T> toArray(array: Array<T>): Array<T> {
if (array.size < size) {
return toArray() as Array<T>
}
(this.array as Array<T>).copyInto(array)
if (array.size > size) {
array[size] = null as T // null-terminate
}
return array
}
override fun toArray(): Array<Any?> {
return js("[]").slice.call(array)
}
internal override fun checkIsMutable() {