From 51f40170bab3a0b2bb4869579233ac0f22729dcf Mon Sep 17 00:00:00 2001 From: bdemsky Date: Tue, 6 Jun 2006 05:05:46 +0000 Subject: [PATCH] Checkins --- Robust/src/Analysis/CallGraph/CallGraph.java | 14 ++++++++++++ Robust/src/Analysis/Flag/FlagAnalysis.java | 9 ++++++-- Robust/src/IR/Flat/BuildFlat.java | 23 ++++++++++---------- Robust/src/Makefile | 5 +++-- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Robust/src/Analysis/CallGraph/CallGraph.java b/Robust/src/Analysis/CallGraph/CallGraph.java index 2b08617f..c8129723 100644 --- a/Robust/src/Analysis/CallGraph/CallGraph.java +++ b/Robust/src/Analysis/CallGraph/CallGraph.java @@ -64,6 +64,20 @@ public class CallGraph { return ns; } + /** Given a call to MethodDescriptor, lists the methods which + could actually be call by that method. */ + public Set getMethodCalls(MethodDescriptor md) { + HashSet ns=new HashSet(); + ns.add(md); + Set s=(Set)methodmap.get(md); + if (s!=null) + for(Iterator it=s.iterator();it.hasNext();) { + MethodDescriptor md2=(MethodDescriptor)it.next(); + ns.addAll(getMethodCalls(md2)); + } + return ns; + } + private void buildGraph() { Iterator it=state.getClassSymbolTable().getDescriptorsIterator(); while(it.hasNext()) { diff --git a/Robust/src/Analysis/Flag/FlagAnalysis.java b/Robust/src/Analysis/Flag/FlagAnalysis.java index ca2a1f80..0024e870 100644 --- a/Robust/src/Analysis/Flag/FlagAnalysis.java +++ b/Robust/src/Analysis/Flag/FlagAnalysis.java @@ -1,14 +1,19 @@ package Analysis.Flag; import IR.State; +import Analysis.CallGraph.CallGraph; public class FlagAnalysis { State state; - + CallGraph cg; - public FlagAnalysis(State state) { + public FlagAnalysis(State state, CallGraph cg) { this.state=state; + this.cg=cg; } + /** Need: Map from tasks -> flag transitions task -> new + objects/flags */ + public void doAnalysis() { } diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index 3517539d..be64f97a 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -125,6 +125,18 @@ public class BuildFlat { FlatNew fn=new FlatNew(td, out_temp); TempDescriptor[] temps=new TempDescriptor[con.numArgs()]; FlatNode last=fn; + + if (con.getFlagEffects()!=null) { + FlatFlagActionNode ffan=new FlatFlagActionNode(false); + FlagEffects fes=con.getFlagEffects(); + TempDescriptor flagtemp=out_temp; + for(int j=0;j