2 import Analysis.OoOJava.VSTWrapper;
3 import java.util.Hashtable;
6 // This node is inserted by the OOOJava analysis
7 // in between a (tail -> head) IR graph edge.
8 // It is for tracking SESE variables with
10 public class FlatWriteDynamicVarNode extends FlatNode {
13 protected FlatNode tailNode;
14 protected FlatNode headNode;
16 protected Hashtable<TempDescriptor, VSTWrapper> var2src;
18 protected FlatSESEEnterNode enclosingSESE;
21 public FlatWriteDynamicVarNode(FlatNode t,
23 Hashtable<TempDescriptor, VSTWrapper> v2s,
32 public void spliceIntoIR() {
34 if(tailNode instanceof FlatCondBranch) {
36 headNode.removePrev(tailNode);
38 if(tailNode.next.elementAt(0).equals(headNode)) {
39 tailNode.removeNext(headNode);
40 ((FlatCondBranch)tailNode).addTrueNext(this);
42 tailNode.removeNext(headNode);
43 ((FlatCondBranch)tailNode).addFalseNext(this);
46 this.addNext(headNode);
48 tailNode.removeNext(headNode);
49 headNode.removePrev(tailNode);
51 tailNode.addNext(this);
52 this.addNext(headNode);
57 public void addMoreVar2Src(Hashtable<TempDescriptor, VSTWrapper> more) {
61 public Hashtable<TempDescriptor, VSTWrapper> getVar2src() {
65 public FlatSESEEnterNode getEnclosingSESE() {
69 public String toString() {
70 return "writeDynVars "+var2src;
74 return FKind.FlatWriteDynamicVarNode;
77 public FlatNode clone(TempMap t) {
78 return new FlatWriteDynamicVarNode(tailNode,
84 public void rewriteUse(TempMap t) {