variable analysis reports no stalls, stable
authorjjenista <jjenista>
Fri, 24 Apr 2009 16:46:21 +0000 (16:46 +0000)
committerjjenista <jjenista>
Fri, 24 Apr 2009 16:46:21 +0000 (16:46 +0000)
Robust/src/Analysis/MLP/MLPAnalysis.java
Robust/src/Analysis/MLP/VarSrcTokTable.java
Robust/src/Tests/mlp/tinyTest/test.java

index 5f70ae770e15a10feff772fd624e01ea7bc502a6..4d66b51b8236212fc8e90e700f856070e96301f5 100644 (file)
@@ -421,9 +421,15 @@ public class MLPAnalysis {
       Stack<FlatSESEEnterNode> seseStack = seseStacks.get( fn );
       assert seseStack != null;      
 
-      VarSrcTokTable vstTable = variableResults.get( fn );
+      // use incoming results as "dot statement" or just
+      // before the current statement
+      VarSrcTokTable dotST = new VarSrcTokTable();
+      for( int i = 0; i < fn.numPrev(); i++ ) {
+       FlatNode nn = fn.getPrev( i );
+       dotST.merge( variableResults.get( nn ) );
+      }
 
-      computeStalls_nodeActions( fn, vstTable, seseStack.peek() );
+      computeStalls_nodeActions( fn, dotST, seseStack.peek() );
 
       for( int i = 0; i < fn.numNext(); i++ ) {
        FlatNode nn = fn.getNext( i );
@@ -442,6 +448,8 @@ public class MLPAnalysis {
   private void computeStalls_nodeActions( FlatNode fn,
                                           VarSrcTokTable vstTable,
                                           FlatSESEEnterNode currentSESE ) {
+    String s = "no op";
+
     switch( fn.kind() ) {
 
     case FKind.FlatSESEEnterNode: {
@@ -453,12 +461,10 @@ public class MLPAnalysis {
     } break;
 
     default: {
-      String s = "no op";
-      
       Set<VariableSourceToken> stallSet = vstTable.getStallSet( currentSESE );
       if( !stallSet.isEmpty() ) {
 
-       s = "stall for:";
+       s = "STALL for:";
 
        Iterator<VariableSourceToken> itr = stallSet.iterator();
        while( itr.hasNext() ) {
@@ -466,10 +472,10 @@ public class MLPAnalysis {
          s += "  "+vst.getVarLive();
        }       
       }      
-
-      codePlan.put( fn, s );
     } break;
 
     } // end switch
+
+    codePlan.put( fn, s );
   }
 }
index 77adefc9dfbec62eaec8d7385fbbc53fcf26c2cb..4eee968c55bb55e0b6bebafb98e6dd1bf4eb8104 100644 (file)
@@ -337,18 +337,22 @@ public class VarSrcTokTable {
       Set<VariableSourceToken> bSet = get( new SVKey( b, vst.getVarLive() ) );\r
       if( !bSet.isEmpty() ) {\r
         remove( vst );\r
+\r
+        // mark this variable as a virtual read as well\r
       }\r
     }\r
   }\r
 \r
 \r
-  public Set<VariableSourceToken> getStallSet( FlatSESEEnterNode curr ) {\r
+  public Set<VariableSourceToken> getStallSet( FlatSESEEnterNode curr/*,\r
+                                                                       TempDescriptor varLive*/ ) {\r
 \r
     Set<VariableSourceToken> out = new HashSet<VariableSourceToken>();\r
 \r
     Iterator<FlatSESEEnterNode> cItr = curr.getChildren().iterator();\r
     while( cItr.hasNext() ) {\r
       FlatSESEEnterNode child = cItr.next();\r
+      //out.addAll( get( new SVKey( child, varLive ) ) );\r
       out.addAll( get( child ) );\r
     }\r
 \r
index cf794bd0fdf31f64f9c2fa7afb6f33f88040aa83..94291e5f3d5df208a4ab9c14f83649e184b359e4 100644 (file)
@@ -1,7 +1,7 @@
 public class Test {
 
   public static void main( String args[] ) {
-
+    /*
     int n = 10;
       
     sese top {     
@@ -17,5 +17,12 @@ public class Test {
     }
     
     int z = n + j;
+    */
+
+    sese fi {
+      int x = 2;
+    }
+
+    x = x + 1;
   }
 }