From: bdemsky Date: Wed, 23 May 2007 17:08:08 +0000 (+0000) Subject: color nodes to indicate whether they'll be collected X-Git-Tag: preEdgeChange~566 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7193ba0c68520d07f38c4db49f4ab29c10989de1;p=IRC.git color nodes to indicate whether they'll be collected --- diff --git a/Robust/src/Analysis/TaskStateAnalysis/GarbageAnalysis.java b/Robust/src/Analysis/TaskStateAnalysis/GarbageAnalysis.java new file mode 100644 index 00000000..46cdfb94 --- /dev/null +++ b/Robust/src/Analysis/TaskStateAnalysis/GarbageAnalysis.java @@ -0,0 +1,81 @@ +package Analysis.TaskStateAnalysis; +import IR.*; +import Util.Namer; +import java.util.*; +import Util.GraphNode; +import Util.Edge; + +public class GarbageAnalysis extends Namer { + State state; + TaskAnalysis taskanalysis; + HashSet garbagestates; + HashSet possiblegarbagestates; + + + public GarbageAnalysis(State state, TaskAnalysis taskanalysis) { + this.state=state; + this.taskanalysis=taskanalysis; + this.garbagestates=new HashSet(); + this.possiblegarbagestates=new HashSet(); + doAnalysis(); + } + + public void doAnalysis() { + for(Iterator it=state.getClassSymbolTable().getDescriptorsIterator();it.hasNext();) { + ClassDescriptor cd=(ClassDescriptor) it.next(); + if (taskanalysis.getFlagStates(cd)==null) + continue; + analyzeClass(cd); + } + } + + public void analyzeClass(ClassDescriptor cd) { + Set flagstatenodes=taskanalysis.getFlagStates(cd); + HashSet garbage=new HashSet(); + HashSet possiblegarbage=new HashSet(); + + for(Iterator fsit=flagstatenodes.iterator();fsit.hasNext();) { + FlagState fs=(FlagState)fsit.next(); + if (fs.numedges()==0) + garbage.add(fs); + } + + Stack tovisit=new Stack(); + tovisit.addAll(garbage); + possiblegarbage.addAll(garbage); + while(!tovisit.isEmpty()) { + FlagState fs=(FlagState)tovisit.pop(); + for(int i=0;i"); taskgraphmap.put("/"+cd.getSymbol()+"-t.html", cd); } - } pw.flush(); return null; diff --git a/Robust/src/Main/Main.java b/Robust/src/Main/Main.java index 62e36426..e880f0f6 100644 --- a/Robust/src/Main/Main.java +++ b/Robust/src/Main/Main.java @@ -14,6 +14,7 @@ import Analysis.TaskStateAnalysis.TaskAnalysis; import Analysis.TaskStateAnalysis.TaskGraph; import Analysis.CallGraph.CallGraph; import Analysis.TaskStateAnalysis.TagAnalysis; +import Analysis.TaskStateAnalysis.GarbageAnalysis; import Interface.*; public class Main { @@ -111,25 +112,23 @@ public class Main { BuildFlat bf=new BuildFlat(state,tu); bf.buildFlat(); - CallGraph callgraph=null; - TagAnalysis taganalysis=null; - TaskGraph tg=null; - TaskAnalysis ta=null; - if (state.TASKSTATE) { - callgraph=new CallGraph(state); - taganalysis=new TagAnalysis(state, callgraph); - ta=new TaskAnalysis(state, taganalysis); + CallGraph callgraph=new CallGraph(state); + TagAnalysis taganalysis=new TagAnalysis(state, callgraph); + TaskAnalysis ta=new TaskAnalysis(state, taganalysis); ta.taskAnalysis(); - tg=new TaskGraph(state, ta); + TaskGraph tg=new TaskGraph(state, ta); tg.createDOTfiles(); - } + if (state.WEBINTERFACE) { + GarbageAnalysis ga=new GarbageAnalysis(state, ta); + WebInterface wi=new WebInterface(state, ta, tg, ga); + JhttpServer serve=new JhttpServer(8000,wi); + serve.run(); + } + - if (state.WEBINTERFACE) { - WebInterface wi=new WebInterface(state, ta, tg); - JhttpServer serve=new JhttpServer(8000,wi); - serve.run(); } + BuildCode bc=new BuildCode(state, bf.getMap(), tu); diff --git a/Robust/src/Makefile b/Robust/src/Makefile index f353ea7c..68fbe05f 100644 --- a/Robust/src/Makefile +++ b/Robust/src/Makefile @@ -53,6 +53,7 @@ Analysis/TaskStateAnalysis/TagBinding.class \ Analysis/TaskStateAnalysis/TaskAnalysis.class \ Analysis/TaskStateAnalysis/TaskNode.class \ Analysis/TaskStateAnalysis/TaskGraph.class \ +Analysis/TaskStateAnalysis/GarbageAnalysis.class \ Analysis/CallGraph/CallGraph.class Util/Edge.class \ Util/GraphNode.class Util/Relation.class Util/Namer.class \ Interface/WebInterface.class Interface/HTTPHeader.class \