+
+function bench_nitc_vc_nitg-e()
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+ prepare_res "$name-nitc.dat" "nitc" "nitc"
+ run_compiler "nitc" ./nitc_3 -O
+ prepare_res "$name-nitc-malloc.dat" "nitc-malloc" "nitc with malloc"
+ NIT_GC_OPTION="malloc" run_compiler "nitc" ./nitc_3 -O
+ prepare_res "$name-nitc-bohem.dat" "nitc-boehm" "nitc with boehm"
+ NIT_GC_OPTION="boehm" run_compiler "nitc" ./nitc_3 -O
+ prepare_res "$name-nitg-e-nockeck-malloc.dat" "nitg-e-nc-malloc" "nitg with --erasure --no-check-autocast --no-check-erasure-cast and malloc"
+ run_compiler "nitg-e-nc-malloc" ./nitg --erasure --no-check-autocast --no-check-erasure-cast --make-flags "CFLAGS=\"-O2 -DNOBOEHM\""
+ prepare_res "$name-nitg-e-nockeck.dat" "nitg-e-nc" "nitg with --erasure --no-check-autocast --no-check-erasure-cast"
+ run_compiler "nitg-e-nc" ./nitg --erasure --no-check-autocast --no-check-erasure-cast
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
+ run_compiler "nitg-e" ./nitg --erasure
+ plot "$name.gnu"
+}
+bench_nitc_vc_nitg-e
+
+function bench_nitg-e_gc()
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+ prepare_res "$name-nitg-e-malloc.dat" "nitg-e-malloc" "nitg with --erasure and malloc"
+ run_compiler "nitg-e-malloc" ./nitg --erasure --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ prepare_res "$name-nitg-e-noatomic.dat" "nitg-e-noatomic" "nitg with --erasure and no atomic"
+ run_compiler "nitg-e-noatomic" ./nitg --erasure --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM_ATOMIC\""
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
+ run_compiler "nitg-e" ./nitg --erasure
+ plot "$name.gnu"
+}
+bench_nitg-e_gc
+
+function bench_cc_nitg-e()
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+ for o in "gcc0:CC=\"ccache gcc\" CFLAGS=-O0" "cl0:CC=\"ccache clang\" CFLAGS=-O0" "gccs:CC=\"ccache gcc\" CFLAGS=-Os" "cls:CC=\"ccache clang\" CFLAGS=-Os" "gcc2:CC=\"ccache gcc\" CFLAGS=-O2" "cl2:CC=\"ccache clang\" CFLAGS=-O2" "gcc3:CC=\"ccache gcc\" CFLAGS=-O3" "cl3:CC=\"ccache clang\" CFLAGS=-O3"; do
+ f=`echo "$o" | cut -f1 -d:`
+ o=`echo "$o" | cut -f2 -d:`
+ prepare_res "$name-nitg-e-$f.dat" "nitg-e-$f" "nitg with --erasure --make-flags $o"
+ run_compiler "nitg-e-$f" ./nitg --erasure --make-flags "$o"
+ done
+ plot "$name.gnu"
+}
+bench_cc_nitg-e
+
+function bench_policy()
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+ prepare_res "$name-nitg-s.dat" "nitg-s" "nitg with --separate"
+ run_compiler "nitg-s" ./nitg --separate
+ prepare_res "$name-nitg-su" "nitg-su" "nitg with --separate --no-check-covariance"
+ run_compiler "nitg-su" ./nitg --separate --no-check-covariance
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
+ run_compiler "nitg-e" ./nitg --erasure
+ prepare_res "$name-nitg-eu" "nitg-eu" "nitg with --erasure --no-check-covariance --no-check-erasure-cast"
+ run_compiler "nitg-eu" ./nitg --erasure --no-check-covariance --no-check-erasure-cast
+ plot "$name.gnu"
+}
+bench_policy
+
+function bench_compilation_time
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+ prepare_res "$name-nitc.dat" "nitc" "nitc"
+ for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
+ bench_command `basename "$i" .nit` "" ./nitc_3 -O "$i" --no-cc
+ done
+ prepare_res "$name-nitg.dat" "nitg" "nitg"
+ for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
+ bench_command `basename "$i" .nit` "" ./nitg "$i" --no-cc
+ done
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg --erasure"
+ for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
+ bench_command `basename "$i" .nit` "" ./nitg --erasure "$i" --no-cc
+ done
+ plot "$name.gnu"
+}
+bench_compilation_time
+
+function bench_typetest_languages()
+{
+ name="$FUNCNAME"
+ skip_test "$name" && return
+
+ t=t
+ s=20
+ seq="w2_h2 w50_h2 w2_h25 w50_h25"
+ for b in $seq; do
+ run_command ./nitg benchs/gen.nit
+ run_command ./gen.bin "${t}_$b" "$b"
+ done
+
+ prepare_res "$name-g++.dat" "g++" "g++"
+ for b in $seq; do
+ run_command g++ "${t}_$b.cpp" -O2 -o "${t}_$b.g++.bin"
+ bench_command "$b" "" "./${t}_$b.g++.bin" $s
+ done
+
+ prepare_res "$name-clang++.dat" "clang++" "clang++"
+ for b in $seq; do
+ run_command clang++ "${t}_$b.cpp" -O2 -o "${t}_$b.clang++.bin"
+ bench_command "$b" "" "./${t}_$b.clang++.bin" $s
+ done
+
+ prepare_res "$name-java.dat" "java" "java"
+ for b in $seq; do
+ run_command javac ${t}_$b.java
+ bench_command "$b" "" java "${t}_$b" $s
+ done
+
+ prepare_res "$name-es.dat" "es" "es"
+ for b in $seq; do
+ run_command ec -clean -finalize ${t}_$b/app${t}_$b.e
+ chmod +x app${t}_$b
+ mv app${t}_$b ${t}_$b.es.bin
+ bench_command "$b" "" "./${t}_$b.es.bin" $s
+ done
+
+ prepare_res "$name-se.dat" "se" "se"
+ for b in $seq; do
+ run_command se compile -no_check app${t}_${b}_se.e -loadpath ${t}_${b}_se -o ${t}_$b.se.bin
+ bench_command "$b" "" "./${t}_$b.se.bin" $s
+ done
+
+ #too slow
+ #prepare_res "$name-nitg.dat" "nitg" "nitg"
+ #for b in $seq; do
+ # run_command ./nitg "${t}_$b.nit" -o "${t}_$b.nitg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ # bench_command "$b" "" "./${t}_$b.nitg.bin" $s
+ #done
+
+ prepare_res "$name-nitg-s.dat" "nitg-s" "nitg-s"
+ for b in $seq; do
+ run_command ./nitg ${t}_$b.nit --separate -o "${t}_$b.nitg-s.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "./${t}_$b.nitg-s.bin" $s
+ done
+
+ prepare_res "$name-nitg-su.dat" "nitg-su" "nitg-su"
+ for b in $seq; do
+ run_command ./nitg ${t}_$b.nit --separate --no-check-covariance -o "${t}_$b.nitg-su.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "./${t}_$b.nitg-su.bin" $s
+ done
+
+
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg-e"
+ for b in $seq; do
+ run_command ./nitg ${t}_$b.nit --erasure -o "${t}_$b.nitg-e.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "./${t}_$b.nitg-e.bin" $s
+ done
+
+ prepare_res "$name-nitg-eu.dat" "nitg-eu" "nitg-eu"
+ for b in $seq; do
+ run_command ./nitg ${t}_$b.nit --erasure --no-check-covariance --no-check-erasure-cast -o "${t}_$b.nitg-eu.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "./${t}_$b.nitg-eu.bin" $s
+ done
+
+ plot "$name.gnu"
+}
+bench_typetest_languages
+
+if test -n "$died"; then
+ echo "Some commands failed"
+ exit 1
+fi
+exit 0