From 025a480247a9f2d9f56731a9831c7d98e8fdef16 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Fri, 1 Mar 2019 08:55:24 +0300 Subject: [PATCH] Using const val from module doesn't mean we had to run initializers anymore. --- .../kotlin/backend/konan/llvm/IrToBitcode.kt | 12 ++++++++---- .../konan/serialization/IrModuleSerializer.kt | 2 +- samples/gradle.properties | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index 65b742852a2..73ffa812cea 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -1425,11 +1425,15 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map) + } else { + if (context.config.threadsAreAllowed && value.symbol.owner.isMainOnlyNonPrimitive) { + functionGenerationContext.checkMainThread(currentCodeContext.exceptionHandler) + } + val ptr = context.llvmDeclarations.forStaticField(value.symbol.owner).storage + functionGenerationContext.loadSlot(ptr, value.descriptor.isVar()) } - val ptr = context.llvmDeclarations.forStaticField(value.symbol.owner).storage - return functionGenerationContext.loadSlot(ptr, value.descriptor.isVar()) } } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt index ef88b8fd2c4..805e30c7f61 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt @@ -1080,7 +1080,7 @@ internal class IrModuleSerializer( // Make sure that all top level properties are initialized on library's load. file.declarations .filterIsInstance() - .filter { it.backingField?.initializer != null } + .filter { it.backingField?.initializer != null && !it.isConst } .forEach { proto.addExplicitlyExportedToCompiler(serializeIrSymbol(it.backingField!!.symbol)) } file.acceptVoid(object: IrElementVisitorVoid { diff --git a/samples/gradle.properties b/samples/gradle.properties index 053a240e37a..7eac8dd49ac 100644 --- a/samples/gradle.properties +++ b/samples/gradle.properties @@ -6,3 +6,4 @@ kotlin_version=1.3.21 # Use custom Kotlin/Native home: org.jetbrains.kotlin.native.home=../../dist +org.gradle.workers.max=4