From f1183d98a947821fd728ff6d44453b09640cca5d Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 22 Jun 2017 10:16:36 +0300 Subject: [PATCH] Fix complexity formula for SourceInterpreter It is actually N^2 * F (VERY pessimistic case), N = number of instructions F = frame size because frames contain sets of instructions. --- .../kotlin/codegen/optimization/OptimizationMethodVisitor.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt index 0ec974a7c84..030a3faefe3 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt @@ -67,7 +67,8 @@ class OptimizationMethodVisitor( fun canBeOptimizedUsingSourceInterpreter(node: MethodNode): Boolean { val frameSize = node.maxLocals + node.maxStack - val totalFramesSizeMb = node.instructions.size().toLong() * frameSize * frameSize / (1024 * 1024) + val methodSize = node.instructions.size().toLong() + val totalFramesSizeMb = methodSize * methodSize * frameSize / (1024 * 1024) return totalFramesSizeMb < MEMORY_LIMIT_BY_METHOD_MB } }