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;
11 public LocalityBinding(MethodDescriptor md, boolean atomic) {
13 isglobal=new Integer[md.numParameters()];
17 public String toString() {
18 String st=md.toString()+" ";
19 for(int i=0;i<isglobal.length;i++)
20 if (isglobal[i].equals(LocalityAnalysis.LOCAL))
22 else if (isglobal[i].equals(LocalityAnalysis.GLOBAL))
24 else if (isglobal[i].equals(LocalityAnalysis.EITHER))
26 else if (isglobal[i].equals(LocalityAnalysis.CONFLICT))
31 public void setGlobal(int i, Integer global) {
35 public Integer isGlobal(int i) {
39 public void setGlobalReturn(Integer global) {
40 isglobalreturn=global;
43 public Integer getGlobalReturn() {
44 return isglobalreturn;
47 public void setGlobalThis(Integer global) {
51 public Integer getGlobalThis() {
55 public MethodDescriptor getMethod() {
59 public boolean isAtomic() {
63 public boolean equals(Object o) {
64 if (o instanceof LocalityBinding) {
65 LocalityBinding lb=(LocalityBinding)o;
68 for(int i=0;i<isglobal.length;i++)
69 if (!isglobal[i].equals(lb.isglobal[i]))
71 if (!isglobalthis.equals(lb.isglobalthis))
73 return (isatomic==lb.isatomic);
78 public int hashCode() {
79 int hashcode=md.hashCode();
80 for(int i=0;i<isglobal.length;i++) {
81 hashcode=hashcode*31+(isglobal[i].intValue());
83 hashcode=hashcode*31+(isatomic?1:0);