diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:11:50 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:11:50 -0800 |
commit | 5616005c831dabd80900a736d1479d17a906f27b (patch) | |
tree | dbf735faab556345eb8273bed1dcb8918cda7ca1 /src/compiler | |
parent | 6a724a0723d249656ca73b31a6f98dd01edb25f2 (diff) | |
parent | d99b7f4e1c848bb749206f36b4bbaa17f24fa2e4 (diff) | |
download | scala-5616005c831dabd80900a736d1479d17a906f27b.tar.gz scala-5616005c831dabd80900a736d1479d17a906f27b.tar.bz2 scala-5616005c831dabd80900a736d1479d17a906f27b.zip |
Merge pull request #1692 from retronym/ticket/6547-2
SI-6547: elide box unbox pair only when primitives match
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala index bb14c3dce0..23f932b5b4 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala @@ -147,18 +147,18 @@ abstract class ClosureElimination extends SubComponent { case _ => } - case UNBOX(_) => + case UNBOX(boxType) => info.stack match { case Deref(LocalVar(loc1)) :: _ if info.bindings isDefinedAt LocalVar(loc1) => val value = info.getBinding(loc1) value match { - case Boxed(LocalVar(loc2)) => + case Boxed(LocalVar(loc2)) if loc2.kind == boxType => bb.replaceInstruction(i, DROP(icodes.ObjectReference) :: valueToInstruction(info.getBinding(loc2)) :: Nil) debuglog("replaced " + i + " with " + info.getBinding(loc2)) case _ => () } - case Boxed(LocalVar(loc1)) :: _ => + case Boxed(LocalVar(loc1)) :: _ if loc1.kind == boxType => val loc2 = info.getAlias(loc1) bb.replaceInstruction(i, DROP(icodes.ObjectReference) :: valueToInstruction(Deref(LocalVar(loc2))) :: Nil) debuglog("replaced " + i + " with " + LocalVar(loc2)) |