protected boolean doDefiniteReachAnalysis = false;
protected DefiniteReachAnalysis definiteReachAnalysis;
+ protected boolean summarizePerClass = false;
+
// data structure for public interface
private Hashtable< Descriptor, HashSet<AllocSite> >
definiteReachAnalysis = new DefiniteReachAnalysis( pm );
}
+ if( !state.DISJOINT_USE_GLOBAL_SWEEP ) {
+ ReachGraph.DISABLE_GLOBAL_SWEEP = true;
+ }
+
+ if( !state.DISJOINT_USE_STRONG_UPDATE ) {
+ ReachGraph.DISABLE_STRONG_UPDATES = true;
+ }
+
+ if( !state.DISJOINT_USE_PREDICATES ) {
+ ReachGraph.DISABLE_PREDICATES = true;
+ }
+
+ if( state.DISJOINT_SUMMARIZE_PER_CLASS ) {
+ summarizePerClass = true;
+ }
+
if( suppressOutput ) {
System.out.println("* Running disjoint reachability analysis with output suppressed! *");
public class ReachGraph {
// use to disable improvements for comparison
- protected static final boolean DISABLE_STRONG_UPDATES = false;
- protected static final boolean DISABLE_GLOBAL_SWEEP = false;
+ protected static boolean DISABLE_STRONG_UPDATES = false;
+ protected static boolean DISABLE_GLOBAL_SWEEP = false;
+ protected static boolean DISABLE_PREDICATES = false;
// a special out-of-scope temps
protected static TempDescriptor tdReturn;
-coreprof-enable cpe_taskstallmem
+
USEOOO= -ooojava $(NUM_OOO_WORKERS) 2 -squeue #-ooodebug-disable-task-mem-pool
USERCR= -ooojava $(NUM_RCR_WORKERS) 2 -rcr -squeue -ooodebug
OOODEBUG= -ooodebug -printlinenum
# -disjoint-debug-snap-method Remove 10 3 true
DISJOINTDEBUG= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) \
+ -do-definite-reach-analysis \
+ -disjoint-disable-global-sweep \
+ -disjoint-disable-strong-update \
+ -disjoint-disable-predicates \
+ -disjoint-summarize-per-class \
-disjoint-write-dots final
# -disjoint-debug-scheduling
# -disjoint-debug-callsite Barneshut.Insert Barneshut.run 50 500 true
public int DISJOINTSNAPVISITTOSTART=0;
public int DISJOINTSNAPNUMVISITS=0;
public boolean DISJOINTSNAPSTOPAFTER=false;
-
public boolean DISJOINTDEBUGSCHEDULING=false;
-
public boolean DISJOINT_WRITE_ALL_NODE_FINAL_GRAPHS=false;
+ public boolean DISJOINT_COUNT_VISITS=false;
public boolean POINTSTO_CHECK_V_RUNTIME=false;
public boolean DO_DEFINITE_REACH_ANALYSIS=false;
-
- public boolean DISJOINT_COUNT_VISITS=false;
+ public boolean DISJOINT_USE_GLOBAL_SWEEP=true;
+ public boolean DISJOINT_USE_STRONG_UPDATE=true;
+ public boolean DISJOINT_USE_PREDICATES=true;
+ public boolean DISJOINT_SUMMARIZE_PER_CLASS=false;
public boolean OOOJAVA=false;
state.DO_DEFINITE_REACH_ANALYSIS = true;
+ } else if( option.equals("-disjoint-disable-global-sweep") ) {
+ state.DISJOINT_USE_GLOBAL_SWEEP = false;
+
+ } else if( option.equals("-disjoint-disable-strong-update") ) {
+ state.DISJOINT_USE_STRONG_UPDATE = false;
+
+ } else if( option.equals("-disjoint-disable-predicates") ) {
+ state.DISJOINT_USE_PREDICATES = false;
+
+ } else if( option.equals("-disjoint-summarize-per-class") ) {
+ state.DISJOINT_SUMMARIZE_PER_CLASS = true;
+
+
} else if( option.equals("-count-visits") ) {
state.DISJOINT_COUNT_VISITS = true;
echo -disjoint-dvisit-pqueue use prio. q strat to visit descriptors
echo -disjoint-desire-determinism set above interproc for determinism
echo -disjoint-debug-scheduling debug when methods are scheduled for analysis
-echo -do-definite-reach-analysis enable improved precision for disjoint reachability analysis
echo -count-visits for counting visits in the fixed point algorithm to evaluate convergence behavior
echo
+echo -do-definite-reach-analysis enable improved precision for disjoint reachability analysis
+echo -disjoint-disable-global-sweep
+echo -disjoint-disable-strong-update
+echo -disjoint-disable-predicates
+echo -disjoint-summarize-per-class
+echo
+echo
echo -pointsto-check-v-runtime check allocation site of pointer targets at runtime to help verify heap analysis results
echo
echo "-mlp <num cores> <max sese age> build mlp code"