summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-04-04 02:58:11 +0000
committerPaul Phillips <paulp@improving.org>2010-04-04 02:58:11 +0000
commit081df6755b92b9041de405d872987b98d28ef646 (patch)
tree21b14785a9c04b261d76e0036655499dc5895085 /src/compiler
parent86af709d76936e70c4454deceaa1805f751a0d60 (diff)
downloadscala-081df6755b92b9041de405d872987b98d28ef646.tar.gz
scala-081df6755b92b9041de405d872987b98d28ef646.tar.bz2
scala-081df6755b92b9041de405d872987b98d28ef646.zip
Nipped the infinite loop which is presently lau...
Nipped the infinite loop which is presently launched by an attempt to run test.continuations.suite with -optimise. No review.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/ICodes.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/ICodes.scala b/src/compiler/scala/tools/nsc/backend/icode/ICodes.scala
index 419edd8b83..0810a64f5d 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/ICodes.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/ICodes.scala
@@ -54,8 +54,18 @@ abstract class ICodes extends AnyRef
else
global.abort("Unknown linearizer: " + global.settings.Xlinearizer.value)
+ /** Have to be careful because dump calls around, possibly
+ * re-entering methods which initiated the dump (like foreach
+ * in BasicBlocks) which leads to the icode output olympics.
+ */
+ private var alreadyDumping = false
+
/** Print all classes and basic blocks. Used for debugging. */
+
def dump {
+ if (alreadyDumping) return
+ else alreadyDumping = true
+
val printer = new TextPrinter(new PrintWriter(Console.out, true),
new DumpLinearizer)