1 ##########################################################################
3 # This master makefile shoudl be included in each local makefile of a
4 # benchmark directory. The local makefile should define PROGRAM as
5 # the name of the class with the main method, which also becomes the
6 # name of the output binary. The local makefile should also declare
7 # SOURCE_FILES with whatever Java files should be compiled
9 ##########################################################################
12 BUILDSCRIPT=../../../buildscript
15 COREPROFOVERFLOW= #-coreprof-checkoverflow
16 USECOREPROF= #-coreprof $(COREPROFOVERFLOW) \
17 -coreprof-eventwords 1024*1024*128 \
18 -coreprof-enable cpe_main \
19 -coreprof-enable cpe_taskexecute \
20 -coreprof-enable cpe_taskdispatch \
21 -coreprof-enable cpe_rcr_traverse
22 # -coreprof-enable cpe_runmalloc \
23 # -coreprof-enable cpe_taskretire \
24 -coreprof-enable cpe_workschedsubmit \
25 -coreprof-enable cpe_workschedgrab \
26 -coreprof-enable cpe_poolalloc \
27 -coreprof-enable cpe_preparememq \
28 -coreprof-enable cpe_runfree \
29 -coreprof-enable cpe_count_poolalloc \
30 -coreprof-enable cpe_count_poolreuse \
31 -coreprof-enable cpe_taskstallvar \
32 -coreprof-enable cpe_taskstallmem
35 USEOOO= -ooojava $(NUM_OOO_WORKERS) 2 -squeue #-ooodebug-disable-task-mem-pool
36 USERCR= -ooojava $(NUM_RCR_WORKERS) 2 -rcr -squeue -ooodebug
37 OOODEBUG= -ooodebug -printlinenum
38 RCRDEBUG= -rcr_debug -printlinenum
39 RCRDEBUGV= -rcr_debug_verbose -printlinenum
40 BSFLAGS= -compiler-heapsize-mb 12000 -64bit -mainclass $(PROGRAM) -garbagestats -joptimize -noloop -optimize -nolock -debug #-nooptimize #src-after-pp
43 CHECKPOINTSTO= -printlinenum -pointsto-check-v-runtime -debug
46 DRELEASEMODE=-disjoint-release-mode -disjoint-dvisit-stack-callees-on-top -disjoint-alias-file aliases.txt tabbed
47 DISJOINT= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) #-disjoint-desire-determinism
50 #####################################
52 # There are a lot of options for
53 # output and debugging disjoint
54 # reachability analysis:
56 #####################################
58 # -disjoint-write-dots final (get the final reach graph for each method, or use "all" instead of "final" to get every updated result)
59 # -disjoint-write-ihms (get the initial heap model (IHM) for callees to see what the analysis started with, and which call sites contributed)
60 # -disjoint-debug-scheduling (use to get messages about WHY a method is rescheduled for analysis)
62 # to use -disjoint-debug-callsite flag, arguments are:
63 # 1. callee symbol, ex: MainClass.foo() has symbol "foo"
65 # 3. numCallSiteVisitsToSkip, the analysis sometimes revisits a call site many, MANY times, but usually use 1
66 # 4. numCallSiteVisitsToCapture, if you choose a really high number you'll get every visit, could be a lot
67 # 5. true/false, whether to immediately halt compiler after number of visits specified have been captured
69 # -disjoint-debug-callsite foo main 1 1 true
71 # to use -disjoint-debug-snap-method, arguments are:
72 # 1. method symbol to take program point snapshots of
73 # 2. numVisitsToSkip, sometimes the early visits tell you nothing, context is too empty
74 # 3. numVisitsToCapture
75 # 4. true/false, halt compiler after number of specified visits are captured
76 # EX: (skip first 10 visits, capture the next 3, then halt)
77 # -disjoint-debug-snap-method Remove 10 3 true
79 DISJOINTDEBUG= -disjoint -disjoint-k 1 -enable-assertions $(DRELEASEMODE) \
80 -disjoint-write-dots final
81 # -disjoint-debug-scheduling
82 # -disjoint-debug-callsite Barneshut.Insert Barneshut.run 50 500 true
83 # -disjoint-debug-snap-method ArrayIndexedGraph.createNode 1 100 true \
84 # -disjoint-write-dots final \
85 # -flatirusermethods \
86 # -disjoint-write-ihms \
87 # -disjoint-write-initial-contexts \
88 # -disjoint-debug-snap-method String.indexOf 1 1000 true
89 # -disjoint-debug-callsite String.concat2 FileInputStream.readLine 1 1000 true \
90 # -disjoint-debug-snap-method String.concat2 1 1000 true
91 # -disjoint-debug-snap-method FileInputStream.readLine 1 1000 true
92 # -disjoint-write-all-node-graphs
95 # -disjoint-debug-callsite String.toString String.valueOf 1 1000 true \
96 # -disjoint-desire-determinism
97 # -disjoint-debug-callsite Demand.add Lateral.compute 1 1000 true
98 # -disjoint-debug-snap-method ComputeCenterOfMass 6 2 true
104 $(BUILDSCRIPT) -nojava $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
107 $(BUILDSCRIPT) -nojava -thread $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) -o $(PROGRAM)s -builddir sing $(SOURCE_FILES)
110 $(BUILDSCRIPT) -nojava $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
113 $(BUILDSCRIPT) -nojava $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(DISJOINTDEBUG) $(CHECKPOINTSTO) -o $(PROGRAM)c -builddir chk $(SOURCE_FILES)
117 single: $(PROGRAM)s.bin
119 $(PROGRAM)s.bin: $(SOURCE_FILES) ../master-makefile
120 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) -o $(PROGRAM)s -builddir sing $(SOURCE_FILES)
123 check-pointsto: $(PROGRAM)c.bin
125 $(PROGRAM)c.bin: $(SOURCE_FILES) ../master-makefile
126 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(DISJOINTDEBUG) $(CHECKPOINTSTO) -o $(PROGRAM)c -builddir chk $(SOURCE_FILES)
130 disjoint: $(SOURCE_FILES) ../master-makefile
131 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(DISJOINT) -justanalyze $(SOURCE_FILES)
133 disjoint-defreach: $(SOURCE_FILES) ../master-makefile
134 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(DISJOINT) -justanalyze -do-definite-reach-analysis $(SOURCE_FILES)
136 ooo-defreach: $(SOURCE_FILES) ../master-makefile
137 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINTDEBUG) -do-definite-reach-analysis -o $(PROGRAM)d -builddir def $(SOURCE_FILES)
143 $(PROGRAM)p.bin: $(SOURCE_FILES) ../master-makefile
144 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
146 ooo-debug: $(SOURCE_FILES) ../master-makefile
147 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(OOODEBUG) $(DISJOINTDEBUG) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
150 disjoint-debug: $(SOURCE_FILES) ../master-makefile
151 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USEOOO) $(DISJOINTDEBUG) -o $(PROGRAM)p -builddir par $(SOURCE_FILES)
153 rcr: $(SOURCE_FILES) ../master-makefile
154 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
157 rcrpointer: $(SOURCE_FILES) ../master-makefile
158 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) -pointer $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
160 rcr-debug: $(SOURCE_FILES) ../master-makefile
161 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(OOODEBUG) $(RCRDEBUG) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
163 rcrpointer-debug: $(SOURCE_FILES) ../master-makefile
164 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) -pointer $(OOODEBUG) $(RCRDEBUG) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
167 rcr-debug-v: $(SOURCE_FILES) ../master-makefile
168 $(BUILDSCRIPT) $(BMFLAGS) $(BSFLAGS) $(USECOREPROF) $(USERCR) $(RCRDEBUGV) $(DISJOINT) -o $(PROGRAM)r -builddir rcr $(SOURCE_FILES)
171 rm -f $(PROGRAM)p.bin $(PROGRAM)s.bin $(PROGRAM)r.bin $(PROGRAM)c.bin $(PROGRAM)d.bin
172 rm -fr par sing rcr chk def