From: bdemsky Date: Thu, 2 Aug 2007 08:23:23 +0000 (+0000) Subject: lcoality analysis X-Git-Tag: preEdgeChange~504 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=879dc58555a28c193242293dcde92608c8219e08;p=IRC.git lcoality analysis --- diff --git a/Robust/src/Analysis/Locality/LocalityAnalysis.java b/Robust/src/Analysis/Locality/LocalityAnalysis.java index b6c5c6f6..28e2d34b 100644 --- a/Robust/src/Analysis/Locality/LocalityAnalysis.java +++ b/Robust/src/Analysis/Locality/LocalityAnalysis.java @@ -18,6 +18,9 @@ public class LocalityAnalysis { Stack lbtovisit; Hashtable discovered; Hashtable> dependence; + Hashtable>> temptab; + Hashtable> atomictab; + CallGraph callgraph; TypeUtil typeutil; @@ -31,6 +34,8 @@ public class LocalityAnalysis { this.state=state; this.discovered=new Hashtable(); this.dependence=new Hashtable>(); + this.temptab=new Hashtable>>(); + this.atomictab=new Hashtable>(); 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> temptable=new Hashtable>(); Hashtable atomictable=new Hashtable(); 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 diff --git a/Robust/src/Parse/java14.cup b/Robust/src/Parse/java14.cup index 07bfd1ec..0f3afd38 100644 --- a/Robust/src/Parse/java14.cup +++ b/Robust/src/Parse/java14.cup @@ -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 ::=