From: jjenista Date: Fri, 24 Apr 2009 16:46:21 +0000 (+0000) Subject: variable analysis reports no stalls, stable X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=99c889021d14377fdaeaf87d3f4a90df5baa14e7;p=IRC.git variable analysis reports no stalls, stable --- diff --git a/Robust/src/Analysis/MLP/MLPAnalysis.java b/Robust/src/Analysis/MLP/MLPAnalysis.java index 5f70ae77..4d66b51b 100644 --- a/Robust/src/Analysis/MLP/MLPAnalysis.java +++ b/Robust/src/Analysis/MLP/MLPAnalysis.java @@ -421,9 +421,15 @@ public class MLPAnalysis { Stack 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 stallSet = vstTable.getStallSet( currentSESE ); if( !stallSet.isEmpty() ) { - s = "stall for:"; + s = "STALL for:"; Iterator 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 ); } } diff --git a/Robust/src/Analysis/MLP/VarSrcTokTable.java b/Robust/src/Analysis/MLP/VarSrcTokTable.java index 77adefc9..4eee968c 100644 --- a/Robust/src/Analysis/MLP/VarSrcTokTable.java +++ b/Robust/src/Analysis/MLP/VarSrcTokTable.java @@ -337,18 +337,22 @@ public class VarSrcTokTable { Set bSet = get( new SVKey( b, vst.getVarLive() ) ); if( !bSet.isEmpty() ) { remove( vst ); + + // mark this variable as a virtual read as well } } } - public Set getStallSet( FlatSESEEnterNode curr ) { + public Set getStallSet( FlatSESEEnterNode curr/*, + TempDescriptor varLive*/ ) { Set out = new HashSet(); Iterator cItr = curr.getChildren().iterator(); while( cItr.hasNext() ) { FlatSESEEnterNode child = cItr.next(); + //out.addAll( get( new SVKey( child, varLive ) ) ); out.addAll( get( child ) ); } diff --git a/Robust/src/Tests/mlp/tinyTest/test.java b/Robust/src/Tests/mlp/tinyTest/test.java index cf794bd0..94291e5f 100644 --- a/Robust/src/Tests/mlp/tinyTest/test.java +++ b/Robust/src/Tests/mlp/tinyTest/test.java @@ -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; } }