Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision a5d1fe752ccee8b0ce0b7ff75dff6c7e0de50ca9)
+++ benchmark/Makefile.am	(revision ce9f9d49a2f8e613169e8a0385563024beea05b3)
@@ -372,5 +372,12 @@
 	chmod a+x a.out
 
+## =========================================================================================================
+
 mutexStmt$(EXEEXT) :		    \
+	mutexStmt-cpp1.run			\
+	mutexStmt-cpp2.run			\
+	mutexStmt-cpp4.run			\
+	mutexStmt-cpp8.run			\
+	mutexStmt-java.run			\
 	mutexStmt-lock1.run		    \
 	mutexStmt-lock2.run		    \
@@ -397,4 +404,16 @@
 	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/lock8.cfa
 
+mutexStmt-cpp1$(EXEEXT):
+	$(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp1.cc
+
+mutexStmt-cpp2$(EXEEXT):
+	$(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp2.cc
+
+mutexStmt-cpp4$(EXEEXT):
+	$(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp4.cc
+
+mutexStmt-cpp8$(EXEEXT):
+	$(BENCH_V_CXX)$(CXXCOMPILE) -std=c++17 $(srcdir)/mutexStmt/cpp8.cc
+
 mutexStmt-monitor1$(EXEEXT):
 	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/monitor1.cfa
@@ -417,4 +436,10 @@
 mutexStmt-no-stmt-lock8$(EXEEXT):
 	$(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/mutexStmt/no_stmt_lock8.cfa
+
+mutexStmt-java$(EXEEXT):
+	$(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutexStmt/JavaThread.java
+	echo "#!/bin/sh" > a.out
+	echo "java JavaThread \"$$""@\"" >> a.out
+	chmod a+x a.out
 
 ## =========================================================================================================
Index: benchmark/bench.h
===================================================================
--- benchmark/bench.h	(revision a5d1fe752ccee8b0ce0b7ff75dff6c7e0de50ca9)
+++ benchmark/bench.h	(revision ce9f9d49a2f8e613169e8a0385563024beea05b3)
@@ -21,4 +21,21 @@
 	return 1000000000LL * ts.tv_sec + ts.tv_nsec;
 } // bench_time
+
+
+#if defined(__cforall)
+struct test_spinlock {
+	volatile bool lock;
+};
+
+static inline void lock( test_spinlock & this ) {
+	for ( ;; ) {
+		if ( (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0) ) break;
+	}
+}
+
+static inline void unlock( test_spinlock & this ) {
+	__atomic_clear( &this.lock, __ATOMIC_RELEASE );
+}
+#endif
 
 #ifndef BENCH_N
