41 * -XX:+UseUnalignedAccesses
42 * compiler.unsafe.UnsafeGetConstantField
43 *
44 * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
45 * -Xbatch -XX:-TieredCompilation
46 * -XX:+FoldStableValues
47 * -XX:CompileCommand=dontinline,UnsafeGetConstantField.checkGetAddress()
48 * -XX:CompileCommand=dontinline,*.test*
49 * -XX:-UseUnalignedAccesses
50 * compiler.unsafe.UnsafeGetConstantField
51 */
52 package compiler.unsafe;
53
54 import jdk.internal.org.objectweb.asm.ClassWriter;
55 import jdk.internal.org.objectweb.asm.FieldVisitor;
56 import jdk.internal.org.objectweb.asm.MethodVisitor;
57 import jdk.internal.org.objectweb.asm.Opcodes;
58 import jdk.internal.org.objectweb.asm.Type;
59 import jdk.internal.vm.annotation.Stable;
60 import jdk.test.lib.Asserts;
61 import jdk.internal.misc.Unsafe;
62
63 import java.io.IOException;
64 import java.lang.reflect.Field;
65 import java.nio.file.Files;
66 import java.nio.file.Path;
67 import java.nio.file.Paths;
68
69 import static jdk.internal.org.objectweb.asm.Opcodes.*;
70
71 public class UnsafeGetConstantField {
72 static final Class<?> THIS_CLASS = UnsafeGetConstantField.class;
73 static final Unsafe U = Unsafe.getUnsafe();
74
75 public static void main(String[] args) {
76 testUnsafeGetAddress();
77 testUnsafeGetField();
78 testUnsafeGetFieldUnaligned();
79 System.out.println("TEST PASSED");
80 }
81
82 static final long nativeAddr = U.allocateMemory(16);
83 static void testUnsafeGetAddress() {
84 long cookie = 0x12345678L;
85 U.putAddress(nativeAddr, cookie);
86 for (int i = 0; i < 20_000; i++) {
87 Asserts.assertEquals(checkGetAddress(), cookie);
88 }
89 }
90
91 static long checkGetAddress() {
92 return U.getAddress(nativeAddr);
93 }
94
95 static void testUnsafeGetField() {
96 int[] testedFlags = new int[] { 0, ACC_STATIC, ACC_FINAL, (ACC_STATIC | ACC_FINAL) };
97 boolean[] boolValues = new boolean[] { false, true };
98 String[] modes = new String[] { "", "Volatile" };
|
41 * -XX:+UseUnalignedAccesses
42 * compiler.unsafe.UnsafeGetConstantField
43 *
44 * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
45 * -Xbatch -XX:-TieredCompilation
46 * -XX:+FoldStableValues
47 * -XX:CompileCommand=dontinline,UnsafeGetConstantField.checkGetAddress()
48 * -XX:CompileCommand=dontinline,*.test*
49 * -XX:-UseUnalignedAccesses
50 * compiler.unsafe.UnsafeGetConstantField
51 */
52 package compiler.unsafe;
53
54 import jdk.internal.org.objectweb.asm.ClassWriter;
55 import jdk.internal.org.objectweb.asm.FieldVisitor;
56 import jdk.internal.org.objectweb.asm.MethodVisitor;
57 import jdk.internal.org.objectweb.asm.Opcodes;
58 import jdk.internal.org.objectweb.asm.Type;
59 import jdk.internal.vm.annotation.Stable;
60 import jdk.test.lib.Asserts;
61 import jdk.test.lib.Platform;
62 import jdk.internal.misc.Unsafe;
63
64 import java.io.IOException;
65 import java.lang.reflect.Field;
66 import java.nio.file.Files;
67 import java.nio.file.Path;
68 import java.nio.file.Paths;
69
70 import static jdk.internal.org.objectweb.asm.Opcodes.*;
71
72 public class UnsafeGetConstantField {
73 static final Class<?> THIS_CLASS = UnsafeGetConstantField.class;
74 static final Unsafe U = Unsafe.getUnsafe();
75
76 public static void main(String[] args) {
77 if (Platform.isServer()) {
78 testUnsafeGetAddress();
79 testUnsafeGetField();
80 testUnsafeGetFieldUnaligned();
81 }
82 System.out.println("TEST PASSED");
83 }
84
85 static final long nativeAddr = U.allocateMemory(16);
86 static void testUnsafeGetAddress() {
87 long cookie = 0x12345678L;
88 U.putAddress(nativeAddr, cookie);
89 for (int i = 0; i < 20_000; i++) {
90 Asserts.assertEquals(checkGetAddress(), cookie);
91 }
92 }
93
94 static long checkGetAddress() {
95 return U.getAddress(nativeAddr);
96 }
97
98 static void testUnsafeGetField() {
99 int[] testedFlags = new int[] { 0, ACC_STATIC, ACC_FINAL, (ACC_STATIC | ACC_FINAL) };
100 boolean[] boolValues = new boolean[] { false, true };
101 String[] modes = new String[] { "", "Volatile" };
|