Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision c8c0c7c5291339c09222f6f42efd7ecbcf3e63cb)
+++ benchmark/Makefile.am	(revision 90cb6f7f9c0fbf0f5d38f8c7fb844920357f291f)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jul 29 18:02:19 2019
-## Update Count     : 54
+## Last Modified On : Tue Jan  7 15:37:42 2020
+## Update Count     : 70
 ###############################################################################
 
@@ -28,7 +28,8 @@
 BENCH_V_CFA = $(__bench_v_CFA_$(__quiet))
 BENCH_V_CXX = $(__bench_v_CXX_$(__quiet))
+BENCH_V_UPP = $(__bench_v_UPP_$(__quiet))
 BENCH_V_GOC = $(__bench_v_GOC_$(__quiet))
+BENCH_V_RUSTC = $(__bench_v_RUSTC_$(__quiet))
 BENCH_V_JAVAC = $(__bench_v_JAVAC_$(__quiet))
-BENCH_V_UPP = $(__bench_v_UPP_$(__quiet))
 
 __quiet = verbose
@@ -36,13 +37,15 @@
 __bench_v_CFA_quiet = @
 __bench_v_CXX_quiet = @
+__bench_v_UPP_quiet = @
 __bench_v_GOC_quiet = @
+__bench_v_RUSTC_quiet = @
 __bench_v_JAVAC_quiet = @
-__bench_v_UPP_quiet = @
 __bench_v_CC_verbose = $(AM_V_CC)
 __bench_v_CFA_verbose = $(AM_V_CFA)
 __bench_v_CXX_verbose = $(AM_V_CXX)
+__bench_v_UPP_verbose = $(AM_V_UPP)
 __bench_v_GOC_verbose = $(AM_V_GOC)
+__bench_v_RUSTC_verbose = $(AM_V_RUSTC)
 __bench_v_JAVAC_verbose = $(AM_V_JAVAC)
-__bench_v_UPP_verbose = $(AM_V_UPP)
 
 
@@ -68,8 +71,9 @@
 
 .NOTPARALLEL:
-.PHONY: compile.csv ctxswitch.csv mutex.csv signal.csv
-
-## =========================================================================================================
-all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
+.PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv signal.csv
+
+## =========================================================================================================
+
+all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
 
 %.run : %$(EXEEXT) ${REPEAT}
@@ -103,4 +107,6 @@
 	@-+make compile.diff.csv
 @DOendif@
+	@+make basic.csv
+	@-+make basic.diff.csv
 	@+make ctxswitch.csv
 	@-+make ctxswitch.diff.csv
@@ -113,4 +119,6 @@
 	-cat compile.diff.csv
 @DOendif@
+	cat basic.csv
+	-cat basic.diff.csv
 	cat ctxswitch.csv
 	-cat ctxswitch.diff.csv
@@ -132,4 +140,11 @@
 	@$(srcdir)/fixcsv.sh $@
 
+basic.csv:
+	@echo "generator,coroutine,thread" > $@
+	@+make basic-cfa_generator.runquiet >> $@ && echo -n ',' >> $@
+	@+make basic-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
+	@+make basic-cfa_thread.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
 ctxswitch.csv:
 	@echo "generator,coroutine,thread" > $@
@@ -157,28 +172,60 @@
 	@$(srcdir)/baselines/calc.py $(srcdir)/baselines/$(arch)/$(<) $(<) > $@
 
-
-## =========================================================================================================
-loop$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
-
-function$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
-
-fetch_add$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
-
-ttst_lock$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/ttst_lock.c
-
-tls-fetch_add$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/tls-fetch_add.c
-
-## =========================================================================================================
-CTXSWITCH_DEPEND  =                 \
-	loop.run				\
-	function.run			\
-	fetch_add.run			\
-	ttst_lock.run			\
-	tls-fetch_add.run			\
+## =========================================================================================================
+
+BASIC_DEPEND  =				\
+	basic-loop.run			\
+	basic-function.run			\
+	basic-fetch_add.run			\
+	basic-ttst_lock.run			\
+	basic-tls-fetch_add.run
+
+basic-loop$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/loop.c
+
+basic-function$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/function.c
+
+basic-fetch_add$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/fetch_add.c
+
+basic-ttst_lock$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/ttst_lock.c
+
+basic-tls-fetch_add$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/tls_fetch_add.c
+
+basic$(EXEEXT): $(BASIC_DEPEND)
+
+basic-loop.run : basic-loop$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 10000000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+basic-function.run : basic-function$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 5000000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+basic-%.run : basic-%$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 500000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+## =========================================================================================================
+
+CTXSWITCH_DEPEND  =			\
 	ctxswitch-pthread.run		\
 	ctxswitch-cfa_generator.run	\
