< prev index next >
test/compiler/unsafe/OpaqueAccesses.java
Print this page
@@ -28,16 +28,32 @@
* @bug 8155781
* @modules java.base/jdk.internal.misc
*
* @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions
* -XX:-TieredCompilation -Xbatch
+ * -XX:+UseCompressedOops -XX:+UseCompressedClassPointers
+ * -XX:CompileCommand=dontinline,compiler.unsafe.OpaqueAccesses::test*
+ * compiler.unsafe.OpaqueAccesses
+ * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions
+ * -XX:-TieredCompilation -Xbatch
+ * -XX:+UseCompressedOops -XX:-UseCompressedClassPointers
+ * -XX:CompileCommand=dontinline,compiler.unsafe.OpaqueAccesses::test*
+ * compiler.unsafe.OpaqueAccesses
+ * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions
+ * -XX:-TieredCompilation -Xbatch
+ * -XX:-UseCompressedOops -XX:+UseCompressedClassPointers
+ * -XX:CompileCommand=dontinline,compiler.unsafe.OpaqueAccesses::test*
+ * compiler.unsafe.OpaqueAccesses
+ * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions
+ * -XX:-TieredCompilation -Xbatch
+ * -XX:-UseCompressedOops -XX:-UseCompressedClassPointers
* -XX:CompileCommand=dontinline,compiler.unsafe.OpaqueAccesses::test*
* compiler.unsafe.OpaqueAccesses
*/
package compiler.unsafe;
-import jdk.internal.misc.Unsafe;
+import sun.misc.Unsafe;
import java.lang.reflect.Field;
public class OpaqueAccesses {
private static final Unsafe UNSAFE = Unsafe.getUnsafe();
@@ -59,10 +75,11 @@
throw new Error(e);
}
}
private Object f = new Object();
+ private long l1, l2;
static Object testFixedOffsetField(Object o) {
return UNSAFE.getObject(o, F_OFFSET);
}
@@ -72,10 +89,22 @@
static int testFixedOffsetHeader4(Object o) {
return UNSAFE.getInt(o, 4);
}
+ static int testFixedOffsetHeader8(Object o) {
+ return UNSAFE.getInt(o, 8);
+ }
+
+ static int testFixedOffsetHeader12(Object o) {
+ return UNSAFE.getInt(o, 12);
+ }
+
+ static int testFixedOffsetHeader16(Object o) {
+ return UNSAFE.getInt(o, 16);
+ }
+
static Object testFixedBase(long off) {
return UNSAFE.getObject(INSTANCE, off);
}
static Object testOpaque(Object o, long off) {
@@ -88,10 +117,22 @@
static int testFixedOffsetHeaderArray4(Object[] arr) {
return UNSAFE.getInt(arr, 4);
}
+ static int testFixedOffsetHeaderArray8(Object[] arr) {
+ return UNSAFE.getInt(arr, 8);
+ }
+
+ static int testFixedOffsetHeaderArray12(Object[] arr) {
+ return UNSAFE.getInt(arr, 12);
+ }
+
+ static int testFixedOffsetHeaderArray16(Object[] arr) {
+ return UNSAFE.getInt(arr, 16);
+ }
+
static Object testFixedOffsetArray(Object[] arr) {
return UNSAFE.getObject(arr, E_OFFSET);
}
static Object testFixedBaseArray(long off) {
@@ -116,17 +157,23 @@
for (int i = 0; i < 20_000; i++) {
// Instance
testFixedOffsetField(INSTANCE);
testFixedOffsetHeader0(INSTANCE);
testFixedOffsetHeader4(INSTANCE);
+ testFixedOffsetHeader8(INSTANCE);
+ testFixedOffsetHeader12(INSTANCE);
+ testFixedOffsetHeader16(INSTANCE);
testFixedBase(F_OFFSET);
testOpaque(INSTANCE, F_OFFSET);
testMixedAccess();
// Array
testFixedOffsetHeaderArray0(ARRAY);
testFixedOffsetHeaderArray4(ARRAY);
+ testFixedOffsetHeaderArray8(ARRAY);
+ testFixedOffsetHeaderArray12(ARRAY);
+ testFixedOffsetHeaderArray16(ARRAY);
testFixedOffsetArray(ARRAY);
testFixedBaseArray(E_OFFSET);
testOpaqueArray(ARRAY, E_OFFSET);
}
System.out.println("TEST PASSED");
< prev index next >