X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FAnalysis%2FTaskStateAnalysis%2FTaskGraph.java;h=6bfb23cb319e03674ec4a2cc6f334efcc66d28a2;hb=cdcf09c40af1419fa42932aae249cb79b69b5daf;hp=00b31dc07259319366acba057e43b53fa44b8f49;hpb=db4be920e5f3f9785aae8508b2a68b84963531a7;p=IRC.git diff --git a/Robust/src/Analysis/TaskStateAnalysis/TaskGraph.java b/Robust/src/Analysis/TaskStateAnalysis/TaskGraph.java deleted file mode 100644 index 00b31dc0..00000000 --- a/Robust/src/Analysis/TaskStateAnalysis/TaskGraph.java +++ /dev/null @@ -1,108 +0,0 @@ -package Analysis.TaskStateAnalysis; -import java.util.*; -import IR.State; -import IR.SymbolTable; -import IR.ClassDescriptor; -import java.io.File; -import java.io.FileWriter; -import java.io.FileOutputStream; - -public class TaskGraph { - TaskAnalysis taskanalysis; - State state; - Hashtable cdtonodes; - - public TaskGraph(State state, TaskAnalysis taskanalysis) { - this.state=state; - this.taskanalysis=taskanalysis; - this.cdtonodes=new Hashtable(); - - for(Iterator classit=state.getClassSymbolTable().getDescriptorsIterator();classit.hasNext();) { - ClassDescriptor cd=(ClassDescriptor) classit.next(); - if (cd.hasFlags()) - produceTaskNodes(cd); - } - } - - - public void createDOTfiles() { - for(Iterator it_classes=(Iterator)cdtonodes.keys();it_classes.hasNext();) { - ClassDescriptor cd=(ClassDescriptor) it_classes.next(); - Set tasknodes=getTaskNodes(cd); - if (tasknodes!=null) { - try { - File dotfile_tasknodes=new File("graph"+cd.getSymbol()+"_task.dot"); - FileOutputStream dotstream=new FileOutputStream(dotfile_tasknodes,true); - TaskNode.DOTVisitor.visit(dotstream,tasknodes); - } catch(Exception e) { - e.printStackTrace(); - throw new Error(); - } - } - } - } - - /** Returns the set of TaskNodes for the class descriptor cd */ - - public Set getTaskNodes(ClassDescriptor cd) { - if (cdtonodes.containsKey(cd)) - return ((Hashtable)cdtonodes.get(cd)).keySet(); - else - return null; - } - - private TaskNode canonicalizeTaskNode(Hashtable nodes, TaskNode node){ - if (nodes.containsKey(node)) - return (TaskNode)nodes.get(node); - else{ - nodes.put(node,node); - return (TaskNode)node; - } - } - - private void produceTaskNodes(ClassDescriptor cd) { - Set fsnodes=taskanalysis.getFlagStates(cd); - if (fsnodes==null) - return; - - Hashtable tasknodes=new Hashtable(); - cdtonodes.put(cd, tasknodes); - - for(Iterator it=fsnodes.iterator();it.hasNext();) { - FlagState fs=(FlagState)it.next(); - Iterator it_inedges=fs.inedges(); - TaskNode tn,sn; - - if (fs.isSourceNode()) { - sn=new TaskNode("Start Node"); - if(fs.edges().hasNext()){ - addEdges(fs,sn); - } - } - - while(it_inedges.hasNext()){ - - FEdge inedge=(FEdge)it_inedges.next(); - tn=new TaskNode(inedge.getLabel()); - if(fs.edges().hasNext()){ - addEdges(fs,tn); - } - } - } - } - - private void addEdges(FlagState fs, TaskNode tn){ - - Hashtable tasknodes=(Hashtable)cdtonodes.get(fs.getClassDescriptor()); - tn=(TaskNode)canonicalizeTaskNode(tasknodes, tn); - for (Iterator it_edges=fs.edges();it_edges.hasNext();){ - TaskNode target=new TaskNode(((FEdge)it_edges.next()).getLabel()); - target=(TaskNode)canonicalizeTaskNode(tasknodes,target); - - TEdge newedge=new TEdge(target); - if (! tn.edgeExists(newedge)) - tn.addEdge(new TEdge(target)); - } - - } -}