@@ -189,12 +236,12 @@
 	ctxswitch-upp_thread.run	\
 	ctxswitch-goroutine.run		\
+	ctxswitch-rust_thread.run	\
+	ctxswitch-nodejs_thread.run	\
 	ctxswitch-java_thread.run
 
-
 if WITH_LIBFIBRE
-CTXSWITCH_DEPEND  +=           \
-	ctxswitch-kos_fibre.run	 \
+CTXSWITCH_DEPEND  +=			\
+	ctxswitch-kos_fibre.run		\
 	ctxswitch-kos_fibre2.run
-
 
 ctxswitch-kos_fibre$(EXEEXT):
@@ -208,26 +255,29 @@
 
 ctxswitch-pthread$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/ctxswitch/pthreads.c
 
 ctxswitch-cfa_generator$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_gen.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_gen.cfa
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_cor.cfa
 
 ctxswitch-cfa_thread$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd.cfa
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd2.cfa
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_cor.cc
 
 ctxswitch-upp_thread$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_thrd.cc
 
 ctxswitch-goroutine$(EXEEXT):
 	$(BENCH_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go
+
+ctxswitch-rust_thread$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/ctxswitch/rust_thrd.rs
 
 ctxswitch-java_thread$(EXEEXT):
@@ -237,18 +287,36 @@
 	@chmod a+x a.out
 
-## =========================================================================================================
-mutex$(EXEEXT) :\
-	loop.run			\
-	function.run		\
-	fetch_add.run		\
-	mutex-pthread_lock.run	\
+ctxswitch-nodejs.run : ctxswitch-nodejs$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} node node_cor.js 50000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+ctxswitch-%.run : ctxswitch-%$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 50000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+## =========================================================================================================
+
+mutex$(EXEEXT) :		\
+	mutex-pthread.run	\
 	mutex-upp.run		\
 	mutex-cfa1.run		\
 	mutex-cfa2.run		\
 	mutex-cfa4.run		\
-	mutex-java_thread.run
-
-mutex-pthread_lock$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
+	mutex-go.run		\
+	mutex-rust.run		\
+	mutex-java.run
+
+mutex-pthread$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE)     -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
 
 mutex-upp$(EXEEXT):
@@ -256,13 +324,19 @@
 
 mutex-cfa1$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa1.cfa
 
 mutex-cfa2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa2.cfa
 
 mutex-cfa4$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
-
-mutex-java_thread$(EXEEXT):
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa4.cfa
+
+mutex-go$(EXEEXT):
+	$(BENCH_V_GOC)go build -o a.out $(srcdir)/mutex/goroutine.go
+
+mutex-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/mutex/rust.rs
+
+mutex-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -271,28 +345,33 @@
 
 ## =========================================================================================================
-signal$(EXEEXT) :\
-	signal-pthread_cond.run \
+
+signal$(EXEEXT) :		\
+	signal-pthread.run	\
 	signal-upp.run		\
 	signal-cfa1.run		\
 	signal-cfa2.run		\
 	signal-cfa4.run		\
-	signal-java_thread.run
-
-signal-pthread_cond$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
+	signal-rust.run		\
+	signal-java.run
+
+signal-pthread$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE)     -DBENCH_N=5000000  $(srcdir)/schedint/pthreads.c
 
 signal-upp$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/upp.cc
 
 signal-cfa1$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa1.cfa
 
 signal-cfa2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa2.cfa
 
 signal-cfa4$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
-
-signal-java_thread$(EXEEXT):
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa4.cfa
+
+signal-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
+
+signal-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -300,10 +379,10 @@
 	@chmod a+x a.out
 
