20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /*
27 * @test
28 * @summary tests on constant folding of unsafe get operations
29 * @library /testlibrary
30 *
31 * @requires vm.flavor != "client"
32 *
33 * @modules java.base/jdk.internal.org.objectweb.asm
34 * java.base/jdk.internal.vm.annotation
35 * java.base/jdk.internal.misc
36 *
37 * @run main/bootclasspath/othervm -XX:+UnlockDiagnosticVMOptions
38 * -Xbatch -XX:-TieredCompilation
39 * -XX:+FoldStableValues
40 * -XX:CompileCommand=dontinline,UnsafeGetConstantField.checkGetAddress()
41 * -XX:CompileCommand=dontinline,*.test*
42 * -XX:+UseUnalignedAccesses
43 * -XaddReads:java.base=ALL-UNNAMED
44 * compiler.unsafe.UnsafeGetConstantField
45 *
46 * @run main/bootclasspath/othervm -XX:+UnlockDiagnosticVMOptions
47 * -Xbatch -XX:-TieredCompilation
48 * -XX:+FoldStableValues
49 * -XX:CompileCommand=dontinline,UnsafeGetConstantField.checkGetAddress()
50 * -XX:CompileCommand=dontinline,*.test*
51 * -XX:CompileCommand=inline,*Unsafe.get*
52 * -XX:-UseUnalignedAccesses
53 * -XaddReads:java.base=ALL-UNNAMED
54 * compiler.unsafe.UnsafeGetConstantField
55 */
56 package compiler.unsafe;
57
58 import jdk.internal.org.objectweb.asm.ClassWriter;
59 import jdk.internal.org.objectweb.asm.FieldVisitor;
60 import jdk.internal.org.objectweb.asm.MethodVisitor;
61 import jdk.internal.org.objectweb.asm.Opcodes;
62 import jdk.internal.org.objectweb.asm.Type;
63 import jdk.internal.vm.annotation.Stable;
64 import jdk.test.lib.Asserts;
65 import jdk.test.lib.Platform;
66 import jdk.internal.misc.Unsafe;
67
68 import java.io.IOException;
69 import java.nio.file.Files;
70 import java.nio.file.Path;
71 import java.nio.file.Paths;
72
73 import static jdk.internal.org.objectweb.asm.Opcodes.*;
74
75 public class UnsafeGetConstantField {
76 static final Class<?> THIS_CLASS = UnsafeGetConstantField.class;
77 static final Unsafe U = Unsafe.getUnsafe();
78
79 public static void main(String[] args) {
80 if (Platform.isServer()) {
81 testUnsafeGetAddress();
82 testUnsafeGetField();
83 testUnsafeGetFieldUnaligned();
84 }
85 System.out.println("TEST PASSED");
86 }
87
88 static final long nativeAddr = U.allocateMemory(16);
89 static void testUnsafeGetAddress() {
90 long cookie = 0x12345678L;
91 U.putAddress(nativeAddr, cookie);
92 for (int i = 0; i < 20_000; i++) {
93 Asserts.assertEquals(checkGetAddress(), cookie);
|
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /*
27 * @test
28 * @summary tests on constant folding of unsafe get operations
29 * @library /testlibrary
30 *
31 * @requires vm.flavor != "client"
32 *
33 * @modules java.base/jdk.internal.org.objectweb.asm
34 * java.base/jdk.internal.vm.annotation
35 * java.base/jdk.internal.misc
36 *
37 * @run main/bootclasspath/othervm -XX:+UnlockDiagnosticVMOptions
38 * -Xbatch -XX:-TieredCompilation
39 * -XX:+FoldStableValues
40 * -XX:CompileCommand=dontinline,compiler.unsafe.UnsafeGetConstantField::checkGetAddress
41 * -XX:CompileCommand=dontinline,*::test*
42 * -XX:+UseUnalignedAccesses
43 * -XaddReads:java.base=ALL-UNNAMED
44 * compiler.unsafe.UnsafeGetConstantField
45 *
46 * @run main/bootclasspath/othervm -XX:+UnlockDiagnosticVMOptions
47 * -Xbatch -XX:-TieredCompilation
48 * -XX:+FoldStableValues
49 * -XX:CompileCommand=dontinline,compiler.unsafe.UnsafeGetConstantField::checkGetAddress
50 * -XX:CompileCommand=dontinline,*::test*
51 * -XX:CompileCommand=inline,*Unsafe::get*
52 * -XX:-UseUnalignedAccesses
53 * -XaddReads:java.base=ALL-UNNAMED
54 * compiler.unsafe.UnsafeGetConstantField
55 */
56
57 package compiler.unsafe;
58
59 import jdk.internal.misc.Unsafe;
60 import jdk.internal.org.objectweb.asm.ClassWriter;
61 import jdk.internal.org.objectweb.asm.FieldVisitor;
62 import jdk.internal.org.objectweb.asm.MethodVisitor;
63 import jdk.internal.org.objectweb.asm.Opcodes;
64 import jdk.internal.org.objectweb.asm.Type;
65 import jdk.internal.vm.annotation.Stable;
66 import jdk.test.lib.Asserts;
67 import jdk.test.lib.Platform;
68
69 import java.io.IOException;
70 import java.nio.file.Files;
71 import java.nio.file.Path;
72 import java.nio.file.Paths;
73
74 import static jdk.internal.org.objectweb.asm.Opcodes.ACC_FINAL;
75 import static jdk.internal.org.objectweb.asm.Opcodes.ACC_PUBLIC;
76 import static jdk.internal.org.objectweb.asm.Opcodes.ACC_STATIC;
77 import static jdk.internal.org.objectweb.asm.Opcodes.ACONST_NULL;
78 import static jdk.internal.org.objectweb.asm.Opcodes.ALOAD;
79 import static jdk.internal.org.objectweb.asm.Opcodes.ARETURN;
80 import static jdk.internal.org.objectweb.asm.Opcodes.DUP;
81 import static jdk.internal.org.objectweb.asm.Opcodes.GETFIELD;
82 import static jdk.internal.org.objectweb.asm.Opcodes.GETSTATIC;
83 import static jdk.internal.org.objectweb.asm.Opcodes.INVOKESPECIAL;
84 import static jdk.internal.org.objectweb.asm.Opcodes.INVOKESTATIC;
85 import static jdk.internal.org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
86 import static jdk.internal.org.objectweb.asm.Opcodes.NEW;
87 import static jdk.internal.org.objectweb.asm.Opcodes.PUTFIELD;
88 import static jdk.internal.org.objectweb.asm.Opcodes.PUTSTATIC;
89 import static jdk.internal.org.objectweb.asm.Opcodes.RETURN;
90
91 public class UnsafeGetConstantField {
92 static final Class<?> THIS_CLASS = UnsafeGetConstantField.class;
93 static final Unsafe U = Unsafe.getUnsafe();
94
95 public static void main(String[] args) {
96 if (Platform.isServer()) {
97 testUnsafeGetAddress();
98 testUnsafeGetField();
99 testUnsafeGetFieldUnaligned();
100 }
101 System.out.println("TEST PASSED");
102 }
103
104 static final long nativeAddr = U.allocateMemory(16);
105 static void testUnsafeGetAddress() {
106 long cookie = 0x12345678L;
107 U.putAddress(nativeAddr, cookie);
108 for (int i = 0; i < 20_000; i++) {
109 Asserts.assertEquals(checkGetAddress(), cookie);
|