import IR.Flat.*;
import java.util.*;
-public class OwnershipNode {
+public class OwnershipNode {
- protected Integer id;
- protected HashSet<OwnershipHeapRegionNode> reachableRegions;
- protected HashSet<OwnershipNode> referencers;
-
- public OwnershipNode( Integer id ) {
- this.id = id;
- reachableRegions = new HashSet<OwnershipHeapRegionNode>();
- referencers = new HashSet<OwnershipNode>();
+ public OwnershipNode() {
+ referencedRegions =
+ new Hashtable<HeapRegionNode, ReferenceEdgeProperties>();
}
- public Integer getID() {
- return id;
- }
- public String getIDString() {
- return id.toString();
- }
+ ///////////////////////////////////////////
+ // interface with larger graph
+ ///////////////////////////////////////////
+ protected Hashtable
+ <HeapRegionNode, ReferenceEdgeProperties>
+ referencedRegions;
- public Iterator iteratorToReachableRegions() {
- return reachableRegions.iterator();
+ public Iterator setIteratorToReferencedRegions() {
+ Set s = referencedRegions.entrySet();
+ return s.iterator();
}
- public void addReachableRegion( OwnershipHeapRegionNode ohrn ) {
- assert ohrn!=null;
- reachableRegions.add( ohrn );
+ public Iterator setIteratorToReferencedRegionsClone() {
+ Hashtable ht = (Hashtable) referencedRegions.clone();
+ Set s = ht.entrySet();
+ return s.iterator();
}
- public void clearReachableRegions() {
- reachableRegions.clear();
- }
-
- public Iterator iteratorToReferencers() {
- return referencers.iterator();
+ public void addReferencedRegion( HeapRegionNode hrn,
+ ReferenceEdgeProperties rep ) {
+ assert hrn != null;
+ assert rep != null;
+
+ referencedRegions.put( hrn, rep );
}
- public void addReferencer( OwnershipNode on ) {
- referencers.add( on );
+ public void removeReferencedRegion( HeapRegionNode hrn ) {
+ assert hrn != null;
+ assert referencedRegions.containsKey( hrn );
+
+ referencedRegions.remove( hrn );
}
- public void clearReferencers() {
- referencers.clear();
+ public ReferenceEdgeProperties getReferenceTo( HeapRegionNode hrn ) {
+ assert hrn != null;
+
+ return referencedRegions.get( hrn );
}
+ ///////////////////////////////////////////////
+ // end interface with larger graph
+ ///////////////////////////////////////////////
}
\ No newline at end of file