From d79875ac7ccdab77444fbf9e57a886082dddae2f Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Sat, 15 Apr 2017 22:43:51 +0300 Subject: [PATCH] A couple of functions in stdlib are marked with @InlineExposed. --- .../jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt | 5 +++++ runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt | 3 ++- runtime/src/main/kotlin/kotlin/collections/Maps.kt | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt index 233d52c01b9..b2fd656c3cf 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/BinaryInterface.kt @@ -57,6 +57,9 @@ internal tailrec fun DeclarationDescriptor.isExported(): Boolean { if (this.annotations.hasAnnotation(publishedApiAnnotation)){ return true } + if (this.annotations.hasAnnotation(inlineExposedAnnotation)){ + return true + } if (this is ConstructorDescriptor && constructedClass.kind.isSingleton) { @@ -87,6 +90,8 @@ private val exportForCompilerAnnotation = FqName("konan.internal.ExportForCompil private val publishedApiAnnotation = FqName("kotlin.PublishedApi") +private val inlineExposedAnnotation = FqName("kotlin.internal.InlineExposed") + private fun acyclicTypeMangler(visited: MutableSet, type: KotlinType): String { val descriptor = TypeUtils.getTypeParameterDescriptorOrNull(type) if (descriptor != null) { diff --git a/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt b/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt index ce412e16792..e1f0f2b2135 100644 --- a/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt +++ b/runtime/src/main/kotlin/kotlin/collections/ArrayUtil.kt @@ -21,6 +21,7 @@ package kotlin.collections * Attempts to read _uninitialized_ values from this array work in implementation-dependent manner, * either throwing exception or returning some kind of implementation-specific default value. */ +@kotlin.internal.InlineExposed internal fun arrayOfUninitializedElements(size: Int): Array { // TODO: special case for size == 0? return Array(size) @@ -306,4 +307,4 @@ internal fun Collection.collectionToString(): String { } sb.append("]") return sb.toString() -} \ No newline at end of file +} diff --git a/runtime/src/main/kotlin/kotlin/collections/Maps.kt b/runtime/src/main/kotlin/kotlin/collections/Maps.kt index 6ac1016d914..c13953c35f7 100644 --- a/runtime/src/main/kotlin/kotlin/collections/Maps.kt +++ b/runtime/src/main/kotlin/kotlin/collections/Maps.kt @@ -582,7 +582,7 @@ public inline operator fun MutableMap.plusAssign(map: Map Map.optimizeReadOnlyMap() = when (size) { 0 -> emptyMap() // 1 -> toSingletonMapOrSelf()