1 #!/bin/bash
 2 
 3 # Run with e.g. ./run-dacapo.sh fop -n 400
 4 
 5 set -euo pipefail
 6 
 7 # Look around for release JDK image
 8 J_LBE=
 9 if [ -d build/linux-x86_64-server-release/images/jdk/ ]; then
10   J_LBE=build/linux-x86_64-server-release/images/jdk/bin/java
11 elif [ -d build/linux-aarch64-server-release/images/jdk/ ]; then
12   J_LBE=build/linux-aarch64-server-release/images/jdk/bin/java
13 else
14   echo "Cannot find JDK"
15   exit 1
16 fi
17 
18 J_ML=
19 if [ -d jdk-mainline/ ]; then
20   J_ML=jdk-mainline/bin/java
21 fi
22 
23 DACAPO=dacapo
24 if [ ! -d $DACAPO ]; then
25   echo "Download Dacapo to $DACAPO"
26   exit 1
27 fi
28 W="-jar $DACAPO/dacapo-23.11-MR2-chopin.jar $*"
29 
30 
31 OPTS="-XX:+UseShenandoahGC -Xmx8g -Xms8g -XX:+AlwaysPreTouch -XX:+UseTransparentHugePages -XX:+UnlockDiagnosticVMOptions -XX:ShenandoahGCMode=passive -XX:+UnlockExperimentalVMOptions"
32 
33 OPTS_ALL="$OPTS -XX:+ShenandoahLoadRefBarrier -XX:+ShenandoahSATBBarrier -XX:+ShenandoahCASBarrier -XX:+ShenandoahCloneBarrier"
34 
35 run_with() {
36 	P=$*
37 	for I in `seq 1 3`; do
38 		echo -n " run $I: "
39 		$P $W 2>&1 | awk '/completed/ { printf "%s ", $(NF-2)} END { print "" }'
40 	done
41 	echo -n " stats: "
42 	$P -XX:+CITime $W 2>&1 | grep Tier4
43 }
44 
45 echo
46 echo ------
47 echo $*
48 
49 if [ "x" != "x$J_ML" ]; then
50   echo
51   echo "Mainline: No barriers"
52   run_with $J_ML $OPTS
53 
54   echo
55   echo "Mainline: All barriers"
56   run_with $J_ML $OPTS_ALL
57 fi
58 
59 echo
60 echo "LBE: No barriers"
61 run_with $J_LBE $OPTS
62 
63 echo
64 echo "LBE: All barriers"
65 run_with $J_LBE $OPTS_ALL
66 
67 echo
68 echo "LBE: All barriers, nop GC state checks"
69 run_with $J_LBE $OPTS_ALL -XX:+ShenandoahNopGCState
70 
71 echo
72 echo "LBE: All barriers, hollow barrier stubs"
73 run_with $J_LBE $OPTS_ALL -XX:+ShenandoahHollowBarrierStubs
74 
75 echo
76 echo "LBE: All barriers, hollow barrier stubs and nop GC state checks"
77 run_with $J_LBE $OPTS_ALL -XX:+ShenandoahNopGCState -XX:+ShenandoahHollowBarrierStubs
78 
79 echo
80 echo "LBE: All barriers, skip barrier stubs altogether"
81 run_with $J_LBE $OPTS_ALL -XX:+ShenandoahSkipBarrierStubs
82