From: jjenista Date: Fri, 27 Jan 2012 18:00:48 +0000 (+0000) Subject: new version of experiments X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=455c6625fc60202599e2ee9ff60716bb572d91f9;p=IRC.git new version of experiments --- diff --git a/Robust/src/Analysis/Disjoint/DisjointAnalysis.java b/Robust/src/Analysis/Disjoint/DisjointAnalysis.java index 88573021..33d51259 100644 --- a/Robust/src/Analysis/Disjoint/DisjointAnalysis.java +++ b/Robust/src/Analysis/Disjoint/DisjointAnalysis.java @@ -936,13 +936,6 @@ public class DisjointAnalysis implements HeapAnalysis { 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); @@ -964,6 +957,17 @@ public class DisjointAnalysis implements HeapAnalysis { 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 ) { diff --git a/Robust/src/Analysis/Disjoint/GraphElementCount.java b/Robust/src/Analysis/Disjoint/GraphElementCount.java index e377ba8a..13030da8 100644 --- a/Robust/src/Analysis/Disjoint/GraphElementCount.java +++ b/Robust/src/Analysis/Disjoint/GraphElementCount.java @@ -47,13 +47,23 @@ public class GraphElementCount { 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"; diff --git a/Robust/src/Analysis/Disjoint/ReachGraph.java b/Robust/src/Analysis/Disjoint/ReachGraph.java index d6c99ce1..ca792787 100644 --- a/Robust/src/Analysis/Disjoint/ReachGraph.java +++ b/Robust/src/Analysis/Disjoint/ReachGraph.java @@ -5423,7 +5423,7 @@ public class ReachGraph { 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) diff --git a/Robust/src/Benchmarks/oooJava/comma.txt b/Robust/src/Benchmarks/oooJava/comma.txt new file mode 100644 index 00000000..41622b47 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/comma.txt @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/Robust/src/Benchmarks/oooJava/master-makefile b/Robust/src/Benchmarks/oooJava/master-makefile index 11a610cc..135be802 100644 --- a/Robust/src/Benchmarks/oooJava/master-makefile +++ b/Robust/src/Benchmarks/oooJava/master-makefile @@ -77,9 +77,13 @@ DISJOINT= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) #-disjoint- # 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 \ @@ -156,11 +160,11 @@ $(PROGRAM)p.bin: $(SOURCE_FILES) ../master-makefile $(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) @@ -191,6 +195,7 @@ clean: 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 diff --git a/Robust/src/Benchmarks/oooJava/run-count-elements-exp.sh b/Robust/src/Benchmarks/oooJava/run-count-elements-exp.sh index 8d17774b..154bf923 100755 --- a/Robust/src/Benchmarks/oooJava/run-count-elements-exp.sh +++ b/Robust/src/Benchmarks/oooJava/run-count-elements-exp.sh @@ -7,39 +7,80 @@ bnum=$[$bnum+1] 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 diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index c2cc209f..2193d497 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -127,6 +127,7 @@ public class State { 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; diff --git a/Robust/src/Main/Main.java b/Robust/src/Main/Main.java index bc1177cd..9b34ddc7 100644 --- a/Robust/src/Main/Main.java +++ b/Robust/src/Main/Main.java @@ -313,7 +313,7 @@ public class Main { } 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; diff --git a/Robust/src/Tests/disjoint/strong-up-change-node-count/makefile b/Robust/src/Tests/disjoint/strong-up-change-node-count/makefile index 21155ba4..ba5def0a 100644 --- a/Robust/src/Tests/disjoint/strong-up-change-node-count/makefile +++ b/Robust/src/Tests/disjoint/strong-up-change-node-count/makefile @@ -7,7 +7,7 @@ BSFLAGS= -joptimize -printlinenum \ -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 @@ -29,4 +29,4 @@ clean: 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 diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 2483ac8e..2468a2c4 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -51,7 +51,7 @@ 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 -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