int trigger_ctr=0;
TempDescriptor temp=null;
FlatMethod fm = state.getMethodFlat(td);
-
+ int parameterindex=0;
+
for(int i=0; i < td.numParameters(); i++) {
FlagExpressionNode fen=td.getFlag(td.getParameter(i));
TagExpressionList tel=td.getTag(td.getParameter(i));
&& isTaskTrigger_flag(fen,fs)
&& isTaskTrigger_tag(tel,fs)) {
temp=fm.getParameter(i);
+ parameterindex=i;
trigger_ctr++;
}
}
if (fn1.kind()==FKind.FlatReturnNode) {
/* Self edge */
- FEdge newedge=new FEdge(fs, taskname, td);
+ FEdge newedge=new FEdge(fs, taskname, td, parameterindex);
fs.addEdge(newedge);
continue;
} else if (fn1.kind()==FKind.FlatFlagActionNode) {
}
//seen this node already
fs_taskexit=canonicalizeFlagState(sourcenodes,fs_taskexit);
- FEdge newedge=new FEdge(fs_taskexit,taskname, td);
+ FEdge newedge=new FEdge(fs_taskexit,taskname, td, parameterindex);
fs.addEdge(newedge);
}
continue;
return true;
}
-/*private int tagTypeCount(TagExpressionList tel, String tagtype){
- int ctr=0;
- for(int i=0;i<tel.numTags() ; i++){
- if (tel.getType(i).equals(tagtype))
- ctr++;
- }
- return ctr;
-} */
private Vector<FlagState> evalTaskExitNode(FlatFlagActionNode ffan,ClassDescriptor cd,FlagState fs, TempDescriptor temp){
FlagState fstemp=fs;
if (flagstates.containsKey(cd))
return ((Hashtable<FlagState, FlagState>)flagstates.get(cd)).keySet();
else
- return null;
+ return new HashSet<FlagState>();
}
toprocess.add(fstemp);
fstemp=canonicalizeFlagState(sourcenodes,fstemp);
- fs.addEdge(new FEdge(fstemp,"Runtime", null));
+ fs.addEdge(new FEdge(fstemp,"Runtime", null, -1));
}
}