########################################################################## # # This master makefile shoudl be included in each local makefile of a # benchmark directory. The local makefile should define PROGRAM as # the name of the class with the main method, which also becomes the # name of the output binary. The local makefile should also declare # SOURCE_FILES with whatever Java files should be compiled # ########################################################################## BUILDSCRIPT=../../../buildscript COREPROFOVERFLOW= #-coreprof-checkoverflow USECOREPROF= #-coreprof $(COREPROFOVERFLOW) \ -coreprof-eventwords 1024*1024*128 \ -coreprof-enable cpe_main \ -coreprof-enable cpe_taskexecute \ -coreprof-enable cpe_taskdispatch \ -coreprof-enable cpe_rcr_traverse # -coreprof-enable cpe_runmalloc \ # -coreprof-enable cpe_taskretire \ -coreprof-enable cpe_workschedsubmit \ -coreprof-enable cpe_workschedgrab \ -coreprof-enable cpe_poolalloc \ -coreprof-enable cpe_preparememq \ -coreprof-enable cpe_runfree \ -coreprof-enable cpe_count_poolalloc \ -coreprof-enable cpe_count_poolreuse \ -coreprof-enable cpe_taskstallvar \ -coreprof-enable cpe_taskstallmem USEOOO= -ooojava $(NUM_OOO_WORKERS) 2 -ooodebug -squeue #-ooodebug-disable-task-mem-pool USERCR= -ooojava $(NUM_RCR_WORKERS) 2 -rcr -ooodebug -squeue RCRDEBUG= -rcr_debug RCRDEBUGV= -rcr_debug_verbose BSFLAGS= -64bit -mainclass $(PROGRAM) -heapsize-mb 8000 -garbagestats -joptimize -noloop -optimize -debug #-nooptimize #src-after-pp DRELEASEMODE=-disjoint-release-mode -disjoint-dvisit-stack-callees-on-top -disjoint-alias-file aliases.txt tabbed DISJOINT= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) #-disjoint-desire-determinism ##################################### # # There are a lot of options for # output and debugging disjoint # reachability analysis: # ##################################### # -disjoint-write-dots final (get the final reach graph for each method, or use "all" instead of "final" to get every updated result) # -disjoint-write-ihms (get the initial heap model (IHM) for callees to see what the analysis started with, and which call sites contributed) # -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" # 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 # 5. true/false, whether to immediately halt compiler after number of visits specified have been captured # EX: # -disjoint-debug-callsite foo main 1 1 true # to use -disjoint-debug-snap-method, arguments are: # 1. method symbol to take program point snapshots of # 2. numVisitsToSkip, sometimes the early visits tell you nothing, context is too empty # 3. numVisitsToCapture # 4. true/false, halt compiler after number of specified visits are captured # EX: (skip first 10 visits, capture the next 3, then halt) # -disjoint-debug-snap-method Remove 10 3 true DISJOINTDEBUG= -justanalyze -disjoint -disjoint-k 1 -enable-assertions \ -disjoint-debug-callsite createNode run 100 50 false # -disjoint-desire-determinism # -disjoint-debug-snap-method ComputeCenterOfMass 6 2 true # -disjoint-debug-scheduling # -flatirusermethods default: $(BUILDSCRIPT) -nojava $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES) single-remake-c: $(BUILDSCRIPT) -nojava -thread $(BSFLAGS) $(USECOREPROF) -o $(PROGRAM)s -builddir sing $(SOURCE_FILES) rcr-remake-c: $(BUILDSCRIPT) -nojava $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES) single: $(PROGRAM)s.bin $(PROGRAM)s.bin: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) -thread $(BSFLAGS) $(USECOREPROF) -o $(PROGRAM)s -builddir sing $(SOURCE_FILES) ooo: $(PROGRAM)p.bin $(PROGRAM)p.bin: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES) disjoint-debug: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINTDEBUG) -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) rcrpointer: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) -pointer $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES) rcr-debug: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(RCRDEBUG) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES) rcr-debug-v: $(SOURCE_FILES) ../master-makefile $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(RCRDEBUGV) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES) clean: rm -f $(PROGRAM)p.bin $(PROGRAM)s.bin $(PROGRAM)r.bin rm -fr par sing rcr rm -f tmp.c 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 *log rm -f coreprof.dat rm -f trace.out