more changes...RCR wasn't usable until it was too late...
[IRC.git] / Robust / src / Analysis / OoOJava / OoOJavaAnalysis.java
index 819ea516ebdf92306028aa4f8b82d8db0b0aea51..9ec6c2d608fb1cadcd428cb1928302a84ab1230e 100644 (file)
@@ -85,6 +85,10 @@ public class OoOJavaAnalysis {
     return cp;
   }
 
+  public Set<FlatNode> getNodesWithPlans() {
+    return codePlans.keySet();
+  }
+
   public OoOJavaAnalysis(State state, TypeUtil typeUtil, CallGraph callGraph, Liveness liveness,
       ArrayReferencees arrayReferencees) {
 
@@ -195,19 +199,21 @@ public class OoOJavaAnalysis {
     Set<FlatNew> sitesToFlag = new HashSet<FlatNew>();
     calculateConflicts(sitesToFlag, false);
 
-    // 9th pass, ask disjoint analysis to compute reachability
-    // for objects that may cause heap conflicts so the most
-    // efficient method to deal with conflict can be computed
-    // later
 
-    disjointAnalysisReach =
+    if (!state.RCR) {
+      // 9th pass, ask disjoint analysis to compute reachability
+      // for objects that may cause heap conflicts so the most
+      // efficient method to deal with conflict can be computed
+      // later
+      
+      disjointAnalysisReach =
         new DisjointAnalysis(state, typeUtil, callGraph, liveness, arrayReferencees, sitesToFlag,
-            null, // don't do effects analysis again!
-            null // don't do effects analysis again!
-        );
-    // 10th pass, calculate conflicts with reachability info
-    calculateConflicts(null, true);
-
+                            null, // don't do effects analysis again!
+                            null // don't do effects analysis again!
+                            );
+      // 10th pass, calculate conflicts with reachability info
+      calculateConflicts(null, true);
+    }
     // 11th pass, compiling locks
     synthesizeLocks();
 
@@ -986,7 +992,7 @@ public class OoOJavaAnalysis {
 
         ConflictGraph conflictGraph = sese2conflictGraph.get(seseStack.peek());
         if (conflictGraph == null) {
-          conflictGraph = new ConflictGraph();
+          conflictGraph = new ConflictGraph(state);
         }
 
         conflictGraph_nodeAction(fn, seseStack.peek());
@@ -1021,7 +1027,7 @@ public class OoOJavaAnalysis {
       }
       conflictGraph = sese2conflictGraph.get(currentSESE.getParent());
       if (conflictGraph == null) {
-        conflictGraph = new ConflictGraph();
+        conflictGraph = new ConflictGraph(state);
       }
 
       FlatSESEEnterNode fsen = (FlatSESEEnterNode) fn;
@@ -1044,7 +1050,7 @@ public class OoOJavaAnalysis {
 
       conflictGraph = sese2conflictGraph.get(currentSESE);
       if (conflictGraph == null) {
-        conflictGraph = new ConflictGraph();
+        conflictGraph = new ConflictGraph(state);
       }
 
       if (fn instanceof FlatFieldNode) {
@@ -1070,7 +1076,7 @@ public class OoOJavaAnalysis {
 
       conflictGraph = sese2conflictGraph.get(currentSESE);
       if (conflictGraph == null) {
-        conflictGraph = new ConflictGraph();
+        conflictGraph = new ConflictGraph(state);
       }
 
       if (fn instanceof FlatSetFieldNode) {
@@ -1097,7 +1103,7 @@ public class OoOJavaAnalysis {
     case FKind.FlatCall: {
       conflictGraph = sese2conflictGraph.get(currentSESE);
       if (conflictGraph == null) {
-        conflictGraph = new ConflictGraph();
+        conflictGraph = new ConflictGraph(state);
       }
 
       FlatCall fc = (FlatCall) fn;