diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2015-03-30 14:30:30 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2015-04-01 08:35:32 +0200 |
commit | 09f5752b871a2e870dfc1bb57fda203515d26651 (patch) | |
tree | 26d30d990c50b11427bcdcfb4e835c2763b74c9e /src | |
parent | 638ed9108f10bcbebb69f2fefe05c7423c8bdfd7 (diff) | |
download | scala-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')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/opt/Inliner.scala | 1 |
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 _ => () } |