1 package Analysis.Prefetch;
6 public class PrefetchPair {
8 ArrayList<Descriptor> desc;
9 ArrayList<Boolean> isTempDesc; //Keeps track if the desc is a FieldDescriptor or TempDescriptor. Has same size() as desc
12 public PrefetchPair() {
15 public PrefetchPair(TempDescriptor t) {
21 public PrefetchPair(TempDescriptor t, Descriptor f, Boolean type) {
24 desc = new ArrayList<Descriptor>();
25 if (isTempDesc == null)
26 isTempDesc = new ArrayList<Boolean>();
31 public PrefetchPair(TempDescriptor t, ArrayList<Descriptor> descriptor, ArrayList<Boolean> bool) {
34 desc = new ArrayList<Descriptor>();
36 if(isTempDesc == null)
37 isTempDesc = new ArrayList<Boolean>();
38 desc.addAll(descriptor);
39 isTempDesc.addAll(bool);
42 public TempDescriptor getBase() {
46 public boolean isTempDescDesc(int index) {
47 return isTempDesc.get(index).booleanValue();
50 public Descriptor getDescAt(int index) {
51 return desc.get(index);
54 public ArrayList<Descriptor> getDesc() {
58 public ArrayList<Boolean> getisTempDesc() {
62 public FieldDescriptor getFieldDesc(int index) {
63 return (FieldDescriptor) desc.get(index);
66 public TempDescriptor getTempDesc(int index) {
67 return (TempDescriptor) desc.get(index);
70 public int hashCode() {
71 int hashcode = base.toString().hashCode();
73 ListIterator li = desc.listIterator();
75 hashcode = hashcode ^ li.next().toString().hashCode();
81 public String toString() {
82 String label= getBase().toString();
83 if(getDesc() == null || getisTempDesc() == null)
85 ListIterator it=getDesc().listIterator();
86 ListIterator istemp=getisTempDesc().listIterator();
87 for(;it.hasNext() && istemp.hasNext();) {
88 Boolean isFd = (Boolean) istemp.next();
89 if(isFd.booleanValue() == false) {
90 FieldDescriptor fd = (FieldDescriptor) it.next();
91 label+="."+ fd.toString();
93 TempDescriptor td = (TempDescriptor) it.next();
94 label+="."+ td.toString();
100 public boolean equals(Object o) {
101 if(o instanceof PrefetchPair) {
102 PrefetchPair pp = (PrefetchPair) o;
103 if(base != pp.base) {
106 if (desc == null && pp.desc == null) {
108 } else if (desc != null && pp.desc != null) {
109 if (desc.equals((List<Descriptor>)pp.desc) &&
110 isTempDesc.equals((List<Boolean>)pp.isTempDesc)) {