From 09f5752b871a2e870dfc1bb57fda203515d26651 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Mon, 30 Mar 2015 14:30:30 +0200 Subject: Apply local variable index shift when inlining iinc instruction That was an oversight. Scalac never emits iinc, but it can appear when inlining from the classpath. --- src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala b/src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala index c827a097ea..1a51063231 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala @@ -332,6 +332,7 @@ class Inliner[BT <: BTypes](val btypes: BT) { val localVarShift = callsiteMethod.maxLocals clonedInstructions.iterator.asScala foreach { case varInstruction: VarInsnNode => varInstruction.`var` += localVarShift + case iinc: IincInsnNode => iinc.`var` += localVarShift case _ => () } -- cgit v1.2.3