public ConflictGraph() {
id2cn = new Hashtable<String, ConflictNode>();
}
-
- private boolean isReadOnly(ConflictNode node) {
-
- if (node instanceof StallSiteNode) {
- StallSiteNode stallSiteNode = (StallSiteNode) node;
- HashSet<Effect> effectSet = stallSiteNode.getStallSite()
- .getEffectSet();
- for (Iterator iterator = effectSet.iterator(); iterator.hasNext();) {
- Effect effect = (Effect) iterator.next();
- if (effect.getEffectType().equals(StallSite.WRITE_EFFECT)) {
- return false;
- }
- }
- } else {
- LiveInNode liveInNode = (LiveInNode) node;
- Set<SESEEffectsKey> writeEffectSet = liveInNode
- .getWriteEffectsSet();
- if (writeEffectSet != null && writeEffectSet.size() > 0) {
- return false;
+
+ public boolean hasConflictEdge(){
+
+ Set<String> keySet=id2cn.keySet();
+ for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
+ String key = (String) iterator.next();
+ ConflictNode node=id2cn.get(key);
+ if(node.getEdgeSet().size()>0){
+ return true;
}
- }
-
- return true;
+ }
+ return false;
}
public void analyzeConflicts() {
// eom
ConflictGraph graph = null;
graph = mlpa.getConflictGraphResults().get(fm);
- if (graph != null) {
+ if (graph != null && graph.hasConflictEdge()) {
output.println(" /* set up waiting queues */");
output.println(" int numMemoryQueue=0;");
output.println(" int memoryQueueItemID=0;");
HashSet<SESELock> lockSet = mlpa.getConflictGraphLockMap().get(
graph);
+ System.out.println("#lockSet="+lockSet.hashCode());
System.out.println("lockset="+lockSet);
for (Iterator iterator = lockSet.iterator(); iterator.hasNext();) {
SESELock seseLock = (SESELock) iterator.next();
output.println(" int memoryQueueItemID=0;");
ConflictGraph graph = null;
graph = mlpa.getConflictGraphResults().get(fsen);
- if (graph != null) {
+ if (graph != null && graph.hasConflictEdge()) {
output.println(" {");
output
.println(" SESEcommon* parentCommon = &(___params___->common);");
HashSet<SESELock> lockSet = mlpa.getConflictGraphLockMap().get(
graph);
+ System.out.println("#lockSet="+lockSet);
if (lockSet.size() > 0) {
output.println(" numMemoryQueue=" + lockSet.size() + ";");
graph = mlpa.getConflictGraphResults().get(parent);
}
}
- if (graph != null) {
+ if (graph != null && graph.hasConflictEdge()) {
HashSet<SESELock> seseLockSet = mlpa.getConflictGraphLockMap().get(
graph);
output.println();