changes
authorbdemsky <bdemsky>
Fri, 11 Jan 2008 08:30:42 +0000 (08:30 +0000)
committerbdemsky <bdemsky>
Fri, 11 Jan 2008 08:30:42 +0000 (08:30 +0000)
Robust/src/Analysis/TaskStateAnalysis/TaskQueue.java
Robust/src/Analysis/TaskStateAnalysis/TaskQueueIterator.java
Robust/src/Analysis/TaskStateAnalysis/TaskTagAnalysis.java
Robust/src/Main/Main.java
Robust/src/buildscript

index dd6404f722c3c37384e965b3657736c42046511d..5229480232d9436fee0dce40a3366ecc94279225 100644 (file)
@@ -22,14 +22,16 @@ public class TaskQueue {
        this.task=td;
        this.parameterset=(HashSet<FlagTagState>[])new HashSet[task.numParameters()];
        this.map=new Hashtable<FlagState, Vector<FlagTagState>>();
+       this.tags=new Vector<TempDescriptor>();
        for(int i=0;i<task.numParameters();i++) {
            this.parameterset[i]=new HashSet<FlagTagState>();
            TagExpressionList tel=td.getTag(td.getParameter(i));
-           for(int j=0;j<tel.numTags();j++) {
-               TempDescriptor tagtmp=tel.getTemp(j);
-               if (!tags.contains(tagtmp))
-                   tags.add(tagtmp);
-           }
+           if (tel!=null)
+               for(int j=0;j<tel.numTags();j++) {
+                   TempDescriptor tagtmp=tel.getTemp(j);
+                   if (!tags.contains(tagtmp))
+                       tags.add(tagtmp);
+               }
        }
     }
     
index 7cc2bef5da7bb212a56c42c148f9cdf0f8c5f61f..909aa5e5514af7866e21d95e5fb4522bf0923dbf 100644 (file)
@@ -35,12 +35,13 @@ public class TaskQueueIterator {
                itarray[i]=tq.parameterset[i].iterator();
            VarDescriptor vd=tq.task.getParameter(i);
            TagExpressionList tel=tq.task.getTag(vd);
-           for(int j=0;j<tel.numTags();j++) {
-               TempDescriptor tmp=tel.getTemp(j);
-               if (!tsindexarray.containsKey(tmp)) {
-                   tsindexarray.put(tmp, new Integer(i));
+           if (tel!=null)
+               for(int j=0;j<tel.numTags();j++) {
+                   TempDescriptor tmp=tel.getTemp(j);
+                   if (!tsindexarray.containsKey(tmp)) {
+                       tsindexarray.put(tmp, new Integer(i));
+                   }
                }
-           }
        }
     }
 
@@ -62,16 +63,16 @@ public class TaskQueueIterator {
            TagExpressionList tel=td.getTag(vd);
            int j;
            if (needinit) {
-               j=tel.numTags()>0?tel.numTags()-1:0;
+               j=(tel!=null)&&tel.numTags()>0?tel.numTags()-1:0;
                needinit=false;
            } else
                j=0;
            tagloop:
-           for(;j<tel.numTags();j++) {
+           for(;tel!=null&&j<tel.numTags();j++) {
                TempDescriptor tmp=tel.getTemp(j);
                TagState currtag=tsarray.get(tmp);
                String type=tel.getType(j);
-
+               
                if (tsindexarray.get(tmp).intValue()==i) {
                    //doing the assignment right here!!!
                    Vector<FlagTagState> possts=tq.map.get(currfs);
index 27893fcc1c6f12ba70a9e603b3392289cfd45531..47cb02d9c0648a20db84c4c0378aa20858a0c511 100644 (file)
@@ -39,6 +39,7 @@ public class TaskTagAnalysis {
            TaskDescriptor td=(TaskDescriptor)taskit.next();
            tasktable.put(td, new TaskQueue(td));
        }
+       doAnalysis();
     }
 
     private void doAnalysis() {
index 20cc37db0e8e643aebcf6be47eea6288e0bdd0a1..e407122553faa328f5fbf0eea2b224113d800634 100644 (file)
@@ -15,6 +15,7 @@ import IR.TypeUtil;
 import Analysis.Scheduling.ScheduleAnalysis;
 import Analysis.Scheduling.ScheduleEdge;
 import Analysis.TaskStateAnalysis.TaskAnalysis;
+import Analysis.TaskStateAnalysis.TaskTagAnalysis;
 import Analysis.TaskStateAnalysis.TaskGraph;
 import Analysis.CallGraph.CallGraph;
 import Analysis.TaskStateAnalysis.TagAnalysis;
@@ -58,6 +59,8 @@ public class Main {
              state.TASK=true;
          else if (option.equals("-taskstate"))
              state.TASKSTATE=true;
+         else if (option.equals("-tagstate"))
+             state.TAGSTATE=true;
          else if (option.equals("-flatirtasks")) {
              state.FLATIRGRAPH=true;
              state.FLATIRGRAPHTASKS=true;
@@ -167,6 +170,12 @@ public class Main {
       bf.buildFlat();
       SafetyAnalysis sa=null;
 
+      if (state.TAGSTATE) {
+         CallGraph callgraph=new CallGraph(state);
+         TagAnalysis taganalysis=new TagAnalysis(state, callgraph);
+         TaskTagAnalysis tta=new TaskTagAnalysis(state, taganalysis);
+      }
+
       if (state.TASKSTATE) {
          CallGraph callgraph=new CallGraph(state);
          TagAnalysis taganalysis=new TagAnalysis(state, callgraph);
index 5adc8f0821a65d644d41e63154cf082f3bab9d6c..85e31c0d6869148eae68c5111b3af691869e1b92 100755 (executable)
@@ -9,6 +9,7 @@ echo -recover compile task code
 echo -specdir directory
 echo -selfloop task - this task cannot self loop forever
 echo -taskstate do task state analysis
+echo -tagstate do tag state analysis
 echo -scheduling do task scheduling
 echo -optional enable optional
 echo -debug generate debug symbols
@@ -84,6 +85,9 @@ EXTRAOPTIONS="$EXTRAOPTIONS -pg"
 elif [[ $1 = '-taskstate' ]]
 then
 JAVAOPTS="$JAVAOPTS -taskstate"
+elif [[ $1 = '-tagstate' ]]
+then
+JAVAOPTS="$JAVAOPTS -tagstate"
 elif [[ $1 = '-scheduling' ]]
 then
 JAVAOPTS="$JAVAOPTS -scheduling"