2 import java.util.Vector;
4 public class FlatNode {
13 public String toString() {
14 throw new Error(this.getClass().getName() + "does not implement toString!");
16 public int numNext() {
19 public FlatNode getNext(int i) {
20 return (FlatNode) next.get(i);
23 public int numPrev() {
26 public FlatNode getPrev(int i) {
27 return (FlatNode) prev.get(i);
29 public void addNext(FlatNode n) {
33 public void removePrev(FlatNode n) {
36 /** This function modifies the graph */
37 public void setNext(int i, FlatNode n) {
38 FlatNode old=getNext(i);
40 old.prev.remove(this);
43 /** This function modifies the graph */
44 public void setprev(int i, FlatNode n) {
47 /** This function modifies the graph */
48 public void setnext(int i, FlatNode n) {
51 public void addPrev(FlatNode p) {
57 public TempDescriptor [] readsTemps() {
58 return new TempDescriptor[0];
60 public TempDescriptor [] writesTemps() {
61 return new TempDescriptor[0];
63 public FlatNode clone(TempMap t) {
67 public void rewriteUse(TempMap t) {
68 System.out.println(toString());
72 public void rewriteDef(TempMap t) {
73 System.out.println(toString());
77 public void replace(FlatNode fnnew) {
78 fnnew.prev.setSize(prev.size());
79 fnnew.next.setSize(next.size());
80 for(int i=0;i<prev.size();i++) {
81 FlatNode nprev=(FlatNode)prev.get(i);
82 fnnew.prev.set(i,nprev);
83 for(int j=0;j<nprev.numNext();j++) {
84 FlatNode n=nprev.getNext(j);
86 nprev.next.set(j, fnnew);
89 for(int i=0;i<next.size();i++) {
90 FlatNode nnext=(FlatNode)next.get(i);
91 fnnew.next.set(i,nnext);;
92 for(int j=0;j<nnext.numPrev();j++) {
93 FlatNode n=nnext.getPrev(j);
95 nnext.prev.set(j, fnnew);