public static final int FlatMethod=17;
public static final int FlatAtomicEnterNode=18;
public static final int FlatAtomicExitNode=19;
- public static final int FlagGlobalConvNode=20;
+ public static final int FlatGlobalConvNode=20;
}
package IR.Flat;
import IR.TypeDescriptor;
+import Analysis.Locality.LocalityBinding;
public class FlatGlobalConvNode extends FlatNode {
TempDescriptor src;
- TempDescriptor dst;
+ LocalityBinding lb;
boolean makePtr;
- public FlatGlobalConvNode(TempDescriptor src, TempDescriptor dst, boolean makePtr) {
+ public FlatGlobalConvNode(TempDescriptor src, LocalityBinding lb, boolean makePtr) {
this.src=src;
- this.dst=dst;
+ this.lb=lb;
this.makePtr=makePtr;
}
public String toString() {
if (makePtr)
- return dst.toString()+"=(PTR)"+src.toString();
+ return src.toString()+"=(PTR)"+src.toString()+" "+lb;
else
- return dst.toString()+"=(OID)"+src.toString();
+ return src.toString()+"=(OID)"+src.toString()+" "+lb;
}
public int kind() {
return FKind.FlatGlobalConvNode;
}
+ public LocalityBinding getLocality() {
+ return lb;
+ }
+
public boolean getMakePtr() {
return makePtr;
}
return src;
}
- public TempDescriptor getDst() {
- return dst;
- }
-
public TempDescriptor [] writesTemps() {
- return new TempDescriptor[] {dst};
+ return new TempDescriptor[] {src};
}
public TempDescriptor [] readsTemps() {
/** This method returns a set of the nodes in this flat representation */
- public Set getNodeSet() {
- HashSet tovisit=new HashSet();
- HashSet visited=new HashSet();
+ public Set<FlatNode> getNodeSet() {
+ HashSet<FlatNode> tovisit=new HashSet<FlatNode>();
+ HashSet<FlatNode> visited=new HashSet<FlatNode>();
tovisit.add(this);
while(!tovisit.isEmpty()) {
- FlatNode fn=(FlatNode)tovisit.iterator().next();
+ FlatNode fn=tovisit.iterator().next();
tovisit.remove(fn);
visited.add(fn);
for(int i=0;i<fn.numNext();i++) {
next.add(n);
n.addPrev(this);
}
+
+ /** This function modifies the graph */
+ public void setNext(int i, FlatNode n) {
+ FlatNode old=getNext(i);
+ next.set(i, n);
+ old.prev.remove(this);
+ }
+
protected void addPrev(FlatNode p) {
prev.add(p);
}