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 ) {
58 var2src.putAll( 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) {