--- old/test/compiler/unsafe/UnsafeGetConstantField.java 2015-06-27 04:11:18.000000000 +0300 +++ new/test/compiler/unsafe/UnsafeGetConstantField.java 2015-06-27 04:11:18.000000000 +0300 @@ -28,12 +28,12 @@ * @summary tests on constant folding of unsafe get operations * @library /testlibrary /../../test/lib * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions - * -Xbatch -XX:-TieredCompilation + * -Xbatch -XX:-TieredCompilation -Xverify:all * -XX:+FoldStableValues * -XX:+UseUnalignedAccesses * java.lang.invoke.UnsafeGetConstantField * @run main/bootclasspath -XX:+UnlockDiagnosticVMOptions - * -Xbatch -XX:-TieredCompilation + * -Xbatch -XX:-TieredCompilation -Xverify:all * -XX:+FoldStableValues * -XX:-UseUnalignedAccesses * java.lang.invoke.UnsafeGetConstantField @@ -180,6 +180,7 @@ final boolean stable; final boolean hasDefaultValue; final String nameSuffix; + final boolean useRawOffset; final String className; final String classDesc; @@ -192,6 +193,7 @@ 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); @@ -276,6 +278,10 @@ 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