1 # Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 #
4 # This code is free software; you can redistribute it and/or modify it
5 # under the terms of the GNU General Public License version 2 only, as
6 # published by the Free Software Foundation.
7 #
8 # This code is distributed in the hope that it will be useful, but WITHOUT
9 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 # version 2 for more details (a copy is included in the LICENSE file that
12 # accompanied this code).
13 #
14 # You should have received a copy of the GNU General Public License version
15 # 2 along with this work; if not, write to the Free Software Foundation,
16 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 #
18 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 # or visit www.oracle.com if you need additional information or have any
20 # questions.
21
22 # Note: the specifics of the test is defined by files such as ../simple/run.sh
23
24 # run all tests
25 # bash run.sh $JAVA
26 # run a single test
27 # bash run.sh $JAVA 2
28 # clean up
29 # make clean
30
31 ONLYTEST=$1
32
33 TEST_NUM=0
34
35 function do_test () {
36 TEST_NUM=$(expr $TEST_NUM + 1)
37
38 echo ========================================
39 echo Test $TEST_NUM $1
40
41 shift
42 if test "$ONLYTEST" != "" -a "$ONLYTEST" != "$TEST_NUM"; then
43 echo "$@"
44 echo "SKIPPED"
45 return 0
46 else
47 local before_errfiles=$(ls hs_err* 2> /dev/null | sort)
48 echo "$@"
49 if eval "$@"; then
50 true
51 else
52 echo "FAILED; command line was:"
53 echo "$@";
54 exit 1
55 fi
56 local after_errfiles=$(ls hs_err* 2> /dev/null | sort)
57 if test "$before_errfiles" != "$after_errfiles"; then
58 echo "HotSpot crashed (check hs_err errfiles); command line was:"
59 echo "$@"
60 exit 1
61 fi
62 echo "PASSED $TEST_NUM"
63 if test "$ONLYTEST" = "$TEST_NUM"; then
64 echo "Exiting after test $TEST_NUM has passed. Further tests may have been skipped"
65 exit 0
66 fi
67 fi
68 }
69
70 do_test "(STEP 1 of 5) Dump classlist" \
71 $JAVA -Xshare:off -XX:DumpLoadedClassList=$APP.classlist $CMDLINE
72
73 if test "$JAR" != ""; then
74 DUMP_CP="-cp"
75 else
76 DUMP_CP=
77 fi
78
79 do_test "(STEP 2 of 5) Create Static $APP-static.jsa" \
80 $JAVA -Xshare:dump -XX:SharedArchiveFile=$APP-static.jsa -XX:SharedClassListFile=$APP.classlist $DUMP_CP $JAR \
81 -Xlog:cds=debug,cds+class=debug,cds+resolve=debug:file=$APP-static.dump.log::filesize=0 $DUMP_EXTRA_ARGS
82
83 if false; then
84 do_test "Run with $APP-static.jsa" \
85 $JAVA -XX:SharedArchiveFile=$APP-static.jsa $CMDLINE
86 fi
87
88 do_test "(STEP 3 of 5) Run with $APP-static.jsa and dump profile in $APP-dynamic.jsa (With Training Data Replay)" \
89 $JAVA -XX:SharedArchiveFile=$APP-static.jsa -XX:ArchiveClassesAtExit=$APP-dynamic.jsa -XX:+UnlockDiagnosticVMOptions -XX:+AOTRecordTraining \
90 -Xlog:cds=debug,cds+class=debug:file=$APP-dynamic.dump.log::filesize=0 \
91 $CMDLINE
92
93 do_test "(STEP 4 of 5) Run with $APP-dynamic.jsa and generate AOT code" \
94 $JAVA -XX:SharedArchiveFile=$APP-dynamic.jsa -XX:+UnlockDiagnosticVMOptions -XX:+AOTReplayTraining -XX:+StoreCachedCode \
95 -Xlog:aot+codecache*=warning:file=$APP-store-sc.log::filesize=0 \
96 -XX:CachedCodeFile=$APP-dynamic.jsa-sc -XX:CachedCodeMaxSize=100M $CMDLINE
97
98 do_test "(STEP 5 of 5) Final production run: with $APP-dynamic.jsa and load AOT code" \
99 $JAVA -XX:SharedArchiveFile=$APP-dynamic.jsa -XX:+UnlockDiagnosticVMOptions -XX:+AOTReplayTraining -XX:+LoadCachedCode \
100 -Xlog:aot+codecache*=warning:file=$APP-load-sc.log::filesize=0 \
101 -XX:CachedCodeFile=$APP-dynamic.jsa-sc $CMDLINE