From: yeom Date: Wed, 1 Aug 2012 18:28:54 +0000 (+0000) Subject: implemented PCLOC annotation. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=IRC.git;a=commitdiff_plain;h=d396c42d2a86460c7e220d21e5219049c177c5cf;ds=sidebyside implemented PCLOC annotation. --- diff --git a/Robust/src/Analysis/SSJava/FlowDownCheck.java b/Robust/src/Analysis/SSJava/FlowDownCheck.java index 86766e40..a851b020 100644 --- a/Robust/src/Analysis/SSJava/FlowDownCheck.java +++ b/Robust/src/Analysis/SSJava/FlowDownCheck.java @@ -227,7 +227,9 @@ public class FlowDownCheck { if (state.SSJAVADEBUG) { System.out.println("SSJAVA: Checking Flow-down Rules: " + md); } - checkMethodBody(cd, md, null); + CompositeLocation calleePCLOC = + new CompositeLocation(new Location(md, ssjava.getMethodLattice(md).getPCLoc())); + checkMethodBody(cd, md, calleePCLOC); } } } @@ -321,6 +323,12 @@ public class FlowDownCheck { } else if (an.getMarker().equals(ssjava.THISLOC)) { String thisLoc = an.getValue(); ssjava.getMethodLattice(md).setThisLoc(thisLoc); + } else if (an.getMarker().equals(ssjava.GLOBALLOC)) { + String globalLoc = an.getValue(); + ssjava.getMethodLattice(md).setGlobalLoc(globalLoc); + } else if (an.getMarker().equals(ssjava.PCLOC)) { + String pcLoc = an.getValue(); + ssjava.getMethodLattice(md).setPCLoc(pcLoc); } } } @@ -609,12 +617,12 @@ public class FlowDownCheck { BlockNode bn = ln.getInitializer(); bn.getVarTable().setParent(nametable); // need to check initialization node -// checkLocationFromBlockNode(md, bn.getVarTable(), bn, constraint); - for(int i=0; i extends SSJavaLattice { private T thisLoc; private T globalLoc; private T returnLoc; + private T pcLoc; public MethodLattice(T top, T bottom) { super(top, bottom); + pcLoc = top; } public void setThisLoc(T thisLoc) { @@ -36,4 +38,12 @@ public class MethodLattice extends SSJavaLattice { return returnLoc; } + public T getPCLoc() { + return pcLoc; + } + + public void setPCLoc(T pcLoc) { + this.pcLoc = pcLoc; + } + } diff --git a/Robust/src/Analysis/SSJava/SSJavaAnalysis.java b/Robust/src/Analysis/SSJava/SSJavaAnalysis.java index 02123655..121e4cb5 100644 --- a/Robust/src/Analysis/SSJava/SSJavaAnalysis.java +++ b/Robust/src/Analysis/SSJava/SSJavaAnalysis.java @@ -41,6 +41,7 @@ public class SSJavaAnalysis { public static final String THISLOC = "THISLOC"; public static final String GLOBALLOC = "GLOBALLOC"; public static final String RETURNLOC = "RETURNLOC"; + public static final String PCLOC = "PCLOC"; public static final String LOC = "LOC"; public static final String DELTA = "DELTA"; public static final String TERMINATE = "TERMINATE"; @@ -406,6 +407,9 @@ public class SSJavaAnalysis { } else if (orderElement.startsWith(RETURNLOC + "=")) { String returnLoc = orderElement.substring(10); locOrder.setReturnLoc(returnLoc); + } else if (orderElement.startsWith(PCLOC + "=")) { + String pcLoc = orderElement.substring(6); + locOrder.setPCLoc(pcLoc); } else if (orderElement.endsWith("*")) { // spin loc definition locOrder.addSharedLoc(orderElement.substring(0, orderElement.length() - 1));