diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt index 34b48803b92..c8c4958c416 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt @@ -456,7 +456,7 @@ internal object Devirtualization { } context.logMultiple { - val edgesCount = constraintGraph.nodes.sumBy { + val edgesCount = constraintGraph.nodes.sumOf { (directEdges[it.id + 1] - directEdges[it.id]) + (it.directCastEdges?.size ?: 0) } +"CONSTRAINT GRAPH: ${constraintGraph.nodes.size} nodes, $edgesCount edges" @@ -773,12 +773,12 @@ internal object Devirtualization { private val preliminaryNumberOfNodes = allTypes.size + // A possible source node for each type. functions.size * 2 + // and nodes for each function. - functions.values.sumBy { - it.body.allScopes.sumBy { it.nodes.size } // A node for each DataFlowIR.Node. + functions.values.sumOf { + it.body.allScopes.sumOf { it.nodes.size } // A node for each DataFlowIR.Node. } + functions.values - .sumBy { function -> - function.body.allScopes.sumBy { + .sumOf { function -> + function.body.allScopes.sumOf { it.nodes.count { node -> // A cast if types are different. node is DataFlowIR.Node.Call