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