-
-## =========================================================================================================
-waitfor$(EXEEXT) :\
+## =========================================================================================================
+
+waitfor$(EXEEXT) :		\
 	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
+	waitfor-cfa1.run	\
+	waitfor-cfa2.run	\
 	waitfor-cfa4.run
 
@@ -321,5 +400,6 @@
 
 ## =========================================================================================================
-creation$(EXEEXT) :\
+
+creation$(EXEEXT) :				\
 	creation-pthread.run			\
 	creation-cfa_coroutine.run		\
@@ -329,5 +409,6 @@
 	creation-upp_thread.run			\
 	creation-goroutine.run			\
-	creation-java_thread.run
+	creation-rust.run			\
+	creation-java.run
 
 creation-cfa_coroutine$(EXEEXT):
@@ -347,10 +428,13 @@
 
 creation-pthread$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
+	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=250000 $(srcdir)/creation/pthreads.c
 
 creation-goroutine$(EXEEXT):
 	$(BENCH_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go
 
-creation-java_thread$(EXEEXT):
+creation-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs
+
+creation-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -360,5 +444,5 @@
 ## =========================================================================================================
 
-compile$(EXEEXT) :\
+compile$(EXEEXT) :		\
 	compile-array.make	\
 	compile-attributes.make	\
@@ -370,5 +454,4 @@
 	compile-typeof.make
 
-
 testdir = $(top_srcdir)/tests
 
Index: benchmark/Makefile.in
===================================================================
--- benchmark/Makefile.in	(revision c8c0c7c5291339c09222f6f42efd7ecbcf3e63cb)
+++ benchmark/Makefile.in	(revision 90cb6f7f9c0fbf0f5d38f8c7fb844920357f291f)
@@ -93,5 +93,5 @@
 EXTRA_PROGRAMS = dummy$(EXEEXT)
 @WITH_LIBFIBRE_TRUE@am__append_1 = \
-@WITH_LIBFIBRE_TRUE@	ctxswitch-kos_fibre.run	 \
+@WITH_LIBFIBRE_TRUE@	ctxswitch-kos_fibre.run		\
 @WITH_LIBFIBRE_TRUE@	ctxswitch-kos_fibre2.run
 
@@ -380,20 +380,23 @@
 BENCH_V_CFA = $(__bench_v_CFA_$(__quiet))
 BENCH_V_CXX = $(__bench_v_CXX_$(__quiet))
+BENCH_V_UPP = $(__bench_v_UPP_$(__quiet))
 BENCH_V_GOC = $(__bench_v_GOC_$(__quiet))
+BENCH_V_RUSTC = $(__bench_v_RUSTC_$(__quiet))
 BENCH_V_JAVAC = $(__bench_v_JAVAC_$(__quiet))
-BENCH_V_UPP = $(__bench_v_UPP_$(__quiet))
 __quiet = verbose
 __bench_v_CC_quiet = @
 __bench_v_CFA_quiet = @
 __bench_v_CXX_quiet = @
+__bench_v_UPP_quiet = @
 __bench_v_GOC_quiet = @
+__bench_v_RUSTC_quiet = @
 __bench_v_JAVAC_quiet = @
-__bench_v_UPP_quiet = @
 __bench_v_CC_verbose = $(AM_V_CC)
 __bench_v_CFA_verbose = $(AM_V_CFA)
 __bench_v_CXX_verbose = $(AM_V_CXX)
+__bench_v_UPP_verbose = $(AM_V_UPP)
 __bench_v_GOC_verbose = $(AM_V_GOC)
+__bench_v_RUSTC_verbose = $(AM_V_RUSTC)
 __bench_v_JAVAC_verbose = $(AM_V_JAVAC)
-__bench_v_UPP_verbose = $(AM_V_UPP)
 TOOLSDIR = ${abs_top_builddir}/tools/
 REPEAT = ${abs_top_builddir}/tools/repeat
@@ -407,11 +410,17 @@
 dummy_SOURCES = dummyC.c dummyCXX.cpp
 FIX_NEW_LINES = cat $@ | tr "\n" "\t" | sed -r 's/\t,/,/' | tr "\t" "\n" > $@
-CTXSWITCH_DEPEND = loop.run function.run fetch_add.run ttst_lock.run \
-	tls-fetch_add.run ctxswitch-pthread.run \
-	ctxswitch-cfa_generator.run ctxswitch-cfa_coroutine.run \
-	ctxswitch-cfa_thread.run ctxswitch-cfa_thread2.run \
-	ctxswitch-upp_coroutine.run ctxswitch-upp_thread.run \
-	ctxswitch-goroutine.run ctxswitch-java_thread.run \
-	$(am__append_1)
+BASIC_DEPEND = \
+	basic-loop.run			\
+	basic-function.run			\
+	basic-fetch_add.run			\
+	basic-ttst_lock.run			\
+	basic-tls-fetch_add.run
+
+CTXSWITCH_DEPEND = ctxswitch-pthread.run ctxswitch-cfa_generator.run \
+	ctxswitch-cfa_coroutine.run ctxswitch-cfa_thread.run \
+	ctxswitch-cfa_thread2.run ctxswitch-upp_coroutine.run \
+	ctxswitch-upp_thread.run ctxswitch-goroutine.run \
+	ctxswitch-rust_thread.run ctxswitch-nodejs_thread.run \
+	ctxswitch-java_thread.run $(am__append_1)
 testdir = $(top_srcdir)/tests
 all: all-am
@@ -738,7 +747,7 @@
 
 .NOTPARALLEL:
-.PHONY: compile.csv ctxswitch.csv mutex.csv signal.csv
-
-all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
+.PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv signal.csv
+
+all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
 
 %.run : %$(EXEEXT) ${REPEAT}
@@ -768,4 +777,6 @@
 	@-+make compile.diff.csv
 @DOendif@
+	@+make basic.csv
+	@-+make basic.diff.csv
 	@+make ctxswitch.csv
 	@-+make ctxswitch.diff.csv
@@ -778,4 +789,6 @@
 	-cat compile.diff.csv
 @DOendif@
+	cat basic.csv
+	-cat basic.diff.csv
 	cat ctxswitch.csv
 	-cat ctxswitch.diff.csv
@@ -797,4 +810,11 @@
 	@$(srcdir)/fixcsv.sh $@
 
+basic.csv:
+	@echo "generator,coroutine,thread" > $@
+	@+make basic-cfa_generator.runquiet >> $@ && echo -n ',' >> $@
+	@+make basic-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@
+	@+make basic-cfa_thread.runquiet >> $@
+	@$(srcdir)/fixcsv.sh $@
+
 ctxswitch.csv:
 	@echo "generator,coroutine,thread" > $@
@@ -822,18 +842,47 @@
 	@$(srcdir)/baselines/calc.py $(srcdir)/baselines/$(arch)/$(<) $(<) > $@
 
-loop$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c
-
-function$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c
-
-fetch_add$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/fetch_add.c
-
-ttst_lock$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/ttst_lock.c
-
-tls-fetch_add$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000  $(srcdir)/tls-fetch_add.c
+basic-loop$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/loop.c
+
+basic-function$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/function.c
+
+basic-fetch_add$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/fetch_add.c
+
+basic-ttst_lock$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/ttst_lock.c
+
+basic-tls-fetch_add$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/basic/tls_fetch_add.c
+
+basic$(EXEEXT): $(BASIC_DEPEND)
+
+basic-loop.run : basic-loop$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 10000000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+basic-function.run : basic-function$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 5000000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+basic-%.run : basic-%$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 500000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
 
 @WITH_LIBFIBRE_TRUE@ctxswitch-kos_fibre$(EXEEXT):
@@ -846,26 +895,29 @@
 
 ctxswitch-pthread$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
+	$(BENCH_V_CC)$(COMPILE) $(srcdir)/ctxswitch/pthreads.c
 
 ctxswitch-cfa_generator$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_gen.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_gen.cfa
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_cor.cfa
 
 ctxswitch-cfa_thread$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd.cfa
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/ctxswitch/cfa_thrd2.cfa
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_cor.cc
 
 ctxswitch-upp_thread$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/ctxswitch/upp_thrd.cc
 
 ctxswitch-goroutine$(EXEEXT):
 	$(BENCH_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go
+
+ctxswitch-rust_thread$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/ctxswitch/rust_thrd.rs
 
 ctxswitch-java_thread$(EXEEXT):
@@ -875,17 +927,34 @@
 	@chmod a+x a.out
 
-mutex$(EXEEXT) :\
-	loop.run			\
-	function.run		\
-	fetch_add.run		\
-	mutex-pthread_lock.run	\
+ctxswitch-nodejs.run : ctxswitch-nodejs$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} node node_cor.js 50000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+ctxswitch-%.run : ctxswitch-%$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out 50000000 | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log *.class
+
+mutex$(EXEEXT) :		\
+	mutex-pthread.run	\
 	mutex-upp.run		\
 	mutex-cfa1.run		\
 	mutex-cfa2.run		\
 	mutex-cfa4.run		\
-	mutex-java_thread.run
-
-mutex-pthread_lock$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
+	mutex-go.run		\
+	mutex-rust.run		\
+	mutex-java.run
+
+mutex-pthread$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE)     -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
 
 mutex-upp$(EXEEXT):
