< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/TrufflePEATest.java

Print this page

        

*** 20,29 **** --- 20,31 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ 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; import org.graalvm.compiler.nodes.extended.RawLoadNode; import org.graalvm.compiler.nodes.extended.RawStoreNode;
*** 31,43 **** import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.common.inlining.InliningPhase; 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; public class TrufflePEATest extends GraalCompilerTest { /** * This class mimics the behavior of {@code FrameWithoutBoxing}. --- 33,44 ---- import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.common.inlining.InliningPhase; import org.graalvm.compiler.phases.tiers.HighTierContext; import org.graalvm.compiler.virtual.phases.ea.PartialEscapePhase; import org.junit.Test; ! import sun.misc.Unsafe; public class TrufflePEATest extends GraalCompilerTest { /** * This class mimics the behavior of {@code FrameWithoutBoxing}.
*** 54,74 **** * This class mimics the behavior of {@code DynamicObjectL6I6}. */ static class DynamicObject { int primitiveField0; int primitiveField1; } private static final long offsetLong1 = Unsafe.ARRAY_LONG_BASE_OFFSET + Unsafe.ARRAY_LONG_INDEX_SCALE * 1; private static final long offsetLong2 = Unsafe.ARRAY_LONG_BASE_OFFSET + Unsafe.ARRAY_LONG_INDEX_SCALE * 2; private static final long primitiveField0Offset; static { try { Field primitiveField0 = DynamicObject.class.getDeclaredField("primitiveField0"); ! primitiveField0Offset = UNSAFE.objectFieldOffset(primitiveField0); } catch (NoSuchFieldException | SecurityException e) { throw new AssertionError(e); } } --- 55,84 ---- * This class mimics the behavior of {@code DynamicObjectL6I6}. */ 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; private static final long offsetLong2 = Unsafe.ARRAY_LONG_BASE_OFFSET + Unsafe.ARRAY_LONG_INDEX_SCALE * 2; private static final long primitiveField0Offset; static { try { Field primitiveField0 = DynamicObject.class.getDeclaredField("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); } }
< prev index next >