changeset 22477:8ccb3d5e1853

Truffle: remove graal.truffle.unsafe.UnsafeAccessImpl intrinsics
author Andreas Woess <andreas.woess@oracle.com>
date Tue, 18 Aug 2015 15:06:03 +0200
parents 360295240c97
children 7a2ca83ae159
files graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java
diffstat 2 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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);
+        }
+    }
 }
--- 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) {