more null region fixes, but I think method results can still map outgoing edges to...
authorjjenista <jjenista>
Tue, 15 Sep 2009 21:15:46 +0000 (21:15 +0000)
committerjjenista <jjenista>
Tue, 15 Sep 2009 21:15:46 +0000 (21:15 +0000)
Robust/src/Analysis/OwnershipAnalysis/OwnershipGraph.java

index b1a3ef7eb79da93d827daea8d8dec0767382ea68..23a22b7b23a5c21a5fb53686853cff4386f0f604 100644 (file)
@@ -375,14 +375,20 @@ public class OwnershipGraph {
 
     Iterator<ReferenceEdge> itrYhrn = lnY.iteratorToReferencees();
     while( itrYhrn.hasNext() ) {
-      ReferenceEdge edgeY = itrYhrn.next();
-      HeapRegionNode hrnY  = edgeY.getDst();
+      ReferenceEdge   edgeY = itrYhrn.next();
+      HeapRegionNode  hrnY  = edgeY.getDst();
       ReachabilitySet betaY = edgeY.getBeta();
 
+      // skip the null region, load statement is not
+      // meaningful for this region
+      if( hrnY == hrnNull ) {
+       continue;
+      }
+
       Iterator<ReferenceEdge> itrHrnFhrn = hrnY.iteratorToReferencees();
       while( itrHrnFhrn.hasNext() ) {
-       ReferenceEdge edgeHrn = itrHrnFhrn.next();
-       HeapRegionNode hrnHrn  = edgeHrn.getDst();
+       ReferenceEdge   edgeHrn = itrHrnFhrn.next();
+       HeapRegionNode  hrnHrn  = edgeHrn.getDst();
        ReachabilitySet betaHrn = edgeHrn.getBeta();
 
        if( edgeHrn.getType() == null ||            
@@ -421,6 +427,11 @@ public class OwnershipGraph {
       ReferenceEdge edgeX = itrXhrn.next();
       HeapRegionNode hrnX = edgeX.getDst();
 
+      // if we are looking at the null region, skip
+      if( hrnX == hrnNull ) {
+       continue;
+      }
+
       // we can do a strong update here if one of two cases holds      
       if( f != null &&
          f != OwnershipAnalysis.getArrayField( f.getType() ) &&            
@@ -440,6 +451,11 @@ public class OwnershipGraph {
       HeapRegionNode hrnX = edgeX.getDst();
       ReachabilitySet betaX = edgeX.getBeta();
 
+      // if we are looking at the null region, skip
+      if( hrnX == hrnNull ) {
+       continue;
+      }
+
       ReachabilitySet R = hrnX.getAlpha().intersection(edgeX.getBeta() );
 
       Iterator<ReferenceEdge> itrYhrn = lnY.iteratorToReferencees();
@@ -494,6 +510,11 @@ public class OwnershipGraph {
       ReferenceEdge edgeX = itrXhrn.next();
       HeapRegionNode hrnX = edgeX.getDst();
 
+      // if we are looking at the null region, skip
+      if( hrnX == hrnNull ) {
+       continue;
+      }
+
       Iterator<ReferenceEdge> itrYhrn = lnY.iteratorToReferencees();
       while( itrYhrn.hasNext() ) {
        ReferenceEdge edgeY = itrYhrn.next();