summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-03-21 19:25:44 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-03-21 19:25:44 +0000
commit6a2134b1b056da1c32115b4ab87e11c7b78b53ab (patch)
tree21a7f25e9118098af611356f21b59f68a2e84fcc /src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala
parent1052ad2f1ea1d162f65c3e3663a54d44e5566578 (diff)
downloadscala-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.scala16
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)
+ }
/** ...
*