1 package Analysis.Prefetch;
6 public class PrefetchPair {
7 public TempDescriptor base;
8 public ArrayList<Descriptor> desc;
10 public PrefetchPair(){
11 base = new TempDescriptor("");
12 desc = new ArrayList<Descriptor>();
15 public PrefetchPair(TempDescriptor t) {
20 public PrefetchPair(TempDescriptor t, Descriptor f) {
23 desc = new ArrayList<Descriptor>();
27 public PrefetchPair(TempDescriptor t, ArrayList<Descriptor> descriptor) {
30 desc = new ArrayList<Descriptor>();
32 desc.addAll(descriptor);
35 public TempDescriptor getBase() {
39 public Descriptor getDescAt(int index) {
40 return desc.get(index);
43 public ArrayList<Descriptor> getDesc() {
47 public FieldDescriptor getFieldDesc(int index) {
48 return (FieldDescriptor) desc.get(index);
51 public IndexDescriptor getIndexDesc(int index) {
52 return (IndexDescriptor) desc.get(index);
55 public int hashCode() {
56 int hashcode = base.toString().hashCode();
58 ListIterator li = desc.listIterator();
60 hashcode = hashcode ^ li.next().toString().hashCode();
66 public String toString() {
67 String label= getBase().toString();
70 ListIterator it=getDesc().listIterator();
73 if(o instanceof FieldDescriptor) {
74 FieldDescriptor fd = (FieldDescriptor) o;
75 label+="."+ fd.toString();
77 IndexDescriptor id = (IndexDescriptor) o;
78 label+= id.toString();
84 public boolean equals(Object o) {
85 if(o instanceof PrefetchPair) {
86 PrefetchPair pp = (PrefetchPair) o;
90 if(desc == null && pp.desc == null) {
92 } else if(desc != null && pp.desc != null) {
93 if(desc.equals((ArrayList<Descriptor>)pp.desc)) {
103 public Object clone() {
104 PrefetchPair newpp = new PrefetchPair();
105 ArrayList<TempDescriptor> td = null;
106 newpp.base = this.base;
107 for(int i = 0; i < this.desc.size(); i++) {
108 Object o = desc.get(i);
109 if(o instanceof FieldDescriptor) {
110 newpp.desc.add((FieldDescriptor) o);
112 td = new ArrayList<TempDescriptor>();
113 for(int j = 0; j < ((IndexDescriptor)o).tddesc.size(); j++) {
114 td.add(((IndexDescriptor)o).getTempDescAt(j));
116 IndexDescriptor idesc = new IndexDescriptor();
118 idesc.offset = ((IndexDescriptor)o).offset;
119 newpp.desc.add(idesc);