--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/TrufflePEATest.java 2017-11-03 23:56:15.551064570 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/TrufflePEATest.java 2017-11-03 23:56:15.049042105 -0700 @@ -22,6 +22,8 @@ */ package org.graalvm.compiler.core.test.ea; +import java.lang.reflect.Field; + import org.graalvm.compiler.core.common.GraalOptions; import org.graalvm.compiler.core.test.GraalCompilerTest; import org.graalvm.compiler.nodes.StructuredGraph; @@ -33,9 +35,8 @@ import org.graalvm.compiler.phases.tiers.HighTierContext; import org.graalvm.compiler.virtual.phases.ea.PartialEscapePhase; import org.junit.Test; -import sun.misc.Unsafe; -import java.lang.reflect.Field; +import sun.misc.Unsafe; public class TrufflePEATest extends GraalCompilerTest { @@ -56,6 +57,7 @@ static class DynamicObject { int primitiveField0; int primitiveField1; + int primitiveField2; } private static final long offsetLong1 = Unsafe.ARRAY_LONG_BASE_OFFSET + Unsafe.ARRAY_LONG_INDEX_SCALE * 1; @@ -66,7 +68,15 @@ static { try { Field primitiveField0 = DynamicObject.class.getDeclaredField("primitiveField0"); - primitiveField0Offset = UNSAFE.objectFieldOffset(primitiveField0); + long offset = UNSAFE.objectFieldOffset(primitiveField0); + if (offset % 8 == 0) { + primitiveField0Offset = offset; + } else { + Field primitiveField1 = DynamicObject.class.getDeclaredField("primitiveField1"); + offset = UNSAFE.objectFieldOffset(primitiveField1); + assert offset % 8 == 0; + primitiveField0Offset = offset; + } } catch (NoSuchFieldException | SecurityException e) { throw new AssertionError(e); }