3 * Author: Alokika Dash adash@uci.edu
7 package Analysis.Prefetch;
15 * This class is used to represent the index and index offset of Arrays in
17 * for eg: for a prefetch pair a[i+z], an instance of this class stores var i and var z
20 public class IndexDescriptor extends Descriptor {
21 public ArrayList<TempDescriptor> tddesc;
22 public Integer offset;
24 public IndexDescriptor(Integer offset) {
25 super(offset.toString());
29 public IndexDescriptor(TempDescriptor tdesc, Integer offset) {
30 super(tdesc.toString());
32 tddesc = new ArrayList<TempDescriptor>();
37 public IndexDescriptor() {
39 tddesc = new ArrayList<TempDescriptor>();
43 public IndexDescriptor(ArrayList<TempDescriptor> tdesc, Integer offset) {
44 super(tdesc.toString());
46 tddesc = new ArrayList<TempDescriptor>();
51 public ArrayList<TempDescriptor> getTempDesc() {
55 public TempDescriptor getTempDescAt(int index) {
56 return (TempDescriptor) tddesc.get(index);
59 public int getOffset() {
63 public String toString() {
65 if(getTempDesc() == null) {
66 label += offset.toString();
69 ListIterator lit = getTempDesc().listIterator();
70 for(;lit.hasNext();) {
71 TempDescriptor td = (TempDescriptor) lit.next();
72 label += td.toString()+"+";
74 label +=offset.toString();
80 public int hashCode() {
81 int hashcode = (Integer) offset.hashCode();
83 ListIterator lit = tddesc.listIterator();
84 while(lit.hasNext()) {
85 hashcode = hashcode ^ lit.next().hashCode();
91 public boolean equals(Object o) {
92 if(o instanceof IndexDescriptor) {
93 IndexDescriptor idesc = (IndexDescriptor) o;
94 if(!offset.equals(idesc.offset)) {
97 if(tddesc == null && idesc.tddesc == null) {
99 } else if(tddesc!=null && idesc.tddesc!=null) {
100 if(tddesc.equals((ArrayList<TempDescriptor>)idesc.tddesc)){