more changes
authorbdemsky <bdemsky>
Tue, 25 Mar 2008 05:43:51 +0000 (05:43 +0000)
committerbdemsky <bdemsky>
Tue, 25 Mar 2008 05:43:51 +0000 (05:43 +0000)
Robust/src/Analysis/TaskStateAnalysis/TaskQueueIterator.java
Robust/src/Analysis/TaskStateAnalysis/TaskTagAnalysis.java
Robust/src/IR/FlagDescriptor.java
Robust/src/IR/Flat/BuildCode.java

index 909aa5e5514af7866e21d95e5fb4522bf0923dbf..7e6898aa177a09c003d758593cc1db392706af44 100644 (file)
@@ -56,6 +56,11 @@ public class TaskQueueIterator {
            i=0;
        }
 
+       if (i==0&&index==0&&ftsarray[0]!=null&&!needit) {
+           needinit=false;
+           return true;
+       }
+
        objloop:
        for(;i<ftsarray.length;i++) {
            FlagState currfs=ftsarray[i].fs;
index 47cb02d9c0648a20db84c4c0378aa20858a0c511..a3b63820a64a899622d0ee5c1e09d356b619f8cc 100644 (file)
@@ -40,6 +40,28 @@ public class TaskTagAnalysis {
            tasktable.put(td, new TaskQueue(td));
        }
        doAnalysis();
+       doOutput();
+    }
+
+    private void doOutput() {
+       try {
+       for(Iterator<TagDescriptor> tagit=tsresults.keySet().iterator();tagit.hasNext();) {
+           TagDescriptor tag=tagit.next();
+           Set<TagState> set=tsresults.get(tag);
+           File dotfile_flagstates= new File("tag"+tag.getSymbol()+".dot");
+           FileOutputStream dotstream=new FileOutputStream(dotfile_flagstates,false);
+           TagState.DOTVisitor.visit(dotstream,set);
+       }
+       for(Iterator<ClassDescriptor> cdit=fsresults.keySet().iterator();cdit.hasNext();) {
+           ClassDescriptor cd=cdit.next();
+           Set<TagState> set=fsresults.get(cd);
+           File dotfile_flagstates= new File("class"+cd.getSymbol()+".dot");
+           FileOutputStream dotstream=new FileOutputStream(dotfile_flagstates,false);
+           TagState.DOTVisitor.visit(dotstream,set);
+       }
+       } catch (Exception e) {
+           e.printStackTrace();
+       }
     }
 
     private void doAnalysis() {
@@ -62,9 +84,12 @@ public class TaskTagAnalysis {
            FlagState fs=fsit.next();
            FlagTagState fts=new FlagTagState(ts, fs);
            for(int i=0;i<td.numParameters();i++) {
+               System.out.println("Trying to enqueue "+td);
                if (canEnqueue(td, i, fs)) {
+                   System.out.println("Enqueued");
                    TaskQueueIterator tqi=tq.enqueue(i, fts);
                    while(tqi.hasNext()) {
+                       System.out.println("binding");
                        processBinding(tqi);
                        tqi.next();
                    }
index e18393fd655236ffa948846d73b73a550a12a498..4df76913a69ae958ce89088381fd4ced7771cc40 100644 (file)
@@ -7,8 +7,7 @@ package IR;
  */
 
 public class FlagDescriptor extends Descriptor {
-    public static final String InitialFlag="initialstate";
-
+    public final static String InitialFlag="initialstate";
 
     public FlagDescriptor(String identifier) {
        super(identifier);
index 5515266dead98e32ccfd6ae23820a23bffe953b1..41f573a5bf0c6cc713c197accc3313400b20cca6 100644 (file)
@@ -1427,8 +1427,7 @@ public class BuildCode {
            generateFlatFlagActionNode(fm, lb, (FlatFlagActionNode) fn, output);
            return;
        case FKind.FlatPrefetchNode:
-           if (!state.excprefetch.contains(fm.getMethod().getClassMethodName()))
-               generateFlatPrefetchNode(fm,lb, (FlatPrefetchNode) fn, output);
+           generateFlatPrefetchNode(fm,lb, (FlatPrefetchNode) fn, output);
            return;
        }
        throw new Error();