Mercurial > hg > truffle
annotate test/compiler/ciReplay/common.sh @ 20218:828056cf311f
8040792: G1: Memory usage calculation uses sizeof(this) instead of sizeof(classname)
Summary: A few locations in the code use sizeof(this) which returns the size of the pointer instead of sizeof(classname) which returns the size of the sum of its members. This change fixes these errors and adds a few tests.
Reviewed-by: mgerdin, brutisso
author | tschatzl |
---|---|
date | Mon, 21 Jul 2014 09:40:19 +0200 |
parents | d64ae45dbce9 |
children | 52b4284cb496 c83362e7de6f |
rev | line source |
---|---|
10197 | 1 #!/bin/sh |
2 # | |
3 # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. | |
4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
5 # | |
6 # This code is free software; you can redistribute it and/or modify it | |
7 # under the terms of the GNU General Public License version 2 only, as | |
8 # published by the Free Software Foundation. | |
9 # | |
10 # This code is distributed in the hope that it will be useful, but WITHOUT | |
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 # version 2 for more details (a copy is included in the LICENSE file that | |
14 # accompanied this code). | |
15 # | |
16 # You should have received a copy of the GNU General Public License version | |
17 # 2 along with this work; if not, write to the Free Software Foundation, | |
18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
19 # | |
20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
21 # or visit www.oracle.com if you need additional information or have any | |
22 # questions. | |
23 # | |
24 # | |
25 | |
26 # $1 - error code | |
27 # $2 - test name | |
28 # $3,.. - decription | |
29 test_fail() { | |
30 error=$1 | |
31 shift | |
32 name=$1 | |
33 shift | |
34 echo "TEST [$name] FAILED:" | |
35 echo "$@" | |
36 exit $error | |
37 } | |
38 | |
39 # $@ - additional vm opts | |
40 start_test() { | |
41 # disable core dump on *nix | |
42 ulimit -S -c 0 | |
43 # disable core dump on windows | |
44 VMOPTS="$@ -XX:-CreateMinidumpOnCrash" | |
45 cmd="${JAVA} ${VMOPTS} -XX:+ReplayCompiles -XX:ReplayDataFile=${replay_data}" | |
46 echo $cmd | |
47 $cmd | |
48 return $? | |
49 } | |
50 | |
51 # $1 - error_code | |
52 # $2 - test name | |
53 # $3,.. - additional vm opts | |
54 positive_test() { | |
55 error=$1 | |
56 shift | |
57 name=$1 | |
58 shift | |
59 VMOPTS="${TESTVMOPTS} $@" | |
60 echo "POSITIVE TEST [$name]" | |
61 start_test ${VMOPTS} | |
62 exit_code=$? | |
63 if [ ${exit_code} -ne 0 ] | |
64 then | |
65 test_fail $error "$name" "exit_code[${exit_code}] != 0 during replay "\ | |
66 "w/ vmopts: ${VMOPTS}" | |
67 fi | |
68 } | |
69 | |
70 # $1 - error_code | |
71 # $2 - test name | |
72 # $2,.. - additional vm opts | |
73 negative_test() { | |
74 error=$1 | |
75 shift | |
76 name=$1 | |
77 shift | |
78 VMOPTS="${TESTVMOPTS} $@" | |
79 echo "NEGATIVE TEST [$name]" | |
80 start_test ${VMOPTS} | |
81 exit_code=$? | |
82 if [ ${exit_code} -eq 0 ] | |
83 then | |
84 test_fail $error "$name" "exit_code[${exit_code}] == 0 during replay "\ | |
85 "w/ vmopts: ${VMOPTS}" | |
86 fi | |
87 } | |
88 | |
89 # $1 - initial error_code | |
90 common_tests() { | |
91 positive_test $1 "COMMON :: THE SAME FLAGS" | |
12072
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
92 if [ $tiered_available -eq 1 ] |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
93 then |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
94 positive_test `expr $1 + 1` "COMMON :: TIERED" -XX:+TieredCompilation |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
95 fi |
10197 | 96 } |
97 | |
98 # $1 - initial error_code | |
99 # $2 - non-tiered comp_level | |
100 nontiered_tests() { | |
101 level=`grep "^compile " $replay_data | awk '{print $6}'` | |
17712
d64ae45dbce9
8027257: [TESTBUG] compiler/ciReplay/TestVM.sh : Error: Could not find or load main class negative_test
iignatyev
parents:
12079
diff
changeset
|
102 # is level available in non-tiered |
10197 | 103 if [ "$level" -eq $2 ] |
104 then | |
105 positive_test $1 "NON-TIERED :: AVAILABLE COMP_LEVEL" \ | |
106 -XX:-TieredCompilation | |
107 else | |
108 negative_test `expr $1 + 1` "NON-TIERED :: UNAVAILABLE COMP_LEVEL" \ | |
109 -XX:-TieredCompilation | |
110 fi | |
111 } | |
112 | |
113 # $1 - initial error_code | |
114 client_tests() { | |
115 # testing in opposite VM | |
116 if [ $server_available -eq 1 ] | |
117 then | |
118 negative_test $1 "SERVER :: NON-TIERED" -XX:-TieredCompilation \ | |
119 -server | |
12072
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
120 if [ $tiered_available -eq 1 ] |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
121 then |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
122 positive_test `expr $1 + 1` "SERVER :: TIERED" -XX:+TieredCompilation \ |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
123 -server |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
124 fi |
10197 | 125 fi |
126 nontiered_tests `expr $1 + 2` $client_level | |
127 } | |
128 | |
129 # $1 - initial error_code | |
130 server_tests() { | |
131 # testing in opposite VM | |
132 if [ $client_available -eq 1 ] | |
133 then | |
134 # tiered is unavailable in client vm, so results w/ flags will be the same as w/o flags | |
135 negative_test $1 "CLIENT" -client | |
136 fi | |
137 nontiered_tests `expr $1 + 2` $server_level | |
138 } | |
139 | |
140 cleanup() { | |
141 ${RM} -f core* | |
142 ${RM} -f replay*.txt | |
143 ${RM} -f hs_err_pid*.log | |
144 ${RM} -f test_core | |
145 ${RM} -f test_replay.txt | |
146 } | |
147 | |
148 JAVA=${TESTJAVA}${FS}bin${FS}java | |
149 | |
150 replay_data=test_replay.txt | |
151 | |
152 ${JAVA} ${TESTVMOPTS} -Xinternalversion 2>&1 | grep debug | |
153 | |
154 # Only test fastdebug | |
155 if [ $? -ne 0 ] | |
156 then | |
157 echo TEST SKIPPED: product build | |
158 exit 0 | |
159 fi | |
160 | |
161 is_int=`${JAVA} ${TESTVMOPTS} -version 2>&1 | grep -c "interpreted mode"` | |
162 # Not applicable for Xint | |
163 if [ $is_int -ne 0 ] | |
164 then | |
165 echo TEST SKIPPED: interpreted mode | |
166 exit 0 | |
167 fi | |
168 | |
169 cleanup | |
170 | |
171 client_available=`${JAVA} ${TESTVMOPTS} -client -Xinternalversion 2>&1 | \ | |
172 grep -c Client` | |
173 server_available=`${JAVA} ${TESTVMOPTS} -server -Xinternalversion 2>&1 | \ | |
174 grep -c Server` | |
12072
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
175 tiered_available=`${JAVA} ${TESTVMOPTS} -XX:+TieredCompilation -XX:+PrintFlagsFinal -version | \ |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
176 grep TieredCompilation | \ |
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
177 grep -c true` |
10197 | 178 is_tiered=`${JAVA} ${TESTVMOPTS} -XX:+PrintFlagsFinal -version | \ |
179 grep TieredCompilation | \ | |
180 grep -c true` | |
181 # CompLevel_simple -- C1 | |
182 client_level=1 | |
183 # CompLevel_full_optimization -- C2 or Shark | |
184 server_level=4 | |
185 | |
186 echo "client_available=$client_available" | |
187 echo "server_available=$server_available" | |
12072
6c72125a2f40
8016456: ciReplay test assumes TIERED compilation is available
iignatyev
parents:
10282
diff
changeset
|
188 echo "tiered_available=$tiered_available" |
10197 | 189 echo "is_tiered=$is_tiered" |
190 | |
191 # crash vm in compiler thread with generation replay data and 'small' dump-file | |
192 # $@ - additional vm opts | |
193 generate_replay() { | |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
194 if [ $VM_OS != "windows" ] |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
195 then |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
196 # enable core dump |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
197 ulimit -c unlimited |
12065 | 198 |
199 if [ $VM_OS = "solaris" ] | |
200 then | |
201 coreadm -p core $$ | |
202 fi | |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
203 fi |
10197 | 204 |
205 cmd="${JAVA} ${TESTVMOPTS} $@ \ | |
206 -Xms8m \ | |
207 -Xmx32m \ | |
208 -XX:MetaspaceSize=4m \ | |
209 -XX:MaxMetaspaceSize=16m \ | |
210 -XX:InitialCodeCacheSize=512k \ | |
211 -XX:ReservedCodeCacheSize=4m \ | |
212 -XX:ThreadStackSize=512 \ | |
213 -XX:VMThreadStackSize=512 \ | |
214 -XX:CompilerThreadStackSize=512 \ | |
215 -XX:ParallelGCThreads=1 \ | |
216 -XX:CICompilerCount=1 \ | |
217 -Xcomp \ | |
218 -XX:CICrashAt=1 \ | |
219 -XX:+CreateMinidumpOnCrash \ | |
220 -XX:+DumpReplayDataOnError \ | |
221 -XX:ReplayDataFile=${replay_data} \ | |
222 -version" | |
223 echo GENERATION OF REPLAY.TXT: | |
224 echo $cmd | |
225 | |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
226 ${cmd} > crash.out 2>&1 |
10197 | 227 |
228 core_locations=`grep -i core crash.out | grep "location:" | \ | |
229 sed -e 's/.*location: //'` | |
230 rm crash.out | |
231 # processing core locations for *nix | |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
232 if [ $VM_OS != "windows" ] |
10197 | 233 then |
234 # remove 'or' between '/core.<pid>' and 'core' | |
235 core_locations=`echo $core_locations | \ | |
236 sed -e 's/\([^ ]*\) or \([^ ]*\)/\1 \2/'` | |
237 # add <core_path>/core.<pid> core.<pid> | |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
238 core_with_dir=`echo $core_locations | awk '{print $1}'` |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
239 dir=`dirname $core_with_dir` |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
240 core_with_pid=`echo $core_locations | awk '{print $2}'` |
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
241 if [ -n ${core_with_pid} ] |
10197 | 242 then |
10282
cd6f6fccd287
8014068: TEST_BUG: compiler/ciReplay/TestSA.sh fails on Windows: core wasn't generated
iignatyev
parents:
10197
diff
changeset
|
243 core_locations="$core_locations $dir${FS}$core_with_pid $core_with_pid" |
10197 | 244 fi |
245 fi | |
246 | |
247 echo "LOOKING FOR CORE IN ${core_locations}" | |
248 for core in $core_locations | |
249 do | |
250 if [ -r "$core" ] | |
251 then | |
252 core_file=$core | |
253 fi | |
254 done | |
255 | |
256 # core-file was found | |
257 if [ -n "$core_file" ] | |
258 then | |
259 ${MV} "${core_file}" test_core | |
260 core_file=test_core | |
261 fi | |
262 | |
263 ${RM} -f hs_err_pid*.log | |
264 } | |
265 |