< 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 >