generate annotated source code again but it's still not the correct one...
[IRC.git] / Robust / src / Analysis / Disjoint / BuildStateMachines.java
index 277e6c48bd4a571faca1759be6acdc07147977a9..b4e0b6a21269cfbc78c0c6fb4b88d2a69db19cdb 100644 (file)
@@ -25,53 +25,48 @@ public class BuildStateMachines {
 
   // map a task or stall site (both a FlatNode) to a variable
   // and then finally to a state machine
-  protected 
-    Hashtable< FlatNode, Hashtable<TempDescriptor, StateMachineForEffects> >
-    fn2var2smfe;
-  
+  protected Hashtable< FlatNode, Hashtable<TempDescriptor, StateMachineForEffects>> fn2var2smfe;
+
   // remember all the FlatNode/TempDescriptor pairs that have a state machines
   // for easy retrieval of all machines
-  protected Set<Pair> allMachineNamePairs;
+  protected Set<Pair<FlatNode, TempDescriptor>> allMachineNamePairs;
 
 
   public BuildStateMachines() {
-    fn2var2smfe = new
-      Hashtable< FlatNode, Hashtable<TempDescriptor, StateMachineForEffects> >();
-
-    allMachineNamePairs = new HashSet<Pair>();
+    fn2var2smfe = new Hashtable< FlatNode, Hashtable<TempDescriptor, StateMachineForEffects> >();
+    allMachineNamePairs = new HashSet<Pair<FlatNode, TempDescriptor>>();
   }
 
+  public StateMachineForEffects getStateMachine(Pair<FlatNode, TempDescriptor> fnpair) {
+    return getStateMachine(fnpair.getFirst(), fnpair.getSecond());
+  }
 
-  public StateMachineForEffects getStateMachine( FlatNode       fn,
-                                                 TempDescriptor var ) {
-
-    Hashtable<TempDescriptor, StateMachineForEffects> var2smfe = fn2var2smfe.get( fn );
+  public StateMachineForEffects getStateMachine(FlatNode fn, TempDescriptor var) {
+    Hashtable<TempDescriptor, StateMachineForEffects> var2smfe = fn2var2smfe.get(fn);
     if( var2smfe == null ) {
       var2smfe = new Hashtable<TempDescriptor, StateMachineForEffects>();
-      fn2var2smfe.put( fn, var2smfe );
+      fn2var2smfe.put(fn, var2smfe);
     }
-    
-    StateMachineForEffects smfe = var2smfe.get( var );
-    if( smfe == null ) {
-      smfe = new StateMachineForEffects( fn );
-      var2smfe.put( var, smfe );
 
-      allMachineNamePairs.add( new Pair( fn, var ) );
+    StateMachineForEffects smfe = var2smfe.get(var);
+    if( smfe == null ) {
+      smfe = new StateMachineForEffects(fn);
+      var2smfe.put(var, smfe);
+      allMachineNamePairs.add(new Pair<FlatNode, TempDescriptor>(fn, var) );
     }
 
     return smfe;
   }
 
 
-  public Set<Pair> getAllMachineNames() {
+  public Set<Pair<FlatNode, TempDescriptor>> getAllMachineNames() {
     return allMachineNamePairs;
   }
 
 
-  public void addToStateMachine( Taint t, 
-                                 Effect e, 
-                                 FlatNode currentProgramPoint ) {
-    
+  public void addToStateMachine(Taint t,
+                                Effect e,
+                                FlatNode currentProgramPoint) {
     FlatNode taskOrStallSite;
     if( t.isStallSiteTaint() ) {
       taskOrStallSite = t.getStallSite();
@@ -81,41 +76,50 @@ public class BuildStateMachines {
 
     TempDescriptor var = t.getVar();
 
-    StateMachineForEffects smfe = getStateMachine( taskOrStallSite, var );
+    StateMachineForEffects smfe = getStateMachine(taskOrStallSite, var);
 
     FlatNode whereDefined = t.getWhereDefined();
 
-    smfe.addEffect( whereDefined, e );
+    smfe.addEffect(whereDefined, e);
 
     // reads of pointers make a transition
     if( e.getType() == Effect.read &&
         ((e.getField()!=null && e.getField().getType().isPtr())
-        ||(e.getField()==null && e.getAffectedAllocSite().getFlatNew().getType().dereference().isPtr()))) {
-      
-      smfe.addTransition( whereDefined, 
-                          currentProgramPoint,
-                          e );
+         ||(e.getField()==null && e.getAffectedAllocSite().getFlatNew().getType().dereference().isPtr()))) {
+
+      smfe.addTransition(whereDefined,
+                         currentProgramPoint,
+                         e);
     }
   }
 
 
   public void writeStateMachines() {
+    writeStateMachines("");
+  }
+
+  public void writeStateMachines(String prefix) {
 
     Iterator<FlatNode> fnItr = fn2var2smfe.keySet().iterator();
     while( fnItr.hasNext() ) {
       FlatNode fn = fnItr.next();
-      
-      Hashtable<TempDescriptor, StateMachineForEffects> 
-        var2smfe = fn2var2smfe.get( fn );
-        
+
+      Hashtable<TempDescriptor, StateMachineForEffects>
+      var2smfe = fn2var2smfe.get(fn);
+
       Iterator<TempDescriptor> varItr = var2smfe.keySet().iterator();
       while( varItr.hasNext() ) {
         TempDescriptor var = varItr.next();
 
-        StateMachineForEffects smfe = var2smfe.get( var );
+        StateMachineForEffects smfe = var2smfe.get(var);
 
-        smfe.writeAsDOT( "statemachine_"+fn.toString()+var.toString() );
+        smfe.writeAsDOT(prefix+"statemachine_"+fn.toString()+var.toString() );
       }
     }
   }
+  //TODO JIM! Give me the REAALL number here.
+  public int getTotalNumOfWeakGroups() {
+    // TODO Auto-generated method stub
+    return 1;
+  }
 }