From 235b51daffed2f05fdc8e181db76d54476bafa3c Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Mon, 13 Aug 2018 14:53:26 +0300 Subject: [PATCH] Fixed bug in DFG layout hash computation --- .../backend/konan/optimizations/DFGSerializer.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGSerializer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGSerializer.kt index 2ebe28f0518..e5f78889daa 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGSerializer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGSerializer.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.backend.konan.PrimitiveBinaryType import org.jetbrains.kotlin.config.CommonConfigurationKeys import sun.misc.Unsafe import kotlin.reflect.KClass -import kotlin.reflect.full.primaryConstructor +import kotlin.reflect.full.memberProperties import kotlin.reflect.jvm.jvmName internal class ExternalModulesDFG(val allTypes: List, @@ -760,14 +760,16 @@ internal object DFGSerializer { } if (kClass.java.isArray) return mergeHashes("array".hash, computeDataLayoutHash(kClass.java.componentType.kotlin)) - val propertiesHashes = kClass.primaryConstructor!!.parameters - .map { - val propHash = computeDataLayoutHash(it.type.classifier!! as KClass<*>) - if (it.type.isMarkedNullable) + val properties = kClass.memberProperties.sortedBy { it.name } + val propertyTypeHashes = + properties.map { + val propHash = computeDataLayoutHash(it.returnType.classifier!! as KClass<*>) + if (it.returnType.isMarkedNullable) mergeHashes("nullable".hash, propHash) else propHash } - return mergeHashes(propertiesHashes) + val propertyNameHashes = properties.map { it.name.hash } + return mergeHashes(propertyTypeHashes + propertyNameHashes) } private val DEBUG = 0