new version of experiments
authorjjenista <jjenista>
Fri, 27 Jan 2012 18:00:48 +0000 (18:00 +0000)
committerjjenista <jjenista>
Fri, 27 Jan 2012 18:00:48 +0000 (18:00 +0000)
Robust/src/Analysis/Disjoint/DisjointAnalysis.java
Robust/src/Analysis/Disjoint/GraphElementCount.java
Robust/src/Analysis/Disjoint/ReachGraph.java
Robust/src/Benchmarks/oooJava/comma.txt [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/master-makefile
Robust/src/Benchmarks/oooJava/run-count-elements-exp.sh
Robust/src/IR/State.java
Robust/src/Main/Main.java
Robust/src/Tests/disjoint/strong-up-change-node-count/makefile
Robust/src/buildscript

index 885730212149793a4d6abce9b28ff039291735b1..33d512593a1a28bcf1921d15113818dd6489e182 100644 (file)
@@ -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 ) {
index e377ba8a169acf1edc4b3cceb36d940699629df8..13030da8dc275e584c88d53f36351761fd7699d4 100644 (file)
@@ -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";
index d6c99ce175007e18b60c082b4b43a4ee7c5f884e..ca79278710caa0c5d83dfdc6aae8456358fef8a8 100644 (file)
@@ -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 (file)
index 0000000..41622b4
--- /dev/null
@@ -0,0 +1 @@
+,
\ No newline at end of file
index 11a610cc9beba6f1fc2cd290a9e8be8f91771ae8..135be802f05762945199039c65f73862cf4b749b 100644 (file)
@@ -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
index 8d17774b533957679d38a7699475906a1bce72dd..154bf923c20c6bc85a19904465f20ddb0e4e1bad 100755 (executable)
@@ -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
index c2cc209f664db64be3bcaebe1417cafa93271f72..2193d4972eaa61cc7fae18f34c45dcf31c9b91d5 100644 (file)
@@ -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;
 
index bc1177cd0b153252228492139b03501a09b20926..9b34ddc7bba7b7a1f282d06c56c3b62559dff597 100644 (file)
@@ -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;
index 21155ba41c8a975193d50c3f92830582fa4eb80b..ba5def0ad11aa0ee184c55d82a7d9b9cb73ee065 100644 (file)
@@ -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
index 2483ac8e81a8e9eef26e35ba38567086e19c023a..2468a2c444e0efb48f68b933a15703358c441e08 100755 (executable)
@@ -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