changes
[IRC.git] / Robust / src / IR / Flat / FlatElementNode.java
1 package IR.Flat;
2 import IR.FieldDescriptor;
3
4 public class FlatElementNode extends FlatNode {
5   TempDescriptor src;
6   TempDescriptor dst;
7   TempDescriptor index;
8
9   public FlatElementNode(TempDescriptor src, TempDescriptor index, TempDescriptor dst) {
10     this.index=index;
11     this.src=src;
12     this.dst=dst;
13   }
14
15   public boolean needsBoundsCheck() {
16     return true;
17   }
18
19   public FlatNode clone(TempMap t) {
20     return new FlatElementNode(t.tempMap(src), t.tempMap(index), t.tempMap(dst));
21   }
22   public void rewriteDef(TempMap t) {
23     dst=t.tempMap(dst);
24   }
25   public void rewriteUse(TempMap t) {
26     index=t.tempMap(index);
27     src=t.tempMap(src);
28   }
29
30   public TempDescriptor getIndex() {
31     return index;
32   }
33
34   public TempDescriptor getSrc() {
35     return src;
36   }
37
38   public TempDescriptor getDst() {
39     return dst;
40   }
41
42   public String toString() {
43     return "FlatElementNode_"+dst.toString()+"="+src.toString()+"["+index.toString()+"]";
44   }
45
46   public int kind() {
47     return FKind.FlatElementNode;
48   }
49
50   public TempDescriptor [] writesTemps() {
51     return new TempDescriptor[] {dst};
52   }
53
54   public TempDescriptor [] readsTemps() {
55     return new TempDescriptor[] {src,index};
56   }
57 }