From 8f4c6eae2fc32adaf9c5bfbe47c313e9e50d7ba3 Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Mon, 6 Mar 2023 12:32:37 +0100 Subject: [PATCH] [K/N] Get rid of ArrayAsList class, use .asList() instead ^KT-57137 --- .../org/jetbrains/kotlin/backend/konan/ir/Ir.kt | 3 --- .../backend/konan/lower/ReflectionSupport.kt | 9 +++------ .../kotlin/kotlin/native/internal/ArrayAsList.kt | 15 --------------- .../kotlin/native/internal/KTypeParameterImpl.kt | 7 +++---- 4 files changed, 6 insertions(+), 28 deletions(-) delete mode 100644 kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/ArrayAsList.kt diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt index 3e83b8b4ac8..f618b224a06 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt @@ -406,9 +406,6 @@ internal abstract class KonanSymbols( val kTypeImplForTypeParametersWithRecursiveBounds = internalClass("KTypeImplForTypeParametersWithRecursiveBounds") val kTypeProjectionList = internalClass("KTypeProjectionList") - - val arrayAsList = internalClass("ArrayAsList") - val threadLocal = topLevelClass(KonanFqNames.threadLocal) val sharedImmutable = topLevelClass(KonanFqNames.sharedImmutable) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt index 81a7907f2b4..eb062398fb7 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ReflectionSupport.kt @@ -108,7 +108,7 @@ internal class KTypeGenerator( val result = irConstantObject(symbols.kTypeParameterImpl.owner, mapOf( "name" to irConstantString(typeParameter.name.asString()), "containerFqName" to irConstantString(typeParameter.parentUniqueName), - "upperBounds" to irKTypeList(typeParameter.superTypes, leaveReifiedForLater, seenTypeParameters), + "upperBoundsArray" to irKTypeArray(typeParameter.superTypes, leaveReifiedForLater, seenTypeParameters), "varianceId" to irConstantInt(mapVariance(typeParameter.variance)), "isReified" to irConstantBoolean(typeParameter.isReified), )) @@ -122,18 +122,15 @@ internal class KTypeGenerator( else -> parent.fqNameForIrSerialization.asString() } - private fun IrBuilderWithScope.irKTypeList( + private fun IrBuilderWithScope.irKTypeArray( types: List, leaveReifiedForLater: Boolean, seenTypeParameters: MutableSet ): IrConstantValue { val itemType = symbols.kType.defaultType - val elements = irConstantArray(symbols.array.typeWith(itemType), + return irConstantArray(symbols.array.typeWith(itemType), types.map { irKType(it, leaveReifiedForLater, seenTypeParameters) } ) - return irConstantObject(symbols.arrayAsList.owner, mapOf( - "array" to elements - )) } // this constants are copypasted from KVarianceMapper.Companion in KTypeImpl.kt diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/ArrayAsList.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/ArrayAsList.kt deleted file mode 100644 index 151a8abc066..00000000000 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/ArrayAsList.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package kotlin.native.internal - -class ArrayAsList(val array: Array) : AbstractList(), RandomAccess { - override val size: Int get() = array.size - override fun isEmpty(): Boolean = array.isEmpty() - override fun contains(element: T): Boolean = array.contains(element) - override fun get(index: Int): T = array[index] - override fun indexOf(element: T): Int = array.indexOf(element) - override fun lastIndexOf(element: T): Int = array.lastIndexOf(element) -} \ No newline at end of file diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/KTypeParameterImpl.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/KTypeParameterImpl.kt index c4d80d72d77..6840a83c3fa 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/KTypeParameterImpl.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/KTypeParameterImpl.kt @@ -10,16 +10,15 @@ import kotlin.reflect.* internal class KTypeParameterImpl( override val name: String, private val containerFqName: String, - override val upperBounds: List, + private val upperBoundsArray: Array, val varianceId: Int, // mapping is used to make static initialization possible override val isReified: Boolean ) : KTypeParameter { + override val upperBounds: List + get() = upperBoundsArray.asList() override val variance: KVariance get() = KVarianceMapper.varianceById(varianceId)!! - constructor(name: String, containerFqName: String, upperBounds: List, variance: KVariance, isReified: Boolean) : - this(name, containerFqName, upperBounds, KVarianceMapper.idByVariance(variance), isReified) - override fun toString(): String = when (variance) { KVariance.INVARIANT -> "" KVariance.IN -> "in "