From 077ff4840aecbd0a35e950100467947c5697adb0 Mon Sep 17 00:00:00 2001 From: "sergey.bogolepov" Date: Mon, 28 Sep 2020 19:11:04 +0700 Subject: [PATCH] [Cache][ObjC] Do not access cached Obj-C metaclass via getter Obj-C metaclasses (that are represented as Kotlin companions) are handled with intrinsic in codegen so there is no need to call globalAccessor to access them. --- .../src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 8ef97b77dd5..6e8cf673575 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -353,6 +353,11 @@ internal val useInternalAbiPhase = makeKonanModuleOpPhase( if (!irClass.isCompanion || context.llvmModuleSpecification.containsDeclaration(irClass)) { return expression } + val parent = irClass.parentAsClass + if (parent.isObjCClass()) { + // Access to Obj-C metaclass is done via intrinsic. + return expression + } val accessor = accessors.getOrPut(irClass) { context.irFactory.buildFun { name = InternalAbi.getCompanionObjectAccessorName(irClass)