@@ -893,13 +962,19 @@
 
 mutex-cfa1$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa1.cfa
 
 mutex-cfa2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa2.cfa
 
 mutex-cfa4$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
-
-mutex-java_thread$(EXEEXT):
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/cfa4.cfa
+
+mutex-go$(EXEEXT):
+	$(BENCH_V_GOC)go build -o a.out $(srcdir)/mutex/goroutine.go
+
+mutex-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/mutex/rust.rs
+
+mutex-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -907,28 +982,32 @@
 	@chmod a+x a.out
 
-signal$(EXEEXT) :\
-	signal-pthread_cond.run \
+signal$(EXEEXT) :		\
+	signal-pthread.run	\
 	signal-upp.run		\
 	signal-cfa1.run		\
 	signal-cfa2.run		\
 	signal-cfa4.run		\
-	signal-java_thread.run
-
-signal-pthread_cond$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
+	signal-rust.run		\
+	signal-java.run
+
+signal-pthread$(EXEEXT):
+	$(BENCH_V_CC)$(COMPILE)     -DBENCH_N=5000000  $(srcdir)/schedint/pthreads.c
 
 signal-upp$(EXEEXT):
-	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
+	$(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/upp.cc
 
 signal-cfa1$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa1.cfa
 
 signal-cfa2$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa2.cfa
 
 signal-cfa4$(EXEEXT):
-	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
-
-signal-java_thread$(EXEEXT):
+	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/schedint/cfa4.cfa
+
+signal-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
+
+signal-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -936,8 +1015,8 @@
 	@chmod a+x a.out
 
-waitfor$(EXEEXT) :\
+waitfor$(EXEEXT) :		\
 	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
+	waitfor-cfa1.run	\
+	waitfor-cfa2.run	\
 	waitfor-cfa4.run
 
@@ -954,5 +1033,5 @@
 	$(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
 
-creation$(EXEEXT) :\
+creation$(EXEEXT) :				\
 	creation-pthread.run			\
 	creation-cfa_coroutine.run		\
@@ -962,5 +1041,6 @@
 	creation-upp_thread.run			\
 	creation-goroutine.run			\
-	creation-java_thread.run
+	creation-rust.run			\
+	creation-java.run
 
 creation-cfa_coroutine$(EXEEXT):
@@ -980,10 +1060,13 @@
 
 creation-pthread$(EXEEXT):
-	$(BENCH_V_CC)$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
+	$(BENCH_V_CC)$(COMPILE) -DBENCH_N=250000 $(srcdir)/creation/pthreads.c
 
 creation-goroutine$(EXEEXT):
 	$(BENCH_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go
 
-creation-java_thread$(EXEEXT):
+creation-rust$(EXEEXT):
+	$(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs
+
+creation-java$(EXEEXT):
 	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
 	@echo "#!/bin/sh" > a.out
@@ -991,5 +1074,5 @@
 	@chmod a+x a.out
 
-compile$(EXEEXT) :\
+compile$(EXEEXT) :		\
 	compile-array.make	\
 	compile-attributes.make	\
