diff options
Diffstat (limited to 'src')
3 files changed, 8 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Members.scala b/src/compiler/scala/tools/nsc/backend/icode/Members.scala index 7e08fedce0..ac503bd1e2 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/Members.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/Members.scala @@ -90,6 +90,8 @@ trait Members requires ICodes { visited += b -> true; } else blockToVisit = xs; + case _ => + error("impossible match") } } } diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala index 3364f94e28..ec39086663 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala @@ -245,6 +245,7 @@ abstract class CopyPropagation { case _ => out.bindings += LocalVar(local) -> v; } + case Nil => error("Incorrect icode. Expecting something on the stack.") } out.stack = out.stack drop 1; @@ -363,7 +364,7 @@ abstract class CopyPropagation { */ final def cleanReferencesTo(s: copyLattice.State, target: Location): Unit = { def cleanRecord(r: Record): Record = { - r.bindings filter { case Pair(loc, value) => + r.bindings retain { case Pair(loc, value) => value match { case Deref(loc1) if (loc1 == target) => false case _ => true @@ -378,7 +379,7 @@ abstract class CopyPropagation { case _ => v }} - s.bindings filter { case Pair(loc, value) => + s.bindings retain { case Pair(loc, value) => (value match { case Deref(loc1) if (loc1 == target) => false case Record(_, _) => @@ -414,7 +415,7 @@ abstract class CopyPropagation { case _ => v }} - s.bindings filter { case Pair(loc, value) => + s.bindings retain { case Pair(loc, value) => value match { case Deref(Field(_, _)) => false case _ => true diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index 3ada583b2c..c719a939bb 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -37,7 +37,7 @@ abstract class GenJVM extends SubComponent { class JvmPhase(prev: Phase) extends StdPhase(prev) { override def erasedTypes = true - val codeGenerator = new BytecodeGenerator + object codeGenerator extends BytecodeGenerator override def run: Unit = { if (settings.debug.value) inform("[running phase " + name + " on icode]") @@ -85,7 +85,7 @@ abstract class GenJVM extends SubComponent { var jmethod: JMethod = _ var jcode: JExtendedCode = _ - var innerClasses: Set[Symbol] = ListSet.Empty // referenced inner classes + var innerClasses: Set[Symbol] = ListSet.empty // referenced inner classes val fjbgContext = if (settings.target.value == "jvm-1.5") new FJBGContext(49, 0) |