Prefetchanalysis code
[IRC.git] / Robust / src / Analysis / Prefetch / PrefetchPair.java
1 package Analysis.Prefetch;
2 import IR.Flat.*;
3 import java.util.*;
4 import IR.*;
5
6 public class PrefetchPair {
7         TempDescriptor base;
8         List<Descriptor> desc;
9         List<Boolean> isTemp;
10
11         public PrefetchPair() {
12         }
13
14         public PrefetchPair(TempDescriptor t, Descriptor f, Boolean type) {
15                 base = t;
16                 desc.add(f);
17                 isTemp.add(type);
18         }
19
20         public TempDescriptor getBase() {
21                 return base;
22         }
23
24         public boolean isTempDesc(int index) {
25                 return isTemp.get(index).booleanValue();
26         }
27
28         public Descriptor getDescAt(int index) {
29                 return desc.get(index);
30         }
31
32         public List<Descriptor> getDesc() {
33                 return desc;
34         }
35
36         public FieldDescriptor getFieldDesc(int index) {
37                 return (FieldDescriptor) desc.get(index);
38         }
39
40         public TempDescriptor getTempDesc(int index) {
41                 return (TempDescriptor) desc.get(index);
42         }
43
44         public int hashCode() {
45                 int hashcode = base.hashCode(); 
46                 ListIterator li = desc.listIterator();
47                 while(li.hasNext()) {
48                         hashcode = hashcode ^ li.next().hashCode();
49                 }
50                 return hashcode;
51         }
52
53         public String toString() {
54                 return"<"+getBase().toString() +">";
55         }
56
57         public boolean equals(Object o) {
58                 if(o instanceof PrefetchPair) {
59                         PrefetchPair pp = (PrefetchPair) o;
60                         if(base != pp.base)
61                                 return false;
62                         if (desc.equals((List<Descriptor>)pp.desc) && isTemp.equals((List<Boolean>)pp.isTemp))
63                                 return true;
64                         else
65                                 return false;
66                 }
67                 return false;
68         }
69 }