1 #!/bin/bash
 2 
 3 # Run with e.g. ./run-helloworld.sh
 4 
 5 set -euo pipefail
 6 
 7 # Look around for release JDK image
 8 J_HP=
 9 if [ -d build/linux-x86_64-server-release/images/jdk/ ]; then
10   J_HP=build/linux-x86_64-server-release/images/jdk/bin/java
11 elif [ -d build/linux-aarch64-server-release/images/jdk/ ]; then
12   J_HP=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 OPTS="-XX:+UseShenandoahGC -Xmx8g -Xms8g -XX:+AlwaysPreTouch -XX:+UseTransparentHugePages -XX:-TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:ShenandoahGCMode=passive -XX:+UnlockExperimentalVMOptions"
24 
25 OPTS_ALL="$OPTS -XX:+ShenandoahLoadRefBarrier -XX:+ShenandoahSATBBarrier -XX:+ShenandoahCASBarrier -XX:+ShenandoahCloneBarrier"
26 
27 echo
28 echo ------
29 echo Hello World footprint:
30 
31 cat > Hello.java <<EOF
32 public class Hello {
33   public static void main(String... args) {
34      System.out.println("Hello World");
35   }
36 }
37 EOF
38 
39 run_with() {
40   P=$*
41   for I in `seq 1 3`; do
42     echo -n " run $I: "
43     $P -Xcomp -XX:+CITime Hello.java 2>&1 | grep "Tier4"
44   done
45 }
46 
47 echo
48 echo ------
49 echo $*
50 
51 if [ "x" != "x$J_ML" ]; then
52   echo
53   echo "Mainline: Concurrent"
54   run_with $J_ML $OPTS
55 
56   echo
57   echo "Mainline: Passive, No barriers"
58   run_with $J_ML $OPTS_PASSIVE_NONE
59 
60   echo
61   echo "Mainline: Passive, All barriers"
62   run_with $J_ML $OPTS_PASSIVE_ALL
63 fi
64 
65 echo
66 echo "HP: Concurrent"
67 run_with $J_HP $OPTS
68 
69 echo
70 echo "HP: Passive, No barriers"
71 run_with $J_HP $OPTS_PASSIVE_NONE
72 
73 echo
74 echo "HP: Passive, All barriers"
75 run_with $J_HP $OPTS_PASSIVE_ALL