package Analysis.Locality; import IR.MethodDescriptor; public class LocalityBinding { private MethodDescriptor md; private Integer[] isglobal; private boolean isatomic; private Integer isglobalreturn; private Integer isglobalthis; private LocalityBinding parent; private boolean hasatomic; public LocalityBinding(MethodDescriptor md, boolean atomic) { this.md=md; isglobal=new Integer[md.numParameters()]; isatomic=atomic; } public void setHasAtomic() { hasatomic=true; } public boolean getHasAtomic() { return hasatomic; } private static String globalToString(Integer g) { if (g==LocalityAnalysis.GLOBAL) return "G"; else if (g==LocalityAnalysis.LOCAL) return "L"; else if (g==LocalityAnalysis.EITHER) return "E"; else if (g==LocalityAnalysis.CONFLICT) return "C"; else throw new Error(); } public String getSignature() { if (md.getModifiers().isNative()) return ""; String st="_"; if (isatomic) { st+="A"; } else st+="N"; if (isglobalthis==null) st+="N"; else st+=globalToString(isglobalthis); for(int i=0;i