while( rsnItr.hasNext() ) {
RefSrcNode rsnCaller = rsnItr.next();
- // TODO: beta rewrites
RefEdge reCaller = new RefEdge( rsnCaller,
hrnDstCaller,
reCallee.getType(),
ExistPredSet preds2 = state.getPreds();
assert preds2.preds.size() == 1;
+ if( state.isEmpty() ) {
+ continue;
+ }
+
ExistPred pred = preds2.preds.iterator().next();
ReachState old = pred.ne_state;
+
+ if( old == null ) {
+ old = rstateEmpty;
+ }
+
assert old != null;
cs = Canonical.union( cs,
);
// for reach propagation
- edgePlannedChanges.put(
- edgeExisting,
- Canonical.union( edgePlannedChanges.get( edgeExisting ),
- cs
- )
- );
+ if( !cs.isEmpty() ) {
+ edgePlannedChanges.put(
+ edgeExisting,
+ Canonical.union( edgePlannedChanges.get( edgeExisting ),
+ cs
+ )
+ );
+ }
} else {
addRefEdge( rsnCaller, hrnDstCaller, reCaller );
// for reach propagation
- edgesForPropagation.add( reCaller );
- assert !edgePlannedChanges.containsKey( reCaller );
- edgePlannedChanges.put( reCaller, cs );
+ if( !cs.isEmpty() ) {
+ edgesForPropagation.add( reCaller );
+ assert !edgePlannedChanges.containsKey( reCaller );
+ edgePlannedChanges.put( reCaller, cs );
+ }
}
}
}
)
);
- // if hrnB is already dirty or hrnA is dirty,
- // the hrnB should end up dirty: TODO
- /*
- if( !hrnA.isClean() ) {
- hrnB.setIsClean( false );
- }
- */
+ hrnB.setPreds( Canonical.join( hrnB.getPreds(),
+ hrnA.getPreds()
+ )
+ );
}
}
edgeA.getBeta()
)
);
- // TODO: what?
- /*
- if( !edgeA.isClean() ) {
- edgeToMerge.setIsClean( false );
- }
- */
+ edgeToMerge.setPreds(
+ Canonical.join( edgeToMerge.getPreds(),
+ edgeA.getPreds()
+ )
+ );
}
}
}
edgeA.getBeta()
)
);
- // TODO: what?
- /*
- if( !edgeA.isClean() ) {
- edgeToMerge.setIsClean( false );
- }
- */
+ edgeToMerge.setPreds( Canonical.join( edgeToMerge.getPreds(),
+ edgeA.getPreds()
+ )
+ );
}
}
}
BUILDSCRIPT=~/research/Robust/src/buildscript
#DEBUGFLAGS= -disjoint-debug-callsite Bar addSomething 1
-DEBUGFLAGS= -disjoint-debug-callsite Foo main 1
+#DEBUGFLAGS= -disjoint-debug-callsite Foo main 1
#DEBUGFLAGS= -disjoint-debug-callsite main analysisEntryMethod 1
#DEBUGFLAGS= -disjoint-debug-callsite addSomething main 1
#DEBUGFLAGS= -disjoint-debug-callsite addBar addSomething 1
#DEBUGFLAGS= -disjoint-debug-callsite Bar addBar 1
-#DEBUGFLAGS=
+DEBUGFLAGS=
BSFLAGS= -mainclass Test -justanalyze -disjoint -disjoint-k 2 -disjoint-write-dots final -disjoint-write-ihms -disjoint-alias-file aliases.txt normal -enable-assertions