1 package Analysis.Prefetch;
6 public class PrefetchPair {
8 ArrayList<Descriptor> desc;
9 ArrayList<Boolean> isTempDesc;
11 public PrefetchPair() {
14 public PrefetchPair(TempDescriptor t) {
20 public PrefetchPair(TempDescriptor t, Descriptor f, Boolean type) {
23 desc = new ArrayList<Descriptor>();
24 if (isTempDesc == null)
25 isTempDesc = new ArrayList<Boolean>();
30 public PrefetchPair(TempDescriptor t, ArrayList<Descriptor> descriptor, ArrayList<Boolean> bool) {
33 desc = new ArrayList<Descriptor>();
35 if(isTempDesc == null)
36 isTempDesc = new ArrayList<Boolean>();
37 desc.addAll(descriptor);
38 isTempDesc.addAll(bool);
41 public TempDescriptor getBase() {
45 public boolean isTempDescDesc(int index) {
46 return isTempDesc.get(index).booleanValue();
49 public Descriptor getDescAt(int index) {
50 return desc.get(index);
53 public ArrayList<Descriptor> getDesc() {
57 public ArrayList<Boolean> getisTempDesc() {
61 public FieldDescriptor getFieldDesc(int index) {
62 return (FieldDescriptor) desc.get(index);
65 public TempDescriptor getTempDesc(int index) {
66 return (TempDescriptor) desc.get(index);
69 public int hashCode() {
70 int hashcode = base.toString().hashCode();
71 //int hashcode = base.hashCode();
73 // if(getDesc() != null) {
74 ListIterator li = desc.listIterator();
76 hashcode = hashcode ^ li.next().toString().hashCode();
79 //System.out.println("DEBUG -> hashcode for: " + base.toString() + " " + hashcode);
83 public String toString() {
84 String label= getBase().toString();
85 if(getDesc() == null || getisTempDesc() == null)
87 ListIterator it=getDesc().listIterator();
88 ListIterator istemp=getisTempDesc().listIterator();
89 for(;it.hasNext() && istemp.hasNext();) {
90 Boolean isFd = (Boolean) istemp.next();
91 if(isFd.booleanValue() == false) {
92 FieldDescriptor fd = (FieldDescriptor) it.next();
93 label+="."+ fd.toString();
95 TempDescriptor td = (TempDescriptor) it.next();
96 label+="."+ td.toString();
102 public boolean equals(Object o) {
103 if(o instanceof PrefetchPair) {
104 PrefetchPair pp = (PrefetchPair) o;
105 if(base != pp.base) {
106 //System.out.println("PP: returning false for:" + base.toString() + " " + pp.base.toString());
109 if (desc == null && pp.desc == null) {
111 } else if (desc != null && pp.desc != null) {
112 if (desc.equals((List<Descriptor>)pp.desc) &&
113 isTempDesc.equals((List<Boolean>)pp.isTempDesc)) {