From: yeom Date: Fri, 13 Aug 2010 02:46:16 +0000 (+0000) Subject: changes. add coarse case into our previous changes that we did for SOR benchmarks. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ab207d01da842e9c9e1b4c9d384a2075e1b47cdc;p=IRC.git changes. add coarse case into our previous changes that we did for SOR benchmarks. --- diff --git a/Robust/src/Analysis/OoOJava/OoOJavaAnalysis.java b/Robust/src/Analysis/OoOJava/OoOJavaAnalysis.java index a6065eab..20d5f548 100644 --- a/Robust/src/Analysis/OoOJava/OoOJavaAnalysis.java +++ b/Robust/src/Analysis/OoOJava/OoOJavaAnalysis.java @@ -1056,7 +1056,7 @@ public class OoOJavaAnalysis { } else { FlatElementNode fen = (FlatElementNode) fn; rhs = fen.getSrc(); - } + } // add stall site Hashtable> taint2Effects = effectsAnalysis.get(fn); @@ -1302,6 +1302,7 @@ public class OoOJavaAnalysis { } } while (changed); + HashSet notCovered=new HashSet(); do { // coarse changed = false; int type; @@ -1363,14 +1364,21 @@ public class OoOJavaAnalysis { // new node has a coarse-grained edge to all fine-read, fine-write, // parent changed = true; - + if (newNode.isInVarNode() && (!seseLock.hasSelfCoarseEdge(newNode)) && seseLock.hasCoarseEdgeWithParentCoarse(newNode)) { // this case can't be covered by this queue coarseToCover.remove(edge); + notCovered.add(edge); break; } + if (seseLock.containsConflictNode(newNode)) { + seseLock.addEdge(edge); + coarseToCover.remove(edge); + break; + } + if (seseLock.hasSelfCoarseEdge(newNode)) { // SCC if (newNode.isStallSiteNode()) { @@ -1418,6 +1426,7 @@ public class OoOJavaAnalysis { lockSet.add(seseLock); toCover.clear(); + coarseToCover.addAll(notCovered); toCover.addAll(fineToCover); toCover.addAll(coarseToCover);