From b22fa985e0f258f09447fac7ad47a2a5e6ced380 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Fri, 22 Mar 2019 20:08:49 +0300 Subject: [PATCH] Increased unfold factor size for devirtualized vtable calls --- .../kotlin/backend/konan/optimizations/Devirtualization.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt index 4fd7b4491b8..d3c299f4a6c 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt @@ -1194,7 +1194,10 @@ internal object Devirtualization { val descriptor = expression.descriptor val owner = (descriptor.containingDeclaration as ClassDescriptor) - val maxUnfoldFactor = if (owner.isInterface) 3 else 1 + // TODO: Think how to evaluate different unfold factors (in terms of both execution speed and code size). + val classMaxUnfoldFactor = 3 + val interfaceMaxUnfoldFactor = 3 + val maxUnfoldFactor = if (owner.isInterface) interfaceMaxUnfoldFactor else classMaxUnfoldFactor if (possibleCallees.size > maxUnfoldFactor) { // Callsite too complicated to devirtualize. return expression