annotate test/compiler/6946040/TestCharShortByteSwap.java @ 12986:1b422ef5288a

8025728: Missing volatile specifier for field G1AllocRegion::_alloc_region Summary: The field G1AllocRegion::_alloc_region needs to be declared volatile as it is used with that intention. Otherwise the compiler may generate the code that reloads the value which might have changed in the meantime, leading to spurious crashes. Reviewed-by: iveresov, simonis, tschatzl Contributed-by: Axel Siebenborn <axel.siebenborn@sap.com>
author tschatzl
date Wed, 23 Oct 2013 10:23:06 +0200
parents 7369298bec7e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1396
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
1 /*
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
2 * Copyright 2010 Google, Inc. All Rights Reserved.
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
4 *
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
7 * published by the Free Software Foundation.
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
8 *
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
13 * accompanied this code).
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
14 *
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1396
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1396
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1396
diff changeset
21 * questions.
1396
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
22 *
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
23 */
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
24
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
25 /*
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
26 * @test
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
27 * @bug 6946040
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
28 * @summary Tests Character/Short.reverseBytes and their intrinsics implementation in the server compiler
8684
7369298bec7e 7115383: TEST_BUG: some jtreg tests fail because they explicitly specify -server option
collins
parents: 1552
diff changeset
29 * @run main/othervm -Xbatch -XX:CompileOnly=.testChar,.testShort TestCharShortByteSwap
1396
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
30 */
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
31
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
32 // This test must run without any command line arguments.
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
33
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
34 public class TestCharShortByteSwap {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
35
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
36 private static short initShort(String[] args, short v) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
37 if (args.length > 0) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
38 try {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
39 return (short) Integer.valueOf(args[0]).intValue();
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
40 } catch (NumberFormatException e) { }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
41 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
42 return v;
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
43 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
44
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
45 private static char initChar(String[] args, char v) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
46 if (args.length > 0) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
47 try {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
48 return (char) Integer.valueOf(args[0]).intValue();
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
49 } catch (NumberFormatException e) { }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
50 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
51 return v;
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
52 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
53
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
54 private static void testChar(char a, char b) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
55 if (a != Character.reverseBytes(b)) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
56 throw new RuntimeException("FAIL: " + (int)a + " != Character.reverseBytes(" + (int)b + ")");
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
57 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
58 if (b != Character.reverseBytes(a)) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
59 throw new RuntimeException("FAIL: " + (int)b + " != Character.reverseBytes(" + (int)a + ")");
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
60 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
61 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
62
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
63 private static void testShort(short a, short b) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
64 if (a != Short.reverseBytes(b)) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
65 throw new RuntimeException("FAIL: " + (int)a + " != Short.reverseBytes(" + (int)b + ")");
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
66 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
67 if (b != Short.reverseBytes(a)) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
68 throw new RuntimeException("FAIL: " + (int)b + " != Short.reverseBytes(" + (int)a + ")");
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
69 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
70 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
71
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
72 public static void main(String[] args) {
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
73 for (int i = 0; i < 100000; ++i) { // Trigger compilation
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
74 char c1 = initChar(args, (char) 0x0123);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
75 char c2 = initChar(args, (char) 0x2301);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
76 char c3 = initChar(args, (char) 0xaabb);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
77 char c4 = initChar(args, (char) 0xbbaa);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
78 short s1 = initShort(args, (short) 0x0123);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
79 short s2 = initShort(args, (short) 0x2301);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
80 short s3 = initShort(args, (short) 0xaabb);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
81 short s4 = initShort(args, (short) 0xbbaa);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
82 testChar(c1, c2);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
83 testChar(c3, c4);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
84 testShort(s1, s2);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
85 testShort(s3, s4);
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
86 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
87 }
d7f654633cfe 6946040: add intrinsic for short and char reverseBytes
never
parents:
diff changeset
88 }