diff graal/com.oracle.graal.java/src/com/oracle/graal/java/StandardGraphBuilderPluginsProvider.java @ 19155:ac9ad302e12f

added utility to GraphBuilderContext for generating a receiver null check from within an InvocationPlugin for a non-static method
author Doug Simon <doug.simon@oracle.com>
date Thu, 05 Feb 2015 15:19:40 +0100
parents 149427a9a397
children ce23018b970a
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/StandardGraphBuilderPluginsProvider.java	Thu Feb 05 14:34:36 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/StandardGraphBuilderPluginsProvider.java	Thu Feb 05 15:19:40 2015 +0100
@@ -22,21 +22,16 @@
  */
 package com.oracle.graal.java;
 
-import static com.oracle.graal.api.meta.DeoptimizationAction.*;
-import static com.oracle.graal.api.meta.DeoptimizationReason.*;
-import static com.oracle.graal.compiler.common.type.StampFactory.*;
+import static com.oracle.graal.java.GraphBuilderContext.*;
 
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.api.runtime.*;
-import com.oracle.graal.compiler.common.type.*;
 import com.oracle.graal.java.GraphBuilderPlugins.InvocationPlugin;
 import com.oracle.graal.java.GraphBuilderPlugins.Registration;
 import com.oracle.graal.java.GraphBuilderPlugins.Registration.Receiver;
 import com.oracle.graal.nodes.*;
-import com.oracle.graal.nodes.calc.*;
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.java.*;
-import com.oracle.graal.nodes.type.*;
 
 /**
  * Provider of non-runtime specific {@link GraphBuilderPlugin}s.
@@ -93,14 +88,7 @@
         }
 
         public boolean apply(GraphBuilderContext builder, ValueNode value) {
-            ValueNode nonNullValue = value;
-            ObjectStamp receiverStamp = (ObjectStamp) value.stamp();
-            if (!StampTool.isPointerNonNull(receiverStamp)) {
-                IsNullNode condition = builder.append(new IsNullNode(value));
-                Stamp stamp = receiverStamp.join(objectNonNull());
-                nonNullValue = builder.append(new GuardingPiNode(value, condition, true, NullCheckException, InvalidateReprofile, stamp));
-            }
-            builder.push(kind.getStackKind(), builder.append(new UnboxNode(nonNullValue, kind)));
+            builder.push(kind.getStackKind(), builder.append(new UnboxNode(makeNonNull(builder, value), kind)));
             return true;
         }