diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-08-23 08:52:06 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-08-23 08:52:06 +0000 |
commit | e176011b88ea92a0fa3142cd4fd7200c571b9117 (patch) | |
tree | 7590709c64bb0aedf8ea49de54cddb0da9fb4a82 | |
parent | b64d1956019b61244981562a088c9d2b633e61fc (diff) | |
download | scala-e176011b88ea92a0fa3142cd4fd7200c571b9117.tar.gz scala-e176011b88ea92a0fa3142cd4fd7200c571b9117.tar.bz2 scala-e176011b88ea92a0fa3142cd4fd7200c571b9117.zip |
Tweaks for better optimizations.
3 files changed, 9 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala index 9b145c9fbc..819182c3ba 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala @@ -389,8 +389,8 @@ abstract class TypeFlowAnalysis { val stack = out.stack if (settings.debug.value) { - Console.println("[before] Stack: " + stack); - Console.println(i); +// Console.println("[before] Stack: " + stack); +// Console.println(i); } i match { diff --git a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala index 28aadda14d..69bcae5312 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala @@ -102,7 +102,7 @@ abstract class ClosureElimination extends SubComponent { for (bb <- linearizer.linearize(m)) { var info = cpp.in(bb) - log("Cpp info at entry to block " + bb + ": " + info) + if (settings.debug.value) log("Cpp info at entry to block " + bb + ": " + info) for (i <- bb) { i match { diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala index b86e22787b..a2b24fe0cb 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala @@ -144,7 +144,11 @@ abstract class Inliners extends SubComponent { def isAvailable = icodes available receiver def isCandidate = isClosureClass(receiver) || concreteMethod.isEffectivelyFinal || receiver.isFinal def isApply = concreteMethod.name == nme.apply - def isCountable = !(isClosureClass(receiver) && isApply) // only count non-closures + def isCountable = !(isClosureClass(receiver) + || isApply + || isMonadicMethod(concreteMethod) + || receiver.enclosingPackage == definitions.RuntimePackage + ) // only count non-closures if (settings.debug.value) log("Treating " + i @@ -280,7 +284,7 @@ abstract class Inliners extends SubComponent { def isMonadic = isMonadicMethod(sym) def handlers = m.exh - def blocks = m.code.blocks + def blocks = if (m.code eq null) Predef.error("blocks = null + " + m) else m.code.blocks def locals = m.locals def length = blocks.length def openBlocks = blocks filterNot (_.closed) |