< prev index next >
test/compiler/unsafe/UnsafeGetConstantField.java
Print this page
*** 26,41 ****
/*
* @test
* @summary tests on constant folding of unsafe get operations
* @library /testlibrary /../../test/lib
* @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
! * -Xbatch -XX:-TieredCompilation
* -XX:+FoldStableValues
* -XX:+UseUnalignedAccesses
* java.lang.invoke.UnsafeGetConstantField
* @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
! * -Xbatch -XX:-TieredCompilation
* -XX:+FoldStableValues
* -XX:-UseUnalignedAccesses
* java.lang.invoke.UnsafeGetConstantField
*/
package java.lang.invoke;
--- 26,41 ----
/*
* @test
* @summary tests on constant folding of unsafe get operations
* @library /testlibrary /../../test/lib
* @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
! * -Xbatch -XX:-TieredCompilation -Xverify:all
* -XX:+FoldStableValues
* -XX:+UseUnalignedAccesses
* java.lang.invoke.UnsafeGetConstantField
* @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions
! * -Xbatch -XX:-TieredCompilation -Xverify:all
* -XX:+FoldStableValues
* -XX:-UseUnalignedAccesses
* java.lang.invoke.UnsafeGetConstantField
*/
package java.lang.invoke;
*** 178,187 ****
--- 178,188 ----
final JavaType type;
final int flags;
final boolean stable;
final boolean hasDefaultValue;
final String nameSuffix;
+ final boolean useRawOffset;
final String className;
final String classDesc;
final String fieldDesc;
*** 190,199 ****
--- 191,201 ----
this.flags = flags;
this.stable = stable;
this.hasDefaultValue = hasDefaultValue;
this.nameSuffix = suffix;
+ useRawOffset = suffix.equals("Unaligned");
fieldDesc = type.desc();
className = String.format("%s$Test%s%s__f=%d__s=%b__d=%b", internalName(THIS_CLASS), type.typeName,
suffix, flags, stable, hasDefaultValue);
classDesc = String.format("L%s;", className);
}
*** 274,283 ****
--- 276,289 ----
// Compute field offset
getUnsafe(mv);
getField(mv);
mv.visitMethodInsn(INVOKEVIRTUAL, UNSAFE_NAME, (isStatic() ? "staticFieldOffset" : "objectFieldOffset"),
"(Ljava/lang/reflect/Field;)J", false);
+ if (useRawOffset) {
+ mv.visitLdcInsn(1);
+ mv.visitInsn(LSHR);
+ }
mv.visitFieldInsn(PUTSTATIC, className, "FIELD_OFFSET", "J");
// Compute base offset for static field
if (isStatic()) {
getUnsafe(mv);
< prev index next >