From: adash Date: Tue, 8 Sep 2009 23:40:40 +0000 (+0000) Subject: bug fix X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4e34d4088d369e925efe8b298abe9237caedda9f;p=IRC.git bug fix --- diff --git a/Robust/src/Analysis/Locality/LocalityAnalysis.java b/Robust/src/Analysis/Locality/LocalityAnalysis.java index b4562ec4..96040b53 100644 --- a/Robust/src/Analysis/Locality/LocalityAnalysis.java +++ b/Robust/src/Analysis/Locality/LocalityAnalysis.java @@ -696,6 +696,8 @@ public class LocalityAnalysis { while(!lbtovisit.isEmpty()) { LocalityBinding lb=(LocalityBinding) lbtovisit.iterator().next(); lbtovisit.remove(lb); + + System.out.println("Analyzing "+lb); Integer returnglobal=lb.getGlobalReturn(); MethodDescriptor md=lb.getMethod(); Hashtable> temptable=new Hashtable>(); @@ -777,7 +779,7 @@ public class LocalityAnalysis { break; case FKind.FlatCall: - processCallNode(lb, (FlatCall)fn, currtable, isAtomic(atomictable, fn)); + processCallNode(lb, (FlatCall)fn, currtable, isAtomic(atomictable, fn), temptable.get(fn)); break; case FKind.FlatFieldNode: @@ -865,7 +867,7 @@ public class LocalityAnalysis { return CONFLICT; } - void processCallNode(LocalityBinding currlb, FlatCall fc, Hashtable currtable, boolean isatomic) { + void processCallNode(LocalityBinding currlb, FlatCall fc, Hashtable currtable, boolean isatomic, Hashtable oldtable) { MethodDescriptor nodemd=fc.getMethod(); Set methodset=null; Set runmethodset=null; @@ -897,6 +899,12 @@ public class LocalityAnalysis { } Integer currreturnval=EITHER; //Start off with the either value + if (oldtable!=null&&fc.getReturnTemp()!=null&& + oldtable.get(fc.getReturnTemp())!=null) { + //ensure termination + currreturnval=merge(currreturnval, oldtable.get(fc.getReturnTemp())); + } + for(Iterator methodit=methodset.iterator(); methodit.hasNext();) { MethodDescriptor md=(MethodDescriptor) methodit.next();