From: bdemsky Date: Tue, 17 Apr 2007 21:07:30 +0000 (+0000) Subject: clean up some of sivaji's code X-Git-Tag: preEdgeChange~621 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3589cda66cd4b23456128b4cc37c53b4f2d77883;p=IRC.git clean up some of sivaji's code --- diff --git a/Robust/src/Analysis/TaskStateAnalysis/FlagState.java b/Robust/src/Analysis/TaskStateAnalysis/FlagState.java index e7ac6745..007ab7e7 100644 --- a/Robust/src/Analysis/TaskStateAnalysis/FlagState.java +++ b/Robust/src/Analysis/TaskStateAnalysis/FlagState.java @@ -6,108 +6,94 @@ import IR.Flat.*; import java.util.*; - - - -public class FlagState -{ - Hashtable flagstate; - - public FlagState(FlagDescriptor[] flags) - { - flagstate=new Hashtable(flags.length); - { - for (int i=0; i < flags.length; i++) - { - flagstate.put(flags[i],new Boolean(false)); - } - } - } - - public FlagState(Hashtable flagstate) - { - this.flagstate = new Hashtable(flagstate); +public class FlagState { + Hashtable flagstate; + ClassDescriptor cd; + + public FlagState(FlagDescriptor[] flags, ClassDescriptor cd) { + flagstate=new Hashtable(flags.length); + this.cd=cd; + for (int i=0; i < flags.length; i++) { + flagstate.put(flags[i],new Boolean(false)); } - - public Hashtable getStateTable() - { - return flagstate; - } - - public void put(FlagDescriptor fd, Boolean status) - { - flagstate.put(fd,status); + } + + public FlagState(Hashtable flagstate, ClassDescriptor cd) { + this.flagstate = new Hashtable(flagstate); + this.cd=cd; + } + + public Hashtable getStateTable() { + return flagstate; + } + + public void put(FlagDescriptor fd, Boolean status) { + flagstate.put(fd,status); + } + + public boolean get(FlagDescriptor fd) { + if (! flagstate.containsKey(fd)) + return false; + else + return ((Boolean)(flagstate.get(fd))).booleanValue(); + } + + public String toString() { + StringBuffer sb = new StringBuffer(flagstate.size()); + Enumeration e = flagstate.keys(); + + while (e.hasMoreElements()) { + if (((Boolean)(flagstate.get((FlagDescriptor)e.nextElement()))).booleanValue()) + sb.append(1); + else + sb.append(0); } - public boolean get(FlagDescriptor fd) - { - if (! flagstate.containsKey(fd)) - { - return false; - } - else - { - return ((Boolean)(flagstate.get(fd))).booleanValue(); + return new String(sb); + } + + public String toString(FlagDescriptor[] flags) { + StringBuffer sb = new StringBuffer(flagstate.size()); + Enumeration e; + + for(int i=0;i < flags.length; i++) { + e = flagstate.keys(); + + while (e.hasMoreElements()) { + FlagDescriptor fdtemp=(FlagDescriptor)e.nextElement(); + if( flags[i] == fdtemp) { + if (((Boolean)(flagstate.get(fdtemp))).booleanValue()) + sb.append(1); + else + sb.append(0); } + } } - - - public String toString() - { - StringBuffer sb = new StringBuffer(flagstate.size()); - Enumeration e = flagstate.keys(); - - while (e.hasMoreElements()) - { - if (((Boolean)(flagstate.get((FlagDescriptor)e.nextElement()))).booleanValue()) - sb.append(1); - else - sb.append(0); - } - return new String(sb); - } - - public String toString(FlagDescriptor[] flags) - { - StringBuffer sb = new StringBuffer(flagstate.size()); - - Enumeration e; - - for(int i=0;i < flags.length; i++) - { - e = flagstate.keys(); - - while (e.hasMoreElements()) - { - FlagDescriptor fdtemp=(FlagDescriptor)e.nextElement(); - if( flags[i] == fdtemp) - { - if (((Boolean)(flagstate.get(fdtemp))).booleanValue()) - sb.append(1); - else - sb.append(0); - } - } - } - return new String(sb); + return new String(sb); + } + + public Enumeration getFlags() { + return flagstate.keys(); + } + + public boolean equal(Object o) { + if (o instanceof FlagState) { + FlagState fs=(FlagState)o; + if (fs.cd!=cd) + return false; + + Enumeration en = fs.getFlags(); + while(en.hasMoreElements()) { + FlagDescriptor flag=(FlagDescriptor)en.nextElement(); + + if (fs.get(flag) != get(flag)) + return false; + } + return true; } + return false; + } - public Enumeration getFlags() - { - return flagstate.keys(); - } - - public boolean isEqual(FlagState fs) - { - Enumeration en = fs.getFlags(); - while(en.hasMoreElements()) - { - - FlagDescriptor flag=(FlagDescriptor)en.nextElement(); - - //System.out.println(flag.toString()+" "+fs.get(flag)+" "+this.get(flag)); - if (fs.get(flag) != this.get(flag)) - return false; - } - return true; - } + public int hashCode() { + return cd.hashCode()^flagstate.hashCode(); + } } diff --git a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java index 83c2f3a0..f4973400 100644 --- a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java +++ b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java @@ -7,1194 +7,706 @@ import java.util.*; import java.io.File; import java.io.FileWriter; -public class TaskAnalysis -{ - State state; -// Vector vFlags; //Vector holding the FlagDescriptors from all the classes used -// FlagDescriptor flags[]; - Hashtable Adj_List; - Hashtable flags; - Hashtable extern_flags; - Queue q_main; - - /** - * Class Constructor - * - * @param state a flattened State object - * @see State - */ - public TaskAnalysis(State state) - { - this.state=state; - } - private void getFlagsfromClasses() //This function returns the number of external flags amongst the other things it does. - { +public class TaskAnalysis { + State state; + Hashtable Adj_List; + Hashtable flags; + Hashtable extern_flags; + Queue q_main; + + /** + * Class Constructor + * + * @param state a flattened State object + * @see State + */ + public TaskAnalysis(State state) + { + this.state=state; + } + + /** This function returns the number of external flags, etc */ + + private void getFlagsfromClasses() { + flags=new Hashtable(); + extern_flags = new Hashtable(); - flags=new Hashtable(); - extern_flags = new Hashtable(); - - for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) - { - - ClassDescriptor cd = (ClassDescriptor)it_classes.next(); - System.out.println(cd.getSymbol()); - Vector vFlags=new Vector(); - FlagDescriptor flag[]; - int ctr=0; - - - /* Adding the flags of the super class */ - if (cd.getSuper()!=null) - { - ClassDescriptor superdesc=cd.getSuperDesc(); - - for(Iterator it_cflags=superdesc.getFlags();it_cflags.hasNext();) - { - FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); - System.out.println(fd.toString()); - vFlags.add(fd); - } - } - /*************************************/ - - for(Iterator it_cflags=cd.getFlags();it_cflags.hasNext();) - { - FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); - System.out.println(fd.toString()); - vFlags.add(fd); - } - if (vFlags.size()!=0) - { - flag=new FlagDescriptor[vFlags.size()]; - - for(int i=0;i < vFlags.size() ; i++) - { - if (((FlagDescriptor)vFlags.get(i)).getExternal()) - { - flag[ctr]=(FlagDescriptor)vFlags.get(i); - vFlags.remove(flag[ctr]); - ctr++; - } - } - for(int i=0;i < vFlags.size() ; i++) - { - flag[i+ctr]=(FlagDescriptor)vFlags.get(i); - } - extern_flags.put(cd,new Integer(ctr)); - flags.put(cd,flag); - - } + for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) { + + ClassDescriptor cd = (ClassDescriptor)it_classes.next(); + System.out.println(cd.getSymbol()); + Vector vFlags=new Vector(); + FlagDescriptor flag[]; + int ctr=0; + + + /* Adding the flags of the super class */ + if (cd.getSuper()!=null) { + ClassDescriptor superdesc=cd.getSuperDesc(); + + for(Iterator it_cflags=superdesc.getFlags();it_cflags.hasNext();) { + FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); + System.out.println(fd.toString()); + vFlags.add(fd); } - - } + } - public void taskAnalysis() throws java.io.IOException - { - Adj_List=new Hashtable(); + for(Iterator it_cflags=cd.getFlags();it_cflags.hasNext();) { + FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); + System.out.println(fd.toString()); + vFlags.add(fd); + } - getFlagsfromClasses(); + if (vFlags.size()!=0) { + flag=new FlagDescriptor[vFlags.size()]; - int externs; - q_main=new LinkedList(); - - // for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) - for(Iterator it_classes=(Iterator)flags.keys();it_classes.hasNext();) - { - ClassDescriptor cd=(ClassDescriptor)it_classes.next(); - - externs=((Integer)extern_flags.get(cd)).intValue(); - - FlagDescriptor[] fd=(FlagDescriptor[])flags.get(cd); - //Debug block - System.out.println("Inside taskAnalysis;\n Class:"+ cd.getSymbol()); - System.out.println("No of externs " + externs); - System.out.println("No of flags: "+fd.length); - //Debug block - if (fd.length == externs) - { - System.out.println("extern called"); - boolean onlyExterns=true; -// processExterns(true,cd); - /*Queue q_temp=createPossibleRuntimeStates(cd); - if ( q_temp != null) - { - q_main.addAll(q_temp); - } - */ - - } - else - { - if ((fd.length == 1) && (fd[0].getSymbol().compareTo("initialstate")==0)) - { - FlagState fstemp=new FlagState(fd); - Hashtable Adj_List_temp=new Hashtable(); - - fstemp.put(fd[0],new Boolean(true)); - Vector vtemp=new Vector(); - vtemp.add(new Edge(fstemp,"Runtime")); - Adj_List_temp.put(new FlagState(fd),vtemp); - Adj_List.put(cd,Adj_List_temp); - - Queue q_temp=analyseTasks(new TriggerState(cd,fstemp)); - - - if ( q_temp != null) - { - q_main.addAll(q_temp); - } + for(int i=0;i < vFlags.size() ; i++) { + if (((FlagDescriptor)vFlags.get(i)).getExternal()) { + flag[ctr]=(FlagDescriptor)vFlags.get(i); + vFlags.remove(flag[ctr]); + ctr++; + } + } + for(int i=0;i < vFlags.size() ; i++) { + flag[i+ctr]=(FlagDescriptor)vFlags.get(i); + } + extern_flags.put(cd,new Integer(ctr)); + flags.put(cd,flag); + + } + } + } - } - } - } - while (q_main.size() > 0) + public void taskAnalysis() throws java.io.IOException { + Adj_List=new Hashtable(); + + getFlagsfromClasses(); + + int externs; + q_main=new LinkedList(); + + for(Iterator it_classes=(Iterator)flags.keys();it_classes.hasNext();) { + ClassDescriptor cd=(ClassDescriptor)it_classes.next(); + + externs=((Integer)extern_flags.get(cd)).intValue(); + + FlagDescriptor[] fd=(FlagDescriptor[])flags.get(cd); + //Debug block + System.out.println("Inside taskAnalysis;\n Class:"+ cd.getSymbol()); + System.out.println("No of externs " + externs); + System.out.println("No of flags: "+fd.length); + //Debug block + if (fd.length == externs) { + System.out.println("extern called"); + boolean onlyExterns=true; + } else { + if ((fd.length == 1) + && (fd[0].getSymbol().compareTo("initialstate")==0)) { + FlagState fstemp=new FlagState(fd, cd); + Hashtable Adj_List_temp=new Hashtable(); + + fstemp.put(fd[0],new Boolean(true)); + Vector vtemp=new Vector(); + vtemp.add(new Edge(fstemp,"Runtime")); + Adj_List_temp.put(new FlagState(fd,cd),vtemp); + Adj_List.put(cd,Adj_List_temp); + + Queue q_temp=analyseTasks(new TriggerState(cd,fstemp)); + + + if ( q_temp != null) { + q_main.addAll(q_temp); + } + + } + } + } + while (q_main.size() > 0) { + // ****debug block******** + for (Iterator it_qm=q_main.iterator();it_qm.hasNext();) { - // ****debug block******** - for (Iterator it_qm=q_main.iterator();it_qm.hasNext();) - { - TriggerState ts_qm=(TriggerState)it_qm.next(); - FlagState fs_qm=ts_qm.getState(); - System.out.println("/***********contents of main q**********/"); - System.out.println("FS : "+fs_qm.toString((FlagDescriptor [])flags.get(ts_qm.getClassDescriptor()))); - - - } - System.out.println("/*********************************/"); - // ****debug block******** - Queue q_temp=analyseTasks(q_main.poll()); - if ( q_temp != null) - { - q_main.addAll(q_temp); - } - } - - //Creating DOT files - Enumeration e=Adj_List.keys(); + TriggerState ts_qm=(TriggerState)it_qm.next(); + FlagState fs_qm=ts_qm.getState(); + System.out.println("/***********contents of main q**********/"); + System.out.println("FS : "+fs_qm.toString((FlagDescriptor [])flags.get(ts_qm.getClassDescriptor()))); + + + } + System.out.println("/*********************************/"); + // ****debug block******** + Queue q_temp=analyseTasks(q_main.poll()); + if ( q_temp != null) { + q_main.addAll(q_temp); + } + } + + //Creating DOT files + Enumeration e=Adj_List.keys(); + + while (e.hasMoreElements()) { + System.out.println("creating dot file"); + ClassDescriptor cdtemp=(ClassDescriptor)e.nextElement(); + System.out.println((cdtemp.getSymbol())); + createDOTfile(cdtemp); + } + + } - while (e.hasMoreElements()) - { - System.out.println("creating dot file"); - ClassDescriptor cdtemp=(ClassDescriptor)e.nextElement(); - System.out.println((cdtemp.getSymbol())); - // createDOTfile((ClassDescriptor)e.nextElement()); - createDOTfile(cdtemp); - } + public Queue analyseTasks(TriggerState ts) throws java.io.IOException { + Queue q; + Queue qft; + + Hashtable Adj_List_temp; + Queue q_retval; + + ClassDescriptor cd=ts.getClassDescriptor(); + + if (Adj_List.containsKey(cd)) { + //Debug block + System.out.println("Inside analyseTasks;\n Checking if adj_list contains the class desc:"+ cd.getSymbol()); + //Debug block + + Adj_List_temp=(Hashtable)Adj_List.get(cd); + } else { + Adj_List_temp=new Hashtable(); + Adj_List.put(cd,Adj_List_temp); } - public Queue analyseTasks(TriggerState ts) throws java.io.IOException - { - Queue q; - Queue qft; - - Hashtable Adj_List_temp; - Queue q_retval; + int externs=((Integer)extern_flags.get(cd)).intValue(); + FlagDescriptor[] fd=(FlagDescriptor[])flags.get(cd); - ClassDescriptor cd=ts.getClassDescriptor(); + q = new LinkedList(); + q_retval=new LinkedList(); + q.offer(ts.getState()); - if (Adj_List.containsKey(cd)) - { - //Debug block - System.out.println("Inside analyseTasks;\n Checking if adj_list contains the class desc:"+ cd.getSymbol()); - //Debug block - - Adj_List_temp=(Hashtable)Adj_List.get(cd); - } - else - { - Adj_List_temp=new Hashtable(); - Adj_List.put(cd,Adj_List_temp); - } + //***Debug Block*** + while (q.size() != 0) { + System.out.println("inside while loop in analysetasks \n"); + + FlagState fsworking=q.poll(); + + //***Debug Block*** + FlagDescriptor[] ftemp=(FlagDescriptor[])flags.get(cd); + System.out.println("Processing state: "+cd.getSymbol()+" " + fsworking.toString(ftemp)); - int externs=((Integer)extern_flags.get(cd)).intValue(); - FlagDescriptor[] fd=(FlagDescriptor[])flags.get(cd); + //***Debug Block*** - q = new LinkedList(); - q_retval=new LinkedList(); - q.offer(ts.getState()); + + for(Iterator it_tasks=state.getTaskSymbolTable().getDescriptorsIterator();it_tasks.hasNext();) { + TaskDescriptor td = (TaskDescriptor)it_tasks.next(); + boolean taskistriggered=false; + int ctr=0; + String taskname=getTaskName(td); + + //***Debug Block*** - // - /*Enumeration eFlags=fsinitial.getStateTable().keys(); - - while(eFlags.hasMoreElements()) - { - System.out.println(((FlagDescriptor)eFlags.nextElement()).toString()); - } */ + + System.out.println(); + System.out.println("Method: AnalyseTasks"); + System.out.println(taskname); + System.out.println(); + //***Debug Block*** - while (q.size() != 0 /* && debug_ctr<10*/ ) - { - System.out.println("inside while loop in analysetasks \n"); - - FlagState fsworking=q.poll(); - - //***Debug Block*** - FlagDescriptor[] ftemp=(FlagDescriptor[])flags.get(cd); - System.out.println("Processing state: "+cd.getSymbol()+" " + fsworking.toString(ftemp)); - - //***Debug Block*** - - - for(Iterator it_tasks=state.getTaskSymbolTable().getDescriptorsIterator();it_tasks.hasNext();) - { - TaskDescriptor td = (TaskDescriptor)it_tasks.next(); - boolean taskistriggered=false; - int ctr=0; - String taskname=getTaskName(td); - - - - //***Debug Block*** - - System.out.println(); - System.out.println("Method: AnalyseTasks"); - System.out.println(taskname); - System.out.println(); - - //***Debug Block*** - - - for(int i=0; i < td.numParameters(); i++) - { - //System.out.println("\n Num of parameters: "+td.numParameters()); - - FlagExpressionNode fen=td.getFlag(td.getParameter(i)); - if (isTaskTrigger(fen,fsworking)) - taskistriggered = true; - // ctr++; - - } - - //***Debug Block*** - - //System.out.println("xxx "+ctr); - - //***Debug Block*** - - /* if (ctr == td.numParameters()) - { - taskistriggered = true; - }*/ - if (taskistriggered) - { - //***Debug Block*** - // - System.out.println("inside taskistriggered"); - - //***Debug Block*** - - // Adj_List.put(fsworking,new Integer(2)); - // System.out.println(td.toString()); - // printAdjList(cd); - - if (wasFlagStateProcessed(Adj_List_temp,fsworking)) - { - if (! (fd.length == externs)) - continue; - } - else - Adj_List_temp.put(fsworking,new Vector()); + + for(int i=0; i < td.numParameters(); i++) { + FlagExpressionNode fen=td.getFlag(td.getParameter(i)); + if (isTaskTrigger(fen,fsworking)) + taskistriggered = true; + } + + if (taskistriggered) { + //***Debug Block*** + // + System.out.println("inside taskistriggered"); + + //***Debug Block*** + if (wasFlagStateProcessed(Adj_List_temp,fsworking)) { + if (! (fd.length == externs)) + continue; + } else + Adj_List_temp.put(fsworking,new Vector()); -/* qft=createPossibleRuntimeStates(new TriggerState(cd,new FlagState(fsworking.getStateTable()))); - for (Iterator it_qft=qft.iterator();it_qft.hasNext();) - { - FlagState fs_qft=(FlagState)it_qft.next(); - if (!existsInFSQueue(q,fs_qft)) - q.add(fs_qft); + FlatMethod fm = state.getMethodFlat(td); + FlatNode fn=fm.methodEntryNode(); + + HashSet tovisit= new HashSet(); + HashSet visited= new HashSet(); + + tovisit.add(fn); + while(!tovisit.isEmpty()) { + FlatNode fn1 = (FlatNode)tovisit.iterator().next(); + tovisit.remove(fn1); + visited.add(fn1); + for(int i = 0; i < fn1.numNext(); i++) { + FlatNode nn=fn1.getNext(i); + if (nn.kind()==13) { + //***Debug Block*** + if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.PRE) { + throw new Error("PRE FlagActions not supported"); + } else if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.NEWOBJECT) { + //***Debug Block*** + System.out.println("NEWObject"); + //***Debug Block*** + + + TempDescriptor[] tdArray = ((FlatFlagActionNode)nn).readsTemps(); + + //Under the safe assumption that all the temps in FFAN.NewObject node are of the same type(class) + ClassDescriptor cd_new=tdArray[0].getType().getClassDesc(); + + System.out.println("Class: "+cd_new.getSymbol()); + + FlagState fstemp=new FlagState((FlagDescriptor[])flags.get(cd_new), cd_new); + + for(Iterator it_tfp=((FlatFlagActionNode)nn).getTempFlagPairs();it_tfp.hasNext();) { + TempFlagPair tfp=(TempFlagPair)it_tfp.next(); + if (tfp.getFlag()==null) { + System.out.println("test1"); + q_retval.addAll(createPossibleRuntimeStates(new TriggerState(cd_new,new FlagState((FlagDescriptor[])flags.get(cd_new), cd_new)))); + // ****debug block******** + System.out.println("/***********contents of q ret**********/"); + for (Iterator it_qret=q_retval.iterator();it_qret.hasNext();) { + TriggerState ts_qret=(TriggerState)it_qret.next(); + FlagState fs_qret=ts_qret.getState(); - } -*/ - FlatMethod fm = state.getMethodFlat(td); - FlatNode fn=fm.methodEntryNode(); - - HashSet tovisit= new HashSet(); - HashSet visited= new HashSet(); - - tovisit.add(fn); - while(!tovisit.isEmpty()) - { - FlatNode fn1 = (FlatNode)tovisit.iterator().next(); - tovisit.remove(fn1); - visited.add(fn1); - for(int i = 0; i < fn1.numNext(); i++) - { - FlatNode nn=fn1.getNext(i); - /* if (nn.kind()==4) - { - ClassDescriptor cd_flatnew=processFlatNew(nn); - if (cd_flatnew != null) - { - //Create possible runtime states for this object - q_retval.addAll(createPossibleRuntimeStates(new TriggerState(cd_flatnew,new FlagState((FlagDescriptor[])flags.get(cd_flatnew))))); - } - } - else - */ - - if (nn.kind()==13) - { - //***Debug Block*** - // System.out.println(); - - - - //***Debug Block*** - if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.PRE) - { - //***Debug Block*** - System.out.println("PRE"); - //***Debug Block*** - - FlagState fstemp=new FlagState(fsworking.getStateTable()); - for(Iterator it_tfp=((FlatFlagActionNode)nn).getTempFlagPairs();it_tfp.hasNext();) - { - TempFlagPair tfp=(TempFlagPair)it_tfp.next(); - // System.out.println(tfp.getTemp()+" " +tfp.getFlag()+" "+((FlatFlagActionNode)nn).getFlagChange(tfp)); - fstemp.put(tfp.getFlag(),new Boolean(((FlatFlagActionNode)nn).getFlagChange(tfp))); - } - if (! edgeexists(Adj_List_temp,fsworking,fstemp,taskname+"_PRE")) - { - ((Vector)Adj_List_temp.get(fsworking)).add(new Edge(fstemp,taskname+"_PRE")); - } - if (!wasFlagStateProcessed(Adj_List_temp,fstemp)) - { - q.offer(fstemp); - //pretasks.put(td,fstemp); - - } - fstemp=null; - - } - if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.NEWOBJECT) - { - //***Debug Block*** - System.out.println("NEWObject"); - //***Debug Block*** - - - TempDescriptor[] tdArray = ((FlatFlagActionNode)nn).readsTemps(); - - //Under the safe assumption that all the temps in FFAN.NewObject node are of the same type(class) - ClassDescriptor cd_new=tdArray[0].getType().getClassDesc(); - - System.out.println("Class: "+cd_new.getSymbol()); - - FlagState fstemp=new FlagState((FlagDescriptor[])flags.get(cd_new)); - - for(Iterator it_tfp=((FlatFlagActionNode)nn).getTempFlagPairs();it_tfp.hasNext();) - { - TempFlagPair tfp=(TempFlagPair)it_tfp.next(); - if (tfp.getFlag()==null) - { - System.out.println("test1"); - q_retval.addAll(createPossibleRuntimeStates(new TriggerState(cd_new,new FlagState((FlagDescriptor[])flags.get(cd_new))))); - // ****debug block******** - System.out.println("/***********contents of q ret**********/"); - for (Iterator it_qret=q_retval.iterator();it_qret.hasNext();) - { - TriggerState ts_qret=(TriggerState)it_qret.next(); - FlagState fs_qret=ts_qret.getState(); - - System.out.println("FS : "+fs_qret.toString((FlagDescriptor [])flags.get(ts_qret.getClassDescriptor()))); - } - System.out.println("/*********************************/"); - // ****debug block******** - } - else - fstemp.put(tfp.getFlag(),new Boolean(((FlatFlagActionNode)nn).getFlagChange(tfp))); - - - } - - //***Debug Block*** - System.out.println("test2"); - System.out.println("Newobj fsworking "+fsworking.toString((FlagDescriptor [])flags.get(cd_new))); - System.out.println("Newobj fstemp "+fstemp.toString((FlagDescriptor [])flags.get(cd_new))); - - //***Debug Block*** - - q_retval.offer(new TriggerState(cd_new,fstemp)); - - //make this a function containsExterns() - int extrns=((Integer)extern_flags.get(cd_new)).intValue(); - - if ((extrns >0) && (extrns!=((FlagDescriptor[])flags.get(cd_new)).length)) - q_retval.addAll(createPossibleRuntimeStates(new TriggerState(cd_new,fstemp))); - - fstemp=null; - // ****debug block******** - System.out.println("/***********contents of q ret 1**********/"); - for (Iterator it_qret=q_retval.iterator();it_qret.hasNext();) - { - TriggerState ts_qret=(TriggerState)it_qret.next(); - FlagState fs_qret=ts_qret.getState(); - - System.out.println("FS : "+fs_qret.toString((FlagDescriptor [])flags.get(ts_qret.getClassDescriptor()))); - } - System.out.println("/*********************************/"); - // ****debug block******** + System.out.println("FS : "+fs_qret.toString((FlagDescriptor [])flags.get(ts_qret.getClassDescriptor()))); + } + System.out.println("/*********************************/"); + // ****debug block******** + } else + fstemp.put(tfp.getFlag(),new Boolean(((FlatFlagActionNode)nn).getFlagChange(tfp))); + + + } + + //***Debug Block*** + System.out.println("test2"); + System.out.println("Newobj fsworking "+fsworking.toString((FlagDescriptor [])flags.get(cd_new))); + System.out.println("Newobj fstemp "+fstemp.toString((FlagDescriptor [])flags.get(cd_new))); + + //***Debug Block*** + + q_retval.offer(new TriggerState(cd_new,fstemp)); + + //make this a function containsExterns() + int extrns=((Integer)extern_flags.get(cd_new)).intValue(); + + if ((extrns >0) && (extrns!=((FlagDescriptor[])flags.get(cd_new)).length)) + q_retval.addAll(createPossibleRuntimeStates(new TriggerState(cd_new,fstemp))); + + fstemp=null; + // ****debug block******** + System.out.println("/***********contents of q ret 1**********/"); + for (Iterator it_qret=q_retval.iterator();it_qret.hasNext();) { + TriggerState ts_qret=(TriggerState)it_qret.next(); + FlagState fs_qret=ts_qret.getState(); + + System.out.println("FS : "+fs_qret.toString((FlagDescriptor [])flags.get(ts_qret.getClassDescriptor()))); + } + System.out.println("/*********************************/"); + // ****debug block******** - } - if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.TASKEXIT) - { - //***Debug Block*** - // - System.out.println("TaskExit"); - //***Debug Block*** - - FlagState fstemp=new FlagState(fsworking.getStateTable()); - - for(Iterator it_tfp=((FlatFlagActionNode)nn).getTempFlagPairs();it_tfp.hasNext();) - { - TempFlagPair tfp=(TempFlagPair)it_tfp.next(); - fstemp.put(tfp.getFlag(),new Boolean(((FlatFlagActionNode)nn).getFlagChange(tfp))); - } - //***Debug Block*** - System.out.println(); - System.out.println(fstemp.toString((FlagDescriptor [])flags.get(cd))); - System.out.println(); - System.out.println("taskexit fsworking "+fsworking.toString((FlagDescriptor [])flags.get(cd))); - System.out.println("taskexit fstemp "+fstemp.toString((FlagDescriptor [])flags.get(cd))); - - //***Debug Block*** - if (!edgeexists(Adj_List_temp,fsworking,fstemp,taskname)) - { - - - ((Vector)Adj_List_temp.get(fsworking)).add(new Edge(fstemp,taskname)); - - } - if (!wasFlagStateProcessed(Adj_List_temp,fstemp)) - { - q.offer(fstemp); - } - fstemp=null; - - } - } - - if (!visited.contains(nn) && !tovisit.contains(nn)) - { - tovisit.add(nn); - } - } - } } + if (((FlatFlagActionNode)nn).getFFANType() == FlatFlagActionNode.TASKEXIT) { + //***Debug Block*** + // + System.out.println("TaskExit"); + //***Debug Block*** + + FlagState fstemp=new FlagState(fsworking.getStateTable(), null); //WHAT CLASS IS THIS + + for(Iterator it_tfp=((FlatFlagActionNode)nn).getTempFlagPairs();it_tfp.hasNext();) { + TempFlagPair tfp=(TempFlagPair)it_tfp.next(); + fstemp.put(tfp.getFlag(),new Boolean(((FlatFlagActionNode)nn).getFlagChange(tfp))); + } + //***Debug Block*** + System.out.println(); + System.out.println(fstemp.toString((FlagDescriptor [])flags.get(cd))); + System.out.println(); + System.out.println("taskexit fsworking "+fsworking.toString((FlagDescriptor [])flags.get(cd))); + System.out.println("taskexit fstemp "+fstemp.toString((FlagDescriptor [])flags.get(cd))); + + //***Debug Block*** + if (!edgeexists(Adj_List_temp,fsworking,fstemp,taskname)) { + ((Vector)Adj_List_temp.get(fsworking)).add(new Edge(fstemp,taskname)); + } + if (!wasFlagStateProcessed(Adj_List_temp,fstemp)) { + q.offer(fstemp); + } + fstemp=null; + + } + } + + if (!visited.contains(nn) && !tovisit.contains(nn)) { + tovisit.add(nn); + } } - - } - - - if (q_retval.size()==0) - { - return null; - } - else - { - return q_retval; + } } + } } + if (q_retval.size()==0) + return null; + else + return q_retval; + } + + private boolean isTaskTrigger(FlagExpressionNode fen,FlagState fs) { + if (fen instanceof FlagNode) + return fs.get(((FlagNode)fen).getFlag()); + else + switch (((FlagOpNode)fen).getOp().getOp()) { + case Operation.LOGIC_AND: + return ((isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)) && (isTaskTrigger(((FlagOpNode)fen).getRight(),fs))); + case Operation.LOGIC_OR: + return ((isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)) || (isTaskTrigger(((FlagOpNode)fen).getRight(),fs))); + case Operation.LOGIC_NOT: + return !(isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)); + default: + return false; + } + } - private boolean isTaskTrigger(FlagExpressionNode fen,FlagState fs) - { - if (fen instanceof FlagNode) - { - return fs.get(((FlagNode)fen).getFlag()); - } - else - { - switch (((FlagOpNode)fen).getOp().getOp()) - { - case Operation.LOGIC_AND: - return ((isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)) && (isTaskTrigger(((FlagOpNode)fen).getRight(),fs))); - case Operation.LOGIC_OR: - return ((isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)) || (isTaskTrigger(((FlagOpNode)fen).getRight(),fs))); - case Operation.LOGIC_NOT: - return !(isTaskTrigger(((FlagOpNode)fen).getLeft(),fs)); - default: - return false; - } - } + private boolean wasFlagStateProcessed(Hashtable Adj_List,FlagState fs) { + Enumeration e=Adj_List.keys(); + + while(e.hasMoreElements()) { + FlagState fsv = (FlagState)(e.nextElement()); + if (fsv.isEqual(fs)) + return true; } + return false; + } - private boolean wasFlagStateProcessed(Hashtable Adj_List,FlagState fs) - { - Enumeration e=Adj_List.keys(); - - while(e.hasMoreElements()) - { - FlagState fsv = (FlagState)(e.nextElement()); + private boolean existsInQueue(TriggerState ts) { + for(Iterator it_queue=q_main.iterator();it_queue.hasNext();) { + TriggerState ts_local=(TriggerState)it_queue.next(); - if (fsv.isEqual(fs)) - { - return true; - } - } - return false; + if (ts_local.equals(ts)) + return true; } + return false; + } - private boolean existsInQueue(TriggerState ts) - { - for(Iterator it_queue=q_main.iterator();it_queue.hasNext();) - { - TriggerState ts_local=(TriggerState)it_queue.next(); - - if (ts_local.equals(ts)) - { - return true; - } - - } - return false; - + private boolean existsInFSQueue(Queue q,FlagState fs) { + for (Iterator it_q=q.iterator();it_q.hasNext();) { + if(((FlagState)it_q.next()).isEqual(fs)) + return true; } - - private boolean existsInFSQueue(Queue q,FlagState fs) - { - for (Iterator it_q=q.iterator();it_q.hasNext();) - { - if(((FlagState)it_q.next()).isEqual(fs)) - return true; - - } - return false; + return false; + } + + public void printAdjList(ClassDescriptor cd) { + Enumeration e=((Hashtable)Adj_List.get(cd)).keys(); + while(e.hasMoreElements()) { + FlagState fsv = (FlagState)(e.nextElement()); + System.out.println(fsv.toString((FlagDescriptor [])flags.get(cd))); } + } - public void printAdjList(ClassDescriptor cd) - { - Enumeration e=((Hashtable)Adj_List.get(cd)).keys(); - //System.out.println(Adj_List.size()); + public void createDOTfile(ClassDescriptor cd) throws java.io.IOException { + File dotfile= new File("graph"+cd.getSymbol()+".dot"); - while(e.hasMoreElements()) - { - FlagState fsv = (FlagState)(e.nextElement()); - // System.out.println("fsv val: "+Adj_List.get(fsv)); - System.out.println(fsv.toString((FlagDescriptor [])flags.get(cd))); - } - } - public void createDOTfile(ClassDescriptor cd) throws java.io.IOException - { + FileWriter dotwriter=new FileWriter(dotfile,true); - File dotfile= new File("graph"+cd.getSymbol()+".dot"); + dotwriter.write("digraph G{ \n"); + dotwriter.write("center=true;\norientation=landscape;\n"); - FileWriter dotwriter=new FileWriter(dotfile,true); + Enumeration e=((Hashtable)Adj_List.get(cd)).keys(); + while(e.hasMoreElements()) { + FlagState fsv = (FlagState)(e.nextElement()); + System.out.println(fsv.toString()); + Hashtable test=(Hashtable)Adj_List.get(cd); + Vector edges=(Vector)test.get(fsv); + for(int i=0;i < edges.size();i++) { + dotwriter.write(fsv.toString((FlagDescriptor [])flags.get(cd))+" -> "+((Edge)edges.get(i)).getState().toString((FlagDescriptor [])flags.get(cd))+"[label=\""+((Edge)edges.get(i)).getName()+"\"];\n"); + } - dotwriter.write("digraph G{ \n"); - - dotwriter.write("center=true;\norientation=landscape;\n"); - - - Enumeration e=((Hashtable)Adj_List.get(cd)).keys(); - while(e.hasMoreElements()) - { - FlagState fsv = (FlagState)(e.nextElement()); - System.out.println(fsv.toString()); - Hashtable test=(Hashtable)Adj_List.get(cd); - Vector edges=(Vector)test.get(fsv); - for(int i=0;i < edges.size();i++) - { - dotwriter.write(fsv.toString((FlagDescriptor [])flags.get(cd))+" -> "+((Edge)edges.get(i)).getState().toString((FlagDescriptor [])flags.get(cd))+"[label=\""+((Edge)edges.get(i)).getName()+"\"];\n"); - } - - } - dotwriter.write("}\n"); - dotwriter.flush(); - dotwriter.close(); } - - private String getTaskName(TaskDescriptor td) - { - StringTokenizer st = new StringTokenizer(td.toString(),"("); - return st.nextToken(); + dotwriter.write("}\n"); + dotwriter.flush(); + dotwriter.close(); + } + + private String getTaskName(TaskDescriptor td) { + StringTokenizer st = new StringTokenizer(td.toString(),"("); + return st.nextToken(); + } + + private boolean edgeexists(Hashtable Adj_List_local,FlagState v1, FlagState v2,String name) { + Vector edges=(Vector)Adj_List_local.get(v1); + + if (edges == null) { + System.out.println("no edges"); + } else { + for(int i=0;i < edges.size();i++) { + FlagState fs=((Edge)edges.get(i)).getState(); + if (fs.isEqual(v2) && (name.compareTo(((Edge)edges.get(i)).getName())==0)) + return true; + } } - private boolean edgeexists(Hashtable Adj_List_local,FlagState v1, FlagState v2,String name) - { - Vector edges=(Vector)Adj_List_local.get(v1); - - if (edges == null) - { - System.out.println("no edges"); - } - else - {for(int i=0;i < edges.size();i++) - { - FlagState fs=((Edge)edges.get(i)).getState(); - if (fs.isEqual(v2) && (name.compareTo(((Edge)edges.get(i)).getName())==0)) - return true; - } - } - return false; + return false; + } + + private void processExterns(boolean onlyExterns,ClassDescriptor cd) throws java.io.IOException { + int noOfIterations; + Hashtable Adj_List_temp; + if (Adj_List.containsKey(cd)) { + Adj_List_temp=(Hashtable)Adj_List.get(cd); + } else { + Adj_List_temp=new Hashtable(); + Adj_List.put(cd,Adj_List_temp); } - private void processExterns(boolean onlyExterns,ClassDescriptor cd) throws java.io.IOException - { - int noOfIterations; - Hashtable Adj_List_temp; - if (Adj_List.containsKey(cd)) - { - Adj_List_temp=(Hashtable)Adj_List.get(cd); - } - else - { - Adj_List_temp=new Hashtable(); - Adj_List.put(cd,Adj_List_temp); - } - - - if (onlyExterns) - { - FlagDescriptor [] fd=(FlagDescriptor [])flags.get(cd); - System.out.println("onlyExterns"+fd.length); - noOfIterations=(int)Math.pow(2.0,fd.length); - boolean BoolValTable[]=new boolean[fd.length]; - - for(int i=0; i < fd.length ; i++) - { - System.out.println(fd[i].getSymbol()); - BoolValTable[i]=false; - } - Adj_List_temp.put(new FlagState(fd),new Vector()); - - for(int k=1; k