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);
+ }
}
}
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));
+ }
}
- }
}
}
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);
TaskDescriptor td=(TaskDescriptor)taskit.next();
tasktable.put(td, new TaskQueue(td));
}
+ doAnalysis();
}
private void doAnalysis() {
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;
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;
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);
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
elif [[ $1 = '-taskstate' ]]
then
JAVAOPTS="$JAVAOPTS -taskstate"
+elif [[ $1 = '-tagstate' ]]
+then
+JAVAOPTS="$JAVAOPTS -tagstate"
elif [[ $1 = '-scheduling' ]]
then
JAVAOPTS="$JAVAOPTS -scheduling"