Checkins
authorbdemsky <bdemsky>
Tue, 6 Jun 2006 05:05:46 +0000 (05:05 +0000)
committerbdemsky <bdemsky>
Tue, 6 Jun 2006 05:05:46 +0000 (05:05 +0000)
Robust/src/Analysis/CallGraph/CallGraph.java
Robust/src/Analysis/Flag/FlagAnalysis.java
Robust/src/IR/Flat/BuildFlat.java
Robust/src/Makefile

index 2b08617fc6a43cb4f5b02d0aba700493c3b6ac07..c8129723d07b131172621fb5f4d08ea5c9b890ce 100644 (file)
@@ -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()) {
index ca2a1f8076561ea65de88d14c1470f578683b2a9..0024e8707d662323cb79eb654c0a0d8745607176 100644 (file)
@@ -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() {
        
     }
index 3517539d88feda77dd2975ecf65ea04e053dcb6f..be64f97a34e62fc28afb2e04a923950f0a0c7834 100644 (file)
@@ -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<fes.numEffects();j++) {
+                   FlagEffect fe=fes.getEffect(j);
+                   ffan.addFlagAction(flagtemp, fe.getFlag(), fe.getStatus());
+               }
+               last.addNext(ffan);
+               last=ffan;
+           }
            //Build arguments
            for(int i=0;i<con.numArgs();i++) {
                ExpressionNode en=con.getArg(i);
@@ -139,17 +151,6 @@ public class BuildFlat {
            FlatCall fc=new FlatCall(md, null, out_temp, temps);
            last.addNext(fc);
            last=fc;
-           if (con.getFlagEffects()!=null) {
-               FlatFlagActionNode ffan=new FlatFlagActionNode(false);
-               FlagEffects fes=con.getFlagEffects();
-               TempDescriptor flagtemp=out_temp;
-               for(int j=0;j<fes.numEffects();j++) {
-                   FlagEffect fe=fes.getEffect(j);
-                   ffan.addFlagAction(flagtemp, fe.getFlag(), fe.getStatus());
-               }
-               last.addNext(ffan);
-               last=ffan;
-           }
            return new NodePair(fn,last); 
        } else {
            FlatNode first=null;
index fc0e93c75338faa6148135896ad5fa81d5f8fc8c..8d60cc042fa8f8ad7e8e0a15d071c48fe19ce00b 100644 (file)
@@ -39,7 +39,8 @@ Lex/Keyword.class Lex/Lexer.class Lex/Literal.class                   \
 Lex/LongLiteral.class Lex/NullLiteral.class Lex/NumericLiteral.class   \
 Lex/Operator.class Lex/Separator.class Lex/StringLiteral.class         \
 Lex/Token.class Lex/TraditionalComment.class Lex/WhiteSpace.class      \
-Analysis/Flag/FlagState.class Analysis/CallGraph/CallGraph.class
+Analysis/Flag/FlagState.class Analysis/Flag/FlagAnalysis.class         \
+Analysis/CallGraph/CallGraph.class
 
 all: Parse/Sym.class Parse/Parser.class $(CLASSFILES)
 
@@ -51,4 +52,4 @@ Parse/Parser.java Parse/Sym.java: Parse/java14.cup
        javac -cp ../cup:.:$(CLASSPATH) $<
 
 clean:
-       rm IR/*.class IR/Tree/*.class Main/*.class Lex/*.class Parse/*.class Parse/Sym.java Parse/Parser.java IR/Flat/*.class classdefs.h methodheaders.h methods.c structdefs.h virtualtable.h Analysis/*.class Analysis/Flag/*.class
+       rm IR/*.class IR/Tree/*.class Main/*.class Lex/*.class Parse/*.class Parse/Sym.java Parse/Parser.java IR/Flat/*.class classdefs.h methodheaders.h methods.c structdefs.h virtualtable.h Analysis/*.class Analysis/Flag/*.class Analysis/CallGraph/*.class