changes: handle correctly the case when a coarse grain conflict is associated with...
authoryeom <yeom>
Mon, 25 Oct 2010 22:04:28 +0000 (22:04 +0000)
committeryeom <yeom>
Mon, 25 Oct 2010 22:04:28 +0000 (22:04 +0000)
Robust/src/Analysis/OoOJava/ConflictGraph.java

index 09ea4687518ea36989740f1f4a951fc36cba1c8b..7d49343b982a45711d9dfba04e56bd97b0cc6375 100644 (file)
@@ -321,7 +321,15 @@ public class ConflictGraph {
                   conflictType = updateConflictType(conflictType, ConflictGraph.COARSE_GRAIN_EDGE);
                 }
               } else {
-                return ConflictGraph.COARSE_GRAIN_EDGE;
+                if (state.RCR) {
+                  // need coarse effects for RCR from just one pass
+                  addCoarseEffect(nodeA, asA, strongUpdateA);
+                  if (!nodeA.equals(nodeB)) {
+                    addCoarseEffect(nodeB, asB, effectB);
+                  }
+                } else {
+                  return ConflictGraph.COARSE_GRAIN_EDGE;
+                }
               }
 
             }
@@ -425,14 +433,15 @@ public class ConflictGraph {
                   }
                 }
               } else {
-               if (state.RCR) {
-                 //need coarse effects for RCR from just one pass
-                 addCoarseEffect(nodeA, asA, effectA);
-                 if (!nodeA.equals(nodeB)) {
-                   addCoarseEffect(nodeB, asB, effectB);
-                 }
-               }
-                return ConflictGraph.COARSE_GRAIN_EDGE;
+                if (state.RCR) {
+                  // need coarse effects for RCR from just one pass
+                  addCoarseEffect(nodeA, asA, effectA);
+                  if (!nodeA.equals(nodeB)) {
+                    addCoarseEffect(nodeB, asB, effectB);
+                  }
+                } else {
+                  return ConflictGraph.COARSE_GRAIN_EDGE;
+                }
               }
             }
           }