rg.writeGraph( "genReach"+fgrn.getGraphName(),
true, // write labels (variables)
- false, // selectively hide intermediate temp vars
+ true, // selectively hide intermediate temp vars
true, // prune unreachable heap regions
- false, // hide reachability altogether
+ true, // hide reachability altogether
false, // hide subset reachability states
true, // hide predicates
true ); // hide edge taints
--- /dev/null
+PROGRAM=Test
+
+SOURCE_FILES=test.java
+
+BUILDSCRIPT=../../../buildscript
+
+COREPROFOVERFLOW= #-coreprof-checkoverflow
+USECOREPROF= #-coreprof $(COREPROFOVERFLOW) \
+ -coreprof-eventwords 1024*1024*128 \
+ -coreprof-enable cpe_main \
+ -coreprof-enable cpe_runmalloc \
+ -coreprof-enable cpe_runfree \
+ -coreprof-enable cpe_count_poolalloc \
+ -coreprof-enable cpe_count_poolreuse \
+ -coreprof-enable cpe_workschedgrab \
+ -coreprof-enable cpe_taskdispatch \
+ -coreprof-enable cpe_taskexecute \
+ -coreprof-enable cpe_taskretire
+# -coreprof-enable cpe_taskstallvar \
+# -coreprof-enable cpe_taskstallmem
+
+
+DISJOINT= -disjoint -disjoint-k 1 -enable-assertions #-disjoint-desire-determinism
+
+USEOOO= -ooojava 24 2 -ooodebug -squeue
+USERCR= -ooojava 23 2 -rcr -ooodebug -squeue
+
+BSFLAGS= -justanalyze -mainclass $(PROGRAM) -heapsize-mb 1024 -garbagestats -noloop -joptimize -debug #-ooodebug-disable-task-mem-pool -64bit
+
+
+all: ooo
+
+
+single:
+ $(BUILDSCRIPT) $(BSFLAGS) -thread -o $(PROGRAM)s -builddir sing $(SOURCE_FILES)
+
+
+ooo: $(PROGRAM)p.bin
+
+$(PROGRAM)p.bin: $(SOURCE_FILES) makefile
+ $(BUILDSCRIPT) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
+
+rcr: $(PROGRAM)r.bin
+
+$(PROGRAM)r.bin: $(SOURCE_FILES) makefile
+ $(BUILDSCRIPT) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
+
+
+clean:
+ rm -f $(PROGRAM)p.bin $(PROGRAM)r.bin $(PROGRAM)s.bin
+ rm -fr par rcr sing
+ rm -f *~
+ rm -f *.dot
+ rm -f *.png
+ rm -f *.txt
+ rm -f aliases.txt
+ rm -f mlpReport*txt
+ rm -f results*txt
+ rm -f coreprof.dat
--- /dev/null
+public class Foo {
+ public int z;
+ public Foo() {}
+ public Foo f;
+ public Foo g;
+}
+
+public class Test {
+
+ static public void main( String args[] ) {
+ innerMain( args.length );
+ }
+
+
+
+ //////////////////////////////////////////////
+ //
+ // this program exhibits a bug in the basic
+ // points-to analysis!!! GAH!!
+ //
+ // Variable reuse is behaving wackily.
+ // Look at the declaration of Foo c. In the
+ // generated reach graphs Foo c nodes are
+ // dropped or never appear. If instead you
+ // move the declaration of Foo c = getFoo3()
+ // where it is initialized, you see the right
+ // points-to graph. FIX IT
+
+ static public void innerMain( int x ) {
+ Foo a = null;
+ Foo t = getFoo1();
+ Foo c;
+
+ for( int i = 0; i < 1; ++i ) {
+ a = t;
+ t = getFoo1();
+ a.g = t;
+ }
+
+ genreach p1;
+
+ Foo b = getFoo2();
+ c = getFoo3();
+
+ genreach p2;
+
+ if( x > 0 ) {
+ a.f = b;
+ b.g = b;
+ b.f = getFoo4();
+ } else {
+ a.f = c;
+ c.g = getFoo4();
+ }
+
+ genreach p3;
+
+ rblock T {
+ System.out.println( a.z+b.z+c.z );
+ }
+ }
+
+ // these "getFoo" methods are exactly the same, except a heap
+ // analysis considers each one a separate allocation site
+ static public Foo getFoo1() { return new Foo(); }
+ static public Foo getFoo2() { return new Foo(); }
+ static public Foo getFoo3() { return new Foo(); }
+ static public Foo getFoo4() { return new Foo(); }
+}
USEOOO= -ooojava 24 2 -ooodebug -squeue
USERCR= -ooojava 23 2 -rcr -ooodebug -squeue
-BSFLAGS= -mainclass $(PROGRAM) -heapsize-mb 1024 -garbagestats -noloop -joptimize -debug #-ooodebug-disable-task-mem-pool -justanalyze -64bit
+BSFLAGS= -64bit -mainclass $(PROGRAM) -heapsize-mb 1024 -garbagestats -noloop -joptimize -debug #-ooodebug-disable-task-mem-pool -justanalyze
all: ooo