From ee484a40ff5771aa2b4da657e0428a7e021d0329 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Wed, 22 Feb 2017 15:18:39 +0300 Subject: [PATCH] Swapped order of operations in method table building (was a bug) --- .../konan/descriptors/ClassVtablesBuilder.kt | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassVtablesBuilder.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassVtablesBuilder.kt index 7fa24dcc83f..84f55edcf00 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassVtablesBuilder.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/ClassVtablesBuilder.kt @@ -93,21 +93,14 @@ internal class ClassVtablesBuilder(val classDescriptor: ClassDescriptor, val con return index } - private val ClassDescriptor.contributedMethodsWithOverridden: List - get() { - return contributedMethods.flatMap { method -> - method.allOverriddenDescriptors.map { OverriddenFunctionDescriptor(method, it) } - }.distinctBy { - Triple(it.overriddenDescriptor.functionName, it.descriptor, it.needBridge) - }.sortedBy { - it.overriddenDescriptor.functionName.localHash.value - } - } - val methodTableEntries: List by lazy { assert(!classDescriptor.isAbstract()) - classDescriptor.contributedMethodsWithOverridden.filter { it.canBeCalledVirtually } + classDescriptor.contributedMethods + .flatMap { method -> method.allOverriddenDescriptors.map { OverriddenFunctionDescriptor(method, it) } } + .filter { it.canBeCalledVirtually } + .distinctBy { Triple(it.overriddenDescriptor.functionName, it.descriptor, it.needBridge) } + .sortedBy { it.overriddenDescriptor.functionName.localHash.value } // TODO: probably method table should contain all accessible methods to improve binary compatibility }