initial commit for parent/child SESE memory conflicts analysis
[IRC.git] / Robust / src / Analysis / MLP / ParentChildConflictsMap.java
diff --git a/Robust/src/Analysis/MLP/ParentChildConflictsMap.java b/Robust/src/Analysis/MLP/ParentChildConflictsMap.java
new file mode 100644 (file)
index 0000000..58d31b1
--- /dev/null
@@ -0,0 +1,59 @@
+package Analysis.MLP;
+
+import java.util.Hashtable;
+
+import IR.Flat.TempDescriptor;
+
+public class ParentChildConflictsMap {
+
+       public static final Integer ACCESSIBLE = new Integer(1);
+       public static final Integer INACCESSIBLE = new Integer(2);
+
+       private Hashtable<TempDescriptor, Integer> accessibleMap;
+       private Hashtable<TempDescriptor, StallSite> stallMap;
+
+       public ParentChildConflictsMap() {
+
+               accessibleMap = new Hashtable<TempDescriptor, Integer>();
+               stallMap = new Hashtable<TempDescriptor, StallSite>();
+
+       }
+
+       public Hashtable<TempDescriptor, Integer> getAccessibleMap() {
+               return accessibleMap;
+       }
+
+       public Hashtable<TempDescriptor, StallSite> getStallMap() {
+               return stallMap;
+       }
+       
+       public void addAccessibleVar(TempDescriptor td){
+               accessibleMap.put(td, ACCESSIBLE);
+       }
+       
+       public void addInaccessibleVar(TempDescriptor td){
+               accessibleMap.put(td, INACCESSIBLE);
+       }
+       
+       public void addStallSite(TempDescriptor td){
+               StallSite stallSite=new StallSite();
+               stallMap.put(td, stallSite);
+       }
+
+       public boolean isAccessible(TempDescriptor td){
+               if(accessibleMap.contains(td) && accessibleMap.get(td).equals(ACCESSIBLE)){
+                       return true;
+               }
+               return false;
+       }
+       
+       public void contributeEffect(TempDescriptor td, String type, String field, int effect){
+               
+               StallSite stallSite=stallMap.get(td);
+               if(stallSite!=null){
+                       stallSite.addEffect(type, field, effect);
+               }
+               
+       }
+       
+}