lcoality analysis
authorbdemsky <bdemsky>
Thu, 2 Aug 2007 08:23:23 +0000 (08:23 +0000)
committerbdemsky <bdemsky>
Thu, 2 Aug 2007 08:23:23 +0000 (08:23 +0000)
Robust/src/Analysis/Locality/LocalityAnalysis.java
Robust/src/Parse/java14.cup

index b6c5c6f6ac88356f2426b75f13975f8b8f333870..28e2d34bfec86d5dbe22b5e92cda56c26b13ea6c 100644 (file)
@@ -18,6 +18,9 @@ public class LocalityAnalysis {
     Stack lbtovisit;
     Hashtable<LocalityBinding,LocalityBinding> discovered;
     Hashtable<LocalityBinding, Set<LocalityBinding>> dependence;
+    Hashtable<LocalityBinding, Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>>> temptab;
+    Hashtable<LocalityBinding, Hashtable<FlatNode, Integer>> atomictab;
+
 
     CallGraph callgraph;
     TypeUtil typeutil;
@@ -31,6 +34,8 @@ public class LocalityAnalysis {
        this.state=state;
        this.discovered=new Hashtable<LocalityBinding,LocalityBinding>();
        this.dependence=new Hashtable<LocalityBinding, Set<LocalityBinding>>();
+       this.temptab=new Hashtable<LocalityBinding, Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>>>();
+       this.atomictab=new Hashtable<LocalityBinding, Hashtable<FlatNode, Integer>>();
        this.lbtovisit=new Stack();
        this.callgraph=callgraph;
        doAnalysis();
@@ -39,13 +44,13 @@ public class LocalityAnalysis {
     private void doAnalysis() {
        computeLocalityBindings();
     }
-
+    
     private void computeLocalityBindings() {
        LocalityBinding lbmain=new LocalityBinding(typeutil.getMain(), false);
        lbmain.setGlobal(0, LOCAL);
        lbtovisit.add(lbmain);
        discovered.put(lbmain, lbmain);
-
+       
        while(!lbtovisit.empty()) {
            LocalityBinding lb=(LocalityBinding) lbtovisit.pop();
            Integer returnglobal=lb.getGlobalReturn();
@@ -53,6 +58,9 @@ public class LocalityAnalysis {
            Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>> temptable=new Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>>();
            Hashtable<FlatNode, Integer> atomictable=new Hashtable<FlatNode, Integer>();
            computeCallsFlags(md, lb, temptable, atomictable);
+           atomictab.put(lb, atomictable);
+           temptab.put(lb, temptable);
+
            if (!md.isStatic()&&!returnglobal.equals(lb.getGlobalReturn())) {
                //return type is more precise now
                //rerun everything that call us
index 07bfd1ec238d34063276b5fa94e5a3be9aa8df20..0f3afd38c0044a61f823927b578595f4bfe68964 100644 (file)
@@ -1314,8 +1314,8 @@ return_statement ::=
 //             SYNCHRONIZED LPAREN expression RPAREN block
 //     ;
 atomic_statement ::=
-               ATOMIC LPAREN expression:exp RPAREN block {: 
-       RESULT=(new ParseNode("atomic")).addChild(exp).getRoot();
+               ATOMIC block:blk {: 
+       RESULT=(new ParseNode("atomic")).addChild(blk).getRoot();
        :}
        ;
 //try_statement ::=