From 451fc8e9df002e9e6e9a4c4c87a4ffc4e515ec79 Mon Sep 17 00:00:00 2001 From: Alexander Shabalin Date: Mon, 5 Apr 2021 14:07:29 +0000 Subject: [PATCH] Fix enum isFrozen for wasm --- .../kotlin/backend/konan/lower/EnumClassLowering.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt index 014a1ef3820..9ae19036f7e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.backend.common.lower.irBlockBody import org.jetbrains.kotlin.backend.common.runOnFilePostfix import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.DECLARATION_ORIGIN_ENUM +import org.jetbrains.kotlin.backend.konan.MemoryModel import org.jetbrains.kotlin.backend.konan.llvm.IntrinsicType import org.jetbrains.kotlin.backend.konan.llvm.tryGetIntrinsicType import org.jetbrains.kotlin.descriptors.ClassKind @@ -303,6 +304,12 @@ internal class EnumClassLowering(val context: Context) : FileLoweringPass { else -> error("Unexpected initializer: $initializer") } } + // Needed for legacy MM targets that do not support threads. + if (this@EnumClassLowering.context.memoryModel != MemoryModel.EXPERIMENTAL) { + +irCall(this@EnumClassLowering.context.ir.symbols.freeze, listOf(arrayType)).apply { + extensionReceiver = irGet(receiver) + } + } } (constructor.body as IrBlockBody).statements += valuesInitializer }