true, // selectively hide intermediate temp vars
true, // prune unreachable heap regions
false, // hide reachability altogether
- true, // hide subset reachability states
+ false, // hide subset reachability states
true, // hide predicates
true); // hide edge taints
}
public class GraphElementCount {
- public long numNodes;
- public long numEdges;
- public long numNodeStates;
- public long numEdgeStates;
- public long numNodeStateNonzero;
- public long numEdgeStateNonzero;
+ private long numNodes;
+ private long numEdges;
+ private long numNodeStates;
+ private long numEdgeStates;
+ private long numNodeStateNonzero;
+ private long numEdgeStateNonzero;
public GraphElementCount() {
numNodes = 0;
private static boolean resolveMethodDebugDOTselectTemps = true;
private static boolean resolveMethodDebugDOTpruneGarbage = true;
private static boolean resolveMethodDebugDOThideReach = false;
- private static boolean resolveMethodDebugDOThideSubsetReach = true;
- private static boolean resolveMethodDebugDOThidePreds = false;
+ private static boolean resolveMethodDebugDOThideSubsetReach = false;
+ private static boolean resolveMethodDebugDOThidePreds = true;
private static boolean resolveMethodDebugDOThideEdgeTaints = true;
static String debugGraphPrefix;
BufferedWriter bw =
new BufferedWriter(new FileWriter(graphName+".dot") );
+
+ if( state.DISJOINT_COUNT_GRAPH_ELEMENTS ) {
+ GraphElementCount gec = new GraphElementCount();
+ countGraphElements( gec );
+ bw.write("/* Counting Graph Elements\n"+gec+" */\n");
+ }
+
+
bw.write("digraph "+graphName+" {\n");
# -disjoint-debug-scheduling (use to get messages about WHY a method is rescheduled for analysis)
# to use -disjoint-debug-callsite flag, arguments are:
-# 1. callee symbol, ex: MainClass.foo() has symbol "foo"
+# 1. callee symbol, ex: MainClass.foo() has symbol "MainClass.foo"
# 2. caller symbol
# 3. numCallSiteVisitsToSkip, the analysis sometimes revisits a call site many, MANY times, but usually use 1
# 4. numCallSiteVisitsToCapture, if you choose a really high number you'll get every visit, could be a lot
-justanalyze \
-disjoint-count-graph-elements
# -disjoint-disable-strong-update
-# -disjoint-disable-global-sweep
+# -disjoint-disable-global-sweep \
+
+# -disjoint-write-dots final \
# -disjoint-summarize-per-class
# -disjoint-disable-predicates \
#
-# -disjoint-write-dots final
# -do-definite-reach-analysis \
# -disjoint-debug-scheduling
-# -disjoint-debug-callsite Barneshut.Insert Barneshut.run 50 500 true
+
+# -disjoint-debug-callsite Common.common_findNearestPoint Normal.work 5 500 true \
+
# -disjoint-debug-snap-method ArrayIndexedGraph.createNode 1 100 true \
# -disjoint-write-dots final \
# -flatirusermethods \