1 package Analysis.Prefetch;
6 public class PrefetchPair {
7 public TempDescriptor base;
8 public ArrayList<Descriptor> desc;
10 public PrefetchPair(){
11 desc = new ArrayList<Descriptor>();
14 public PrefetchPair(TempDescriptor t) {
19 public PrefetchPair(TempDescriptor t, Descriptor f) {
22 desc = new ArrayList<Descriptor>();
26 public PrefetchPair(TempDescriptor t, ArrayList<Descriptor> descriptor) {
29 desc = new ArrayList<Descriptor>();
31 desc.addAll(descriptor);
34 public TempDescriptor getBase() {
38 public Descriptor getDescAt(int index) {
39 return desc.get(index);
42 public ArrayList<Descriptor> getDesc() {
46 public FieldDescriptor getFieldDesc(int index) {
47 return (FieldDescriptor) desc.get(index);
50 public IndexDescriptor getIndexDesc(int index) {
51 return (IndexDescriptor) desc.get(index);
54 public int hashCode() {
55 int hashcode = base.toString().hashCode();
57 ListIterator li = desc.listIterator();
59 hashcode = hashcode ^ li.next().toString().hashCode();
65 public String toString() {
66 String label= getBase().toString();
69 ListIterator it=getDesc().listIterator();
72 if(o instanceof FieldDescriptor) {
73 FieldDescriptor fd = (FieldDescriptor) o;
74 label+="."+ fd.toString();
76 IndexDescriptor id = (IndexDescriptor) o;
77 label+= id.toString();
83 public boolean equals(Object o) {
84 if(o instanceof PrefetchPair) {
85 PrefetchPair pp = (PrefetchPair) o;
89 if (desc == null && pp.desc == null) {
91 } else if (desc != null && pp.desc != null) {
92 if (desc.equals((ArrayList<Descriptor>)pp.desc)) {
102 public Object clone() {
103 PrefetchPair newpp = new PrefetchPair();
104 newpp.base = this.base;
105 ArrayList<TempDescriptor> td = new ArrayList<TempDescriptor>();
106 for(int i = 0; i<desc.size(); i++) {
107 Object o = desc.get(i);
108 if(o instanceof FieldDescriptor) {
109 newpp.desc.add((FieldDescriptor) o);
111 for(int j=0; j<((IndexDescriptor)o).tddesc.size();j++) {
112 td.add((TempDescriptor)((IndexDescriptor)o).tddesc.get(j));
114 IndexDescriptor idesc = new IndexDescriptor();
116 idesc.offset = ((IndexDescriptor)o).offset;
117 newpp.desc.add(idesc);