X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2Fbuildscript;h=4ea2b894da3c7f6cc4b4d7b8300cf5607f01ac84;hb=fe371c596d92481a3acb00894fbf92a8a2738daf;hp=462291ebdfaecf9a8fda9afd38b9dbb4d5e40d2b;hpb=2092d67cb55949f1826bf8fc295c4f0d52bf4198;p=IRC.git diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 462291eb..4ea2b894 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -50,6 +50,9 @@ echo -disjoint-dvisit-stack-callees-on-top alternate stack strat 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 -do-definite-reach-analysis enable improved precision for disjoint reachability analysis +echo +echo -pointsto-check-v-runtime check allocation site of pointer targets at runtime to help verify heap analysis results echo echo "-mlp build mlp code" echo -mlpdebug if mlp, report progress and interim results @@ -67,12 +70,12 @@ echo "-disall execute to collect whole distribution" echo "-disstart specify the start number of distribution information collection" echo -multicore generate multi-core version binary echo "-numcore set the number of cores (should be used together with -multicore), defaultly set as 1" -echo "-cacheflush enable cache flush in raw version binary (should be used togethere with -raw)" echo "-interrupt generate raw version binary with interruption (should be used togethere with -raw)" echo "-rawpath print out execute path information for raw version (should be used together with -raw)" echo "-useprofile use profiling data for scheduling (should be used together with -raw)" echo -printscheduling print out scheduling graphs echo -printschedulesim print out scheduling simulator result graphs +echo "-tilera_output_dir specify the output directory for the generated TILERA code" echo "-tilera_bme generate tilera version binary for Bare Mental Environment (should be used together with -multicore" echo "-tilera_zlinux generate tilera version binary for Zero-Overhead Linux with multi-process mode (should be used together with -multicore" echo "-tileraconfig config tilera simulator/pci as nxm (should be used together with -tilera)" @@ -82,9 +85,13 @@ echo "-tilera_memprof build the memprof version (should be used together with -t echo -accurateprofile build with accurate profile information including pre/post task processing info echo -profile_interrupt build with profile information of interrupts echo "-useio use standard io to output profiling data (should be used together with -raw and -profile), it only works with single core version" +echo -gccachecoherent turns on the cache coherence during gc echo echo Multicore GC options +echo -perfcount performance counters +echo -memperfcount Memory performance counters echo -multicoregc generate multi-core binary with garbage collection +echo -pmc parallel collector echo "-numcore4gc set the number of cores for gc (should be used together with -multicoregc), defaultly set as 0" echo "-gcmem_local set the gc shared memory allocation strategy as local (should be used together with -multicoregc)" echo "-gcmem_fixed set the gc shared memory allocation strategy as fixed (should be used together with -multicoregc)" @@ -97,6 +104,10 @@ echo "-gccontroller_remote set the gc shared memory to use a remote controller f echo "-gcsmallpagesize(2) set the gc shared memory to use small page size (should be used together with -multicoregc)" echo "-gclargepagesize set the gc shared memory to use large page size (should be used together with -multicoregc)" echo "-gclargesharedheap(2) set the gc shared memory as large (should be used together with -multicoregc)" +echo "-tilera_page_size set the page size in multicore code" +echo "-tilera_page_size_bits set the page size bits in multicore code" +echo "-tilera_num_blocks set the total number of blocks in multicore code" +echo "-tilera_num_pages_per_block set the number of pages per block in multicore code" echo "-gccacheadapt setup as cacheadaptable mode (should be used together with -multicoregc)" echo -gcprofile build with gcprofile options echo -mgc generate Multicore GC binary without task stuff @@ -105,6 +116,8 @@ echo -gctbldebug generate GC_TBL_DEBUG code echo echo SSJava options echo -ssjava enables SSJava +echo -ssjavadebug reports interim results +echo -ssjava-induce-error N S where 1/N is the probability to error at any deref or divide and S is a random seed echo echo Other options echo -jni enable jni @@ -130,7 +143,8 @@ echo -tagstate do tag state analysis echo -optional enable optional echo -debug generate debug symbols echo -prefetch do prefetch analysis -echo -heapsize-mb NUM set initial heap size in MB, default is 256 +echo -heapsize-mb NUM set output program initial heap size in MB, default is 256 +echo -compiler-heapsize-mb NUM set heap size in MB for the JVM running the compiler, default is 1500 echo -garbagestats Print garbage collection statistics echo -webinterface enable web interface echo -runtimedebug printout runtime debug messages @@ -150,12 +164,15 @@ echo -recovery compile recovery code echo -dsmtask support work and task class library echo -recoverystats print out recovery record echo -src-after-pp prints source code after preprocessor to tmp.c +echo -capture-null-dereferences generates code to warn before derefencing null echo -printlinenum print out line numbers in generated C codes echo -help help } tmpbuilddirectory="tmpbuilddirectory" JNI=false +SSJAVA=false +USE_SSJAVA_CLASSPATH=false SRCAFTERPP=false; COREPROF=false; NUMA=false; @@ -179,6 +196,7 @@ NOJAVA=false CHECKFLAG=false RECOVERFLAG=false MLP_ON=false +OOOJAVA=false RCR=false RCR_DEBUG=false RCR_DEBUG_VERBOSE=false @@ -191,7 +209,6 @@ TILERAZLINUXFLAG=false TILERAMEMPROFFLAG=false TILERACONFIG='' TILERACORES='' -CACHEFLUSHFLAG=false RAWCONFIG='' DEBUGFLAG=false RAWPATHFLAG=false @@ -204,6 +221,9 @@ USEIOFLAG=false INTERRUPTFLAG=false THREADSIMULATEFLAG=false; MULTICOREGCFLAG=false; +PERFCOUNT=false; +MEMPERFCOUNT=false; +PMCFLAG=false; GCMEMLOCALFLAG=false; GCMEMFIXEDFLAG=false; GCMEMMIXEDFLAG=false; @@ -241,6 +261,14 @@ ASSEMBLY=false GCCORES='' TILERAN1COREFLAG=false TILERA56COREFLAG=false +TILERAOUTPUTDIR="tilera" +TILERA_PAGE_SIZE="0x10000" +TILERA_PAGE_SIZE_BITS="16" +TILERA_NUM_BLOCKS="20" +TILERA_NUM_PAGES_PER_BLOCK="16" +GCCACHECOHERENTFLAG=false +COMPILER_HEAP_SIZE="1500" + if [[ -z $1 ]] then @@ -262,6 +290,10 @@ EXTRAOPTIONS="$EXTRAOPTIONS -DJNI -I$ROBUSTROOT/Runtime/jni" elif [[ $1 = '-justanalyze' ]] then EXITAFTERANALYSIS=true +elif [[ $1 = '-capture-null-dereferences' ]] +then +JAVAOPTS="$JAVAOPTS -capture-null-dereferences" +EXTRAOPTIONS="$EXTRAOPTIONS -DCAPTURE_NULL_DEREFERENCES" elif [[ $1 = '-src-after-pp' ]] then SRCAFTERPP=true @@ -413,6 +445,9 @@ PROFILEINTERRUPTFLAG=true elif [[ $1 = '-useio' ]] then USEIOFLAG=true +elif [[ $1 = '-gccachecoherent' ]] +then +GCCACHECOHERENTFLAG=true elif [[ $1 = '-taskstate' ]] then JAVAOPTS="$JAVAOPTS -taskstate" @@ -448,6 +483,26 @@ elif [[ $1 = '-raw' ]] then RAWFLAG=true JAVAOPTS="$JAVAOPTS -raw" +elif [[ $1 = '-tilera_output_dir' ]] +then +TILERAOUTPUTDIR="$2" +shift +elif [[ $1 = '-tilera_page_size' ]] +then +TILERA_PAGE_SIZE="$2" +shift +elif [[ $1 = '-tilera_page_size_bits' ]] +then +TILERA_PAGE_SIZE_BITS="$2" +shift +elif [[ $1 = '-tilera_num_blocks' ]] +then +TILERA_NUM_BLOCKS="$2" +shift +elif [[ $1 = '-tilera_num_pages_per_block' ]] +then +TILERA_NUM_PAGES_PER_BLOCK="$2" +shift elif [[ $1 = '-tilera_bme' ]] then TILERAFLAG=true @@ -463,9 +518,6 @@ elif [[ $1 = '-tileraconfig' ]] then TILERACONFIG="$2" shift -elif [[ $1 = '-cacheflush' ]] -then -CACHEFLUSHFLAG=true elif [[ $1 = '-rawconfig' ]] then RAWCONFIG="$2" @@ -484,6 +536,16 @@ elif [[ $1 = '-multicoregc' ]] then MULTICOREGCFLAG=true JAVAOPTS="$JAVAOPTS -multicoregc" +elif [[ $1 = '-pmc' ]] +then +PMCFLAG=true +JAVAOPTS="$JAVAOPTS -pmc" +elif [[ $1 = '-perfcount' ]] +then +PERFCOUNT=true +elif [[ $1 = '-memperfcount' ]] +then +MEMPERFCOUNT=true elif [[ $1 = '-gcmem_local' ]] then GCMEMLOCALFLAG=true @@ -592,6 +654,7 @@ JAVAOPTS="$JAVAOPTS -minimize" elif [[ $1 = '-ooojava' ]] then MLP_ON=true +OOOJAVA=true JAVAOPTS="$JAVAOPTS -ooojava $2 $3" EXTRAOPTIONS="$EXTRAOPTIONS -DPRECISE_GC -lpthread -DMLP" shift @@ -601,6 +664,23 @@ elif [[ $1 = '-ooodebug-disable-task-mem-pool' ]] then EXTRAOPTIONS="$EXTRAOPTIONS -DOOO_DISABLE_TASKMEMPOOL" +elif [[ $1 = '-ssjava' ]] +then +SSJAVA=true +USE_SSJAVA_CLASSPATH=true +JAVAOPTS="$JAVAOPTS -ssjava" + +elif [[ $1 = '-ssjavadebug' ]] +then +JAVAOPTS="$JAVAOPTS -ssjavadebug" + +elif [[ $1 = '-ssjava-inject-error' ]] +then +USE_SSJAVA_CLASSPATH=true +JAVAOPTS="$JAVAOPTS -ssjava-inject-error $2 $3" +shift +shift + elif [[ $1 = '-mempool-detect-misuse' ]] then EXTRAOPTIONS="$EXTRAOPTIONS -DMEMPOOL_DETECT_MISUSE" @@ -610,6 +690,11 @@ then EXTRAOPTIONS="$EXTRAOPTIONS -DINITIALHEAPSIZE_MB=($2)" shift +elif [[ $1 = '-compiler-heapsize-mb' ]] +then +COMPILER_HEAP_SIZE="$2" +shift + elif [[ $1 = '-nostalltr' ]] then JAVAOPTS="$JAVAOPTS -nostalltr" @@ -749,6 +834,7 @@ fi shift done + BUILDDIR="$CURDIR/$tmpbuilddirectory" BAMBOORUNTIME=$ROBUSTROOT/Runtime/bamboo @@ -764,78 +850,122 @@ then JAVAOPTS="$JAVAOPTS -struct structfile" fi +if $TILERAFLAG +then +# for tilera code, generate multicorememsize.h +./generate_memsize.sh ${TILERA_PAGE_SIZE} ${TILERA_PAGE_SIZE_BITS} ${TILERA_NUM_BLOCKS} ${TILERA_NUM_PAGES_PER_BLOCK} ${BUILDDIR} +fi + + +######################### # Setup class path +######################### +if $OOOJAVA + then + # stuff for OoOJava to mask parts of the base + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/OoOJava" +fi + if $JNI -then -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/classpath/java/lang/ -classlibrary $ROBUSTROOT/classpath/java/io/ -classlibrary $ROBUSTROOT/classpath/java/lang/reflect/ -classlibrary $ROBUSTROOT/classpath/java/text/ -classlibrary $ROBUSTROOT/classpath/java/security/ -classlibrary $ROBUSTROOT/classpath/java/net/" + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/classpath/ -classlibrary $ROBUSTROOT/classpath/vm/reference/" elif $MGCINTELFLAG -then -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" + elif $MGCFLAG -then -#base multicore gc files -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" -elif $RECOVERFLAG -then -if $FASTCHECK -then -#fast transactions -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/FastCheck" + then + #base multicore gc files + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" + +elif $USE_SSJAVA_CLASSPATH + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/SSJava" + else -#base bristlecone files -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/Bristlecone" + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/" + + if $RECOVERFLAG + then + if $FASTCHECK + then + #fast transactions + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/FastCheck" + else + #base bristlecone files + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/Bristlecone" + fi + + elif $DSMFLAG + then + #dsm stuff + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaDSM" + + elif $STM + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaSTM" + + elif $THREADFLAG + then + #threading java stuff + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaThread" + + else + #base java stuff + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/Java" + fi fi -elif $DSMFLAG -then -#dsm stuff -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaDSM" -elif $STM -then -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaSTM" -elif $THREADFLAG -then -#threading java stuff -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/JavaThread -classlibrary $ROBUSTROOT/ClassLibrary/Java" -else -#base java stuff -JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/Java" + +# everyone gets this except ssjava! +if ! $USE_SSJAVA_CLASSPATH + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/" fi +######################### +# end classpath +######################### + + +echo "compiler running in JVM with heap size: ${COMPILER_HEAP_SIZE}MB" + # Build bristlecone/java sources if $MULTICOREFLAG -then -if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ --dir $BUILDDIR $JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ \ --classlibrary $ROBUSTROOT/ClassLibrary/gnu/ $SRCFILES -then exit $? -fi -else -#if ! ${ROBUSTROOT}/ourjava -Xms5m -Xmx100m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ -if $MGCINTELFLAG -then -if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main $JAVAOPTS -classlibrary \ -$ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/ -dir $BUILDDIR -precise \ -$SRCFILES -then exit $? -fi + then + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ + -dir $BUILDDIR $JAVAOPTS $SRCFILES + then exit $? + fi + else -if ! $NOJAVA -then -if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ -$ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/ -dir $BUILDDIR -precise \ -$JAVAOPTS $SRCFILES -then exit $? -fi -fi -fi -fi + if $MGCINTELFLAG + then + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main $JAVAOPTS \ + -dir $BUILDDIR -precise $SRCFILES + then exit $? + fi + + else + if ! $NOJAVA + then + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ + -dir $BUILDDIR -precise $JAVAOPTS $SRCFILES + then exit $? + fi + fi + fi +fi + +# after executing Main, if -justanalyze flag, just exit if $EXITAFTERANALYSIS then exit fi + + # Build all of the consistency specs if $CHECKFLAG # CHECKFLAG @@ -885,11 +1015,6 @@ rm ./* export RAWRGCCFLAGS="-DTASK -DMULTICORE -DRAW" -if $CACHEFLUSHFLAG -then # print path -RAWRGCCFLAGS="${RAWRGCCFLAGS} -DCACHEFLUSH" -fi - if $RAWPATHFLAG then # print path RAWRGCCFLAGS="${RAWRGCCFLAGS} -DRAWPATH" @@ -946,7 +1071,7 @@ make elif $TILERAFLAG then # TILERAFLAG -TILERADIR="$CURDIR/tilera" +TILERADIR="$CURDIR/${TILERAOUTPUTDIR}" if $TILERABMEFLAG then # TILERABMEFLAG TILERA_INDIR="BME" @@ -999,11 +1124,6 @@ then # TILERAZLINUXFLAG TILERACFLAGS="${TILERACFLAGS} -DTILERA_ZLINUX" fi -if $CACHEFLUSHFLAG -then # print path -TILERACFLAGS="${TILERACFLAGS} -DCACHEFLUSH" -fi - if $RAWPATHFLAG then # print path TILERACFLAGS="${TILERACFLAGS} -DRAWPATH" @@ -1049,6 +1169,21 @@ then #MULTICOREGC version TILERACFLAGS="${TILERACFLAGS} -DMULTICORE_GC -D${GCCORES}" fi +if $PMCFLAG +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DPMC_GC -D${GCCORES}" +fi + +if $PERFCOUNT +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DPERFCOUNT" +fi + +if $MEMPERFCOUNT +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DMEMPERFCOUNT" +fi + if $GCPROFILEFLAG then # GC_PROFILE version TILERACFLAGS="${TILERACFLAGS} -DGC_PROFILE" @@ -1144,7 +1279,15 @@ then # GC_CACHE_ADAPT version TILERACFLAGS="${TILERACFLAGS} -DGC_CACHE_SAMPLING" fi -if $MGCFLAG +if $GCCACHECOHERENTFLAG +then # gc cache coherent version +TILERACFLAGS="${TILERACFLAGS} -DGC_CACHE_COHERENT_ON" +fi + +if $PMCFLAG +then +cp $ROBUSTROOT/Tilera/Runtime/PMC/$MAKEFILE ./Makefile +elif $MGCFLAG then cp $ROBUSTROOT/Tilera/Runtime/MGC/$MAKEFILE ./Makefile else @@ -1183,20 +1326,9 @@ cp ../Runtime/ObjectHash.h ./ cp ../Runtime/Queue.h ./ cp ../Runtime/runtime.h ./ cp ../Runtime/SimpleHash.h ./ -cp $BAMBOORUNTIME/multicoretask.c ./ -cp $BAMBOORUNTIME/multicoreruntime.c ./ -cp $BAMBOORUNTIME/multicoremem.c ./ -cp $BAMBOORUNTIME/multicoregarbage.c ./ -cp $BAMBOORUNTIME/GCSharedHash.c ./ -cp $BAMBOORUNTIME/MGCHash.c ./ -cp $BAMBOORUNTIME/multicoreruntime.h ./ -cp $BAMBOORUNTIME/multicoremem.h ./ -cp $BAMBOORUNTIME/multicoregarbage.h ./ -cp $BAMBOORUNTIME/multicorecache.h ./ -cp $BAMBOORUNTIME/multicoregc.h ./ -cp $BAMBOORUNTIME/multicorehelper.h ./ -cp $BAMBOORUNTIME/GCSharedHash.h ./ -cp $BAMBOORUNTIME/MGCHash.h ./ +cp ../Runtime/objtypes.h ./ +cp $BAMBOORUNTIME/*.c ./ +cp $BAMBOORUNTIME/*.h ./ cp ../Tilera/Runtime/*.c ./ cp ../Tilera/Runtime/*.h ./ cp ../Tilera/Runtime/$TILERA_INDIR/*.c ./ @@ -1218,6 +1350,8 @@ cp ../Tilera/lib/* ./ cp ../$tmpbuilddirectory/*.c ./ cp ../$tmpbuilddirectory/*.h ./ +echo $TILERACFLAGS > ./tileracflags.txt + make else #!RAWFLAG && !TILERABMEFLAG && ! TILERAZLINUXFLAG