Mercurial > hg > graal-compiler
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; }