# HG changeset patch # User Andreas Woess # Date 1439903163 -7200 # Node ID 8ccb3d5e1853b34b88e91fc4ddbbba00d8be4483 # Parent 360295240c97d5386b284a8b1954ff75e6e94945 Truffle: remove graal.truffle.unsafe.UnsafeAccessImpl intrinsics diff -r 360295240c97 -r 8ccb3d5e1853 graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java --- a/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java Tue Aug 18 13:42:20 2015 +0200 +++ b/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java Tue Aug 18 15:06:03 2015 +0200 @@ -35,6 +35,7 @@ import com.oracle.graal.compiler.test.*; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.graphbuilderconf.*; +import com.oracle.graal.graphbuilderconf.InvocationPlugins.Registration; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; import com.oracle.graal.nodes.extended.*; @@ -44,17 +45,13 @@ import com.oracle.graal.phases.tiers.*; import com.oracle.graal.truffle.nodes.*; import com.oracle.graal.truffle.substitutions.*; -import com.oracle.truffle.api.*; -import com.oracle.truffle.api.unsafe.*; public class ConditionAnchoringTest extends GraalCompilerTest { - private static final UnsafeAccess access; private static final long offset; private static final Object location = new Object(); static { Unsafe unsafe = jdk.internal.jvmci.common.UnsafeAccess.unsafe; - access = Truffle.getRuntime().getCapability(UnsafeAccessFactory.class).createUnsafeAccess(unsafe); long fieldOffset = 0; try { fieldOffset = unsafe.objectFieldOffset(CheckedObject.class.getDeclaredField("field")); @@ -72,7 +69,7 @@ public int checkedAccess(CheckedObject o) { if (o.id == 42) { - return access.getInt(o, offset, o.id == 42, location); + return UnsafeAccess.unsafeGetInt(o, offset, o.id == 42, location); } return -1; } @@ -80,7 +77,7 @@ // test with a different kind of condition (not a comparison against a constant) public int checkedAccess2(CheckedObject o) { if (o.id == o.iid) { - return access.getInt(o, offset, o.id == o.iid, location); + return UnsafeAccess.unsafeGetInt(o, offset, o.id == o.iid, location); } return -1; } @@ -138,7 +135,8 @@ @Override protected GraphBuilderConfiguration editGraphBuilderConfiguration(GraphBuilderConfiguration conf) { // get UnsafeAccessImpl.unsafeGetInt intrinsified - TruffleGraphBuilderPlugins.registerUnsafeAccessImplPlugins(conf.getPlugins().getInvocationPlugins(), false); + Registration r = new Registration(conf.getPlugins().getInvocationPlugins(), UnsafeAccess.class); + TruffleGraphBuilderPlugins.registerUnsafeLoadStorePlugins(r, Kind.Int); // get UnsafeAccess.getInt inlined conf.getPlugins().appendInlineInvokePlugin(new InlineEverythingPlugin()); return super.editGraphBuilderConfiguration(conf); @@ -151,4 +149,17 @@ return new InlineInfo(method, false); } } + + @SuppressWarnings({"unused", "hiding"}) + private static final class UnsafeAccess { + private static final Unsafe UNSAFE = jdk.internal.jvmci.common.UnsafeAccess.unsafe; + + static int unsafeGetInt(Object receiver, long offset, boolean condition, Object locationIdentity) { + return UNSAFE.getInt(receiver, offset); + } + + static void unsafePutInt(Object receiver, long offset, int value, Object locationIdentity) { + UNSAFE.putInt(receiver, offset, value); + } + } } diff -r 360295240c97 -r 8ccb3d5e1853 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Tue Aug 18 13:42:20 2015 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Tue Aug 18 15:06:03 2015 +0200 @@ -46,7 +46,6 @@ import com.oracle.graal.truffle.nodes.*; import com.oracle.graal.truffle.nodes.asserts.*; import com.oracle.graal.truffle.nodes.frame.*; -import com.oracle.graal.truffle.unsafe.*; import com.oracle.truffle.api.*; import com.oracle.truffle.api.frame.*; @@ -61,7 +60,6 @@ registerCompilerDirectivesPlugins(plugins, canDelayIntrinsification); registerCompilerAssertsPlugins(plugins, canDelayIntrinsification); registerOptimizedCallTargetPlugins(metaAccess, plugins); - registerUnsafeAccessImplPlugins(plugins, canDelayIntrinsification); if (TruffleCompilerOptions.TruffleUseFrameWithoutBoxing.getValue()) { registerFrameWithoutBoxingPlugins(plugins, canDelayIntrinsification); @@ -317,12 +315,6 @@ registerUnsafeCast(r, canDelayIntrinsification); } - public static void registerUnsafeAccessImplPlugins(InvocationPlugins plugins, boolean canDelayIntrinsification) { - Registration r = new Registration(plugins, UnsafeAccessImpl.class); - registerUnsafeCast(r, canDelayIntrinsification); - registerUnsafeLoadStorePlugins(r, Kind.Boolean, Kind.Byte, Kind.Int, Kind.Short, Kind.Long, Kind.Float, Kind.Double, Kind.Object); - } - private static void registerMaterialize(Registration r) { r.register1("materialize", Receiver.class, new InvocationPlugin() { public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver frame) {