summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-03-30 14:30:30 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2015-04-01 08:35:32 +0200
commit09f5752b871a2e870dfc1bb57fda203515d26651 (patch)
tree26d30d990c50b11427bcdcfb4e835c2763b74c9e /src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala
parent638ed9108f10bcbebb69f2fefe05c7423c8bdfd7 (diff)
downloadscala-09f5752b871a2e870dfc1bb57fda203515d26651.tar.gz
scala-09f5752b871a2e870dfc1bb57fda203515d26651.tar.bz2
scala-09f5752b871a2e870dfc1bb57fda203515d26651.zip
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.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala1
1 files changed, 1 insertions, 0 deletions
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 _ => ()
}