1 package Analysis.Locality;
2 import IR.MethodDescriptor;
4 public class LocalityBinding {
5 private MethodDescriptor md;
6 private Integer[] isglobal;
7 private boolean isatomic;
8 private Integer isglobalreturn;
9 private Integer isglobalthis;
10 private LocalityBinding parent;
12 public LocalityBinding(MethodDescriptor md, boolean atomic) {
14 isglobal=new Integer[md.numParameters()];
18 /* Use this for an explanation */
19 public void setParent(LocalityBinding lb) {
23 public String getExplanation() {
27 return parent.getExplanation()+"\n"+toString();
30 public String toString() {
31 String st=md.toString()+" ";
32 for(int i=0;i<isglobal.length;i++)
33 if (isglobal[i].equals(LocalityAnalysis.LOCAL))
35 else if (isglobal[i].equals(LocalityAnalysis.GLOBAL))
37 else if (isglobal[i].equals(LocalityAnalysis.EITHER))
39 else if (isglobal[i].equals(LocalityAnalysis.CONFLICT))
44 public void setGlobal(int i, Integer global) {
48 public Integer isGlobal(int i) {
52 public void setGlobalReturn(Integer global) {
53 isglobalreturn=global;
56 public Integer getGlobalReturn() {
57 return isglobalreturn;
60 public void setGlobalThis(Integer global) {
64 public Integer getGlobalThis() {
68 public MethodDescriptor getMethod() {
72 public boolean isAtomic() {
76 public boolean equals(Object o) {
77 if (o instanceof LocalityBinding) {
78 LocalityBinding lb=(LocalityBinding)o;
81 for(int i=0;i<isglobal.length;i++)
82 if (!isglobal[i].equals(lb.isglobal[i]))
84 if (!isglobalthis.equals(lb.isglobalthis))
86 return (isatomic==lb.isatomic);
91 public int hashCode() {
92 int hashcode=md.hashCode();
93 for(int i=0;i<isglobal.length;i++) {
94 hashcode=hashcode*31+(isglobal[i].intValue());
96 hashcode=hashcode*31+(isatomic?1:0);