From e64cf2b6f45548cc6ca8032761b7c3aecc25267c Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Sun, 28 Jun 2020 23:53:07 +0300 Subject: [PATCH] Removed the lazy class hack for the hierarchy based isObjCClass. Renamed name clashed signature based version of isObjCClass to hasInteropSuperClass (cherry picked from commit 7feb1dcc3d3a7b8aa0ec606c7966af2733fe1734) --- .../konan/serialization/KonanIrlinker.kt | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt index 8d566ef6bfa..2a1fd2a9ae4 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt @@ -32,7 +32,6 @@ import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl -import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass import org.jetbrains.kotlin.ir.descriptors.IrAbstractFunctionFactory import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.IrSymbol @@ -54,13 +53,13 @@ object KonanFakeOverrideClassFilter : PlatformFakeOverrideClassFilter { // This is an alternative to .isObjCClass that doesn't need to walk up all the class heirarchy, // rather it only looks at immediate super class symbols. - private fun IrClass.isObjCClass() = this.superTypes + private fun IrClass.hasInteropSuperClass() = this.superTypes .mapNotNull { it.classOrNull } .filter { it is IrPublicSymbolBase<*> } .any { it.signature.isInteropSignature() } override fun constructFakeOverrides(clazz: IrClass): Boolean { - return !clazz.isObjCClass() + return !clazz.hasInteropSuperClass() } } @@ -152,19 +151,6 @@ internal class KonanIrLinker( val symbolOwner = stubGenerator.generateMemberStub(descriptor) as IrSymbolOwner - // Make sure all class hierarchy is available, otherwise we won't be able - // to build fake overrides. - // TODO: we actually only need it to tell if class .isObjCClass - // So if we could come up with a way to tell without looking at class hierarchy - // this hack could be erased. - if (symbolOwner is IrLazyClass) { - symbolOwner.superTypes.forEach { - it.classOrNull?.let { - symbolTable.referenceClassFromLinker(it.descriptor, it.signature) - } - } - } - return symbolOwner.symbol }