diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2007-03-21 19:25:44 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2007-03-21 19:25:44 +0000 |
commit | 6a2134b1b056da1c32115b4ab87e11c7b78b53ab (patch) | |
tree | 21a7f25e9118098af611356f21b59f68a2e84fcc /src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala | |
parent | 1052ad2f1ea1d162f65c3e3663a54d44e5566578 (diff) | |
download | scala-6a2134b1b056da1c32115b4ab87e11c7b78b53ab.tar.gz scala-6a2134b1b056da1c32115b4ab87e11c7b78b53ab.tar.bz2 scala-6a2134b1b056da1c32115b4ab87e11c7b78b53ab.zip |
Major rewrite of optimization phases.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala index 3d4d3e6f14..7a3e858baa 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala @@ -18,8 +18,8 @@ trait DataFlowAnalysis[L <: CompleteLattice] { val worklist: Set[P] = new LinkedHashSet - val in: Map[P, lattice.Elem] = new HashMap - val out: Map[P, lattice.Elem] = new HashMap + val in: Map[P, lattice.Elem] = new collection.jcl.HashMap + val out: Map[P, lattice.Elem] = new collection.jcl.HashMap val visited: HashSet[P] = new HashSet /* Implement this function to initialize the worklist. */ @@ -36,7 +36,7 @@ trait DataFlowAnalysis[L <: CompleteLattice] { * * @param f the transfer function. */ - def forwardAnalysis(f: (P, lattice.Elem) => lattice.Elem): Unit = + def forwardAnalysis(f: (P, lattice.Elem) => lattice.Elem): Unit = try { while (!worklist.isEmpty) { // Console.println("worklist in: " + worklist); val point = worklist.elements.next; worklist -= point; visited += point; @@ -44,8 +44,7 @@ trait DataFlowAnalysis[L <: CompleteLattice] { // Console.println("taking out point: " + point + " worklist out: " + worklist); if ((lattice.bottom == out(point)) || output != out(point)) { -// Console.println("Output changed at " + point + " added to worklist: ") -// Console.println("\t" + worklist) +// Console.println("Output changed at " + point + " from: " + out(point) + " to: " + output + " and they are different: " + (output != out(point))) out(point) = output val succs = point.successors succs foreach { p => @@ -55,6 +54,13 @@ trait DataFlowAnalysis[L <: CompleteLattice] { } } } + } catch { + case e: NoSuchElementException => + Console.println("in: " + in.mkString("", "\n", "")) + Console.println("out: " + out.mkString("", "\n", "")) + e.printStackTrace + Predef.error("Could not find element " + e.getMessage) + } /** ... * |