treport += "\nFixed point algorithm visited "+totalMethodVisits+
" methods and "+totalNodeVisits+" nodes.";
}
- if( state.DISJOINT_COUNT_GRAPH_ELEMENTS ) {
- GraphElementCount gec = new GraphElementCount();
- for( Descriptor d : descriptorsToAnalyze ) {
- getPartial( d ).countGraphElements( gec );
- }
- treport += "\n"+gec+"\n";
- }
String justtime = String.format("%.2f", dt);
System.out.println(treport);
if( state.DISJOINT_WRITE_ALL_NODE_FINAL_GRAPHS ) {
writeFinalGraphsForEveryNode();
}
+
+ if( state.DISJOINT_COUNT_GRAPH_ELEMENTS ) {
+ GraphElementCount gec = new GraphElementCount();
+ for( Descriptor d : descriptorsToAnalyze ) {
+ getPartial( d ).countGraphElements( gec );
+ }
+ BufferedWriter bw =
+ new BufferedWriter( new FileWriter( state.DISJOINT_COUNT_GRAPH_ELEMENTS_FILE ) );
+ bw.write( gec.toStringCSV() );
+ bw.close();
+ }
if( state.DISJOINTALIASFILE != null && !suppressOutput ) {
if( state.TASK ) {
numEdgeStateNonzero += amount;
}
+ public String toStringCSV() {
+ return
+ numNodes+","+
+ numEdges+","+
+ numNodeStates+","+
+ numEdgeStates+","+
+ numNodeStateNonzero+","+
+ numEdgeStateNonzero;
+ }
+
public String toString() {
return
"################################################\n"+
- "Nodes = "+numNodes+"\n"+
- "Edges = "+numEdges+"\n"+
- "Node states = "+numNodeStates+"\n"+
- "Edge states = "+numEdgeStates+"\n"+
+ "Nodes = "+numNodes+"\n"+
+ "Edges = "+numEdges+"\n"+
+ "Node states = "+numNodeStates+"\n"+
+ "Edge states = "+numEdgeStates+"\n"+
"Node non-zero tuples = "+numNodeStateNonzero+"\n"+
"Edge non-zero tuples = "+numEdgeStateNonzero+"\n"+
"################################################\n";
for( HeapRegionNode node : id2hrn.values() ) {
- if( node.isShadow() || node.isWiped() ) {
+ if( node.isShadow() || node.isWiped() || node.isOutOfContext() ) {
// do not count nodes that are not functionally part of the
// abstraction (they are in the graph for implementation
// convenience when needed next)
--- /dev/null
+,
\ No newline at end of file
# EX: (skip first 10 visits, capture the next 3, then halt)
# -disjoint-debug-snap-method Remove 10 3 true
+ifndef DISJOINTDEBUGEXTRAS
+DISJOINTDEBUGEXTRAS=
+endif
+
DISJOINTDEBUG= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) -printlinenum \
-justanalyze \
- -disjoint-count-graph-elements
+ -disjoint-count-graph-elements cge.txt
# -disjoint-disable-strong-update
# -disjoint-disable-global-sweep \
$(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
ooo-debug: $(SOURCE_FILES) ../master-makefile
- $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(OOODEBUG) $(DISJOINTDEBUG) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
+ $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(OOODEBUG) $(DISJOINTDEBUG) $(DISJOINTDEBUGEXTRAS) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
disjoint-debug: $(SOURCE_FILES) ../master-makefile
- $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINTDEBUG) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
+ $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINTDEBUG) $(DISJOINTDEBUGEXTRAS) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
rcr: $(SOURCE_FILES) ../master-makefile
$(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
rm -f mlpReport*txt
rm -f results*txt
rm -f countElementsNodeListing.txt
+ rm -f cge.txt
rm -f *log
rm -f coreprof.dat
rm -f trace.out
BDIR[$bnum]=kmeans
bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=labyrinth
-#bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=moldyn
-#bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=monte
-#bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=power
-#bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=raytracing
-#bnum=$[$bnum+1]
-#
-#BDIR[$bnum]=tracking
-#bnum=$[$bnum+1]
+BDIR[$bnum]=labyrinth
+bnum=$[$bnum+1]
+
+BDIR[$bnum]=moldyn
+bnum=$[$bnum+1]
+
+BDIR[$bnum]=monte
+bnum=$[$bnum+1]
+
+BDIR[$bnum]=power
+bnum=$[$bnum+1]
+
+BDIR[$bnum]=raytracer
+bnum=$[$bnum+1]
+
+BDIR[$bnum]=tracking
+bnum=$[$bnum+1]
+
+
+mnum="0"
+
+MODE[$mnum]=""
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-disjoint-disable-strong-update"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-disjoint-disable-global-sweep"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-disjoint-disable-strong-update -disjoint-disable-global-sweep"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-do-definite-reach-analysis"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-do-definite-reach-analysis -disjoint-disable-strong-update"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-do-definite-reach-analysis -disjoint-disable-global-sweep"
+mnum=$[$mnum+1]
+
+MODE[$mnum]="-do-definite-reach-analysis -disjoint-disable-strong-update -disjoint-disable-global-sweep"
+mnum=$[$mnum+1]
+
+
+CURDIR=`pwd`
+
+CSV=$CURDIR/count-elements-exp.csv
+rm -f $CSV
+touch $CSV
+m="0"
+while [ $m -lt $mnum ]; do
-CSV=count-elements-exp.csv
+ b="0"
+ while [ $b -lt $bnum ]; do
-CUR=$PWD
-#echo 'Count Graph Elements Experiment' > $CSV
+ cd $CURDIR/${BDIR[$b]}
+
+ make ooo-debug "DISJOINTDEBUGEXTRAS=${MODE[$m]}"
+ cat cge.txt >> $CSV
+ make clean
+ b=$[$b+1]
-i="0"
-while [ $i -lt $bnum ]; do
- cd $CUR/${BDIR[$i]}
+ if [ $b -lt $[$bnum-1] ]; then
+ cd $CURDIR;
+ cat comma.txt >> $CSV
+ fi
+ done
- pwd
+ echo "" >> $CSV
- cd $CUR
- i=$[$i+1]
+ m=$[$m+1]
done
public boolean DISJOINT_WRITE_ALL_NODE_FINAL_GRAPHS=false;
public boolean DISJOINT_COUNT_VISITS=false;
public boolean DISJOINT_COUNT_GRAPH_ELEMENTS=false;
+ public String DISJOINT_COUNT_GRAPH_ELEMENTS_FILE=null;
public boolean POINTSTO_CHECK_V_RUNTIME=false;
} else if( option.equals("-disjoint-count-graph-elements") ) {
state.DISJOINT_COUNT_GRAPH_ELEMENTS = true;
-
+ state.DISJOINT_COUNT_GRAPH_ELEMENTS_FILE = args[++i];
} else if (option.equals("-optional"))
state.OPTIONAL=true;
-mainclass Test \
-justanalyze -disjoint -disjoint-k 1 -disjoint-write-dots final \
-disjoint-alias-file aliases.txt normal -enable-assertions \
- -disjoint-count-graph-elements
+ -disjoint-count-graph-elements abc.txt
#-flatirusermethods
all: $(PROGRAM).bin
rm -f *~
rm -f *.dot
rm -f *.png
- rm -f aliases.txt countElementsNodeListing.txt
\ No newline at end of file
+ rm -f aliases.txt countElementsNodeListing.txt abc.txt
\ No newline at end of file
echo -disjoint-desire-determinism set above interproc for determinism
echo -disjoint-debug-scheduling debug when methods are scheduled for analysis
echo -disjoint-count-visits for counting visits in the fixed point algorithm to evaluate convergence behavior
-echo -disjoint-count-graph-elements nodes, edges and states in final graph for main method context
+echo -disjoint-count-graph-elements FILE nodes, edges and states in final graph for main method context
echo
echo -do-definite-reach-analysis enable improved precision for disjoint reachability analysis
echo -disjoint-disable-global-sweep