Mercurial > hg > graal-compiler
changeset 22622:9055e22b8661
removed unused "foldable" element from @NodeIntrinsic
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Sun, 13 Sep 2015 21:03:52 +0200 |
parents | 148cffb7bc99 |
children | ed489bbcccbb |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java |
diffstat | 2 files changed, 45 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Sun Sep 13 21:03:05 2015 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Sun Sep 13 21:03:52 2015 +0200 @@ -182,14 +182,6 @@ * ignored and can therefore safely be {@code null}. */ boolean setStampFromReturnType() default false; - - /** - * Determines if this intrinsic can be compile-time executed. An attempt to execute a call - * (via reflection) to this intrinsic at compile-time will be made if all of its arguments - * are compile-time constant. If the execution succeeds without an exception, the result is - * inserted as a constant node in the graph. - */ - boolean foldable() default false; } /**
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Sun Sep 13 21:03:05 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Sun Sep 13 21:03:52 2015 +0200 @@ -22,32 +22,55 @@ */ package com.oracle.graal.replacements; -import static jdk.internal.jvmci.meta.MetaUtil.*; +import static jdk.internal.jvmci.meta.MetaUtil.resolveJavaTypes; -import java.lang.reflect.*; -import java.util.*; - -import jdk.internal.jvmci.common.*; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -import com.oracle.graal.debug.*; -import com.oracle.graal.debug.internal.*; - -import jdk.internal.jvmci.meta.*; +import jdk.internal.jvmci.common.JVMCIError; +import jdk.internal.jvmci.meta.Constant; +import jdk.internal.jvmci.meta.ConstantReflectionProvider; +import jdk.internal.jvmci.meta.JavaConstant; +import jdk.internal.jvmci.meta.JavaKind; +import jdk.internal.jvmci.meta.JavaMethod; +import jdk.internal.jvmci.meta.MetaAccessProvider; +import jdk.internal.jvmci.meta.PrimitiveConstant; +import jdk.internal.jvmci.meta.ResolvedJavaMethod; +import jdk.internal.jvmci.meta.ResolvedJavaType; -import com.oracle.graal.api.replacements.*; -import com.oracle.graal.compiler.common.spi.*; -import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.graph.*; +import com.oracle.graal.api.replacements.Fold; +import com.oracle.graal.api.replacements.SnippetReflectionProvider; +import com.oracle.graal.compiler.common.spi.ForeignCallsProvider; +import com.oracle.graal.compiler.common.type.Stamp; +import com.oracle.graal.compiler.common.type.StampFactory; +import com.oracle.graal.debug.Debug; +import com.oracle.graal.debug.internal.DebugScope; +import com.oracle.graal.graph.Node; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.InjectedNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; -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.spi.*; -import com.oracle.graal.nodes.util.*; -import com.oracle.graal.phases.*; +import com.oracle.graal.nodes.ConstantNode; +import com.oracle.graal.nodes.FrameState; +import com.oracle.graal.nodes.LogicConstantNode; +import com.oracle.graal.nodes.PiNode; +import com.oracle.graal.nodes.ProxyNode; +import com.oracle.graal.nodes.ReturnNode; +import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.nodes.ValueProxyNode; +import com.oracle.graal.nodes.calc.FloatingNode; +import com.oracle.graal.nodes.calc.IsNullNode; +import com.oracle.graal.nodes.extended.UnboxNode; +import com.oracle.graal.nodes.extended.UnsafeStoreNode; +import com.oracle.graal.nodes.extended.ValueAnchorNode; +import com.oracle.graal.nodes.java.CheckCastNode; +import com.oracle.graal.nodes.java.LoadFieldNode; +import com.oracle.graal.nodes.java.MethodCallTargetNode; +import com.oracle.graal.nodes.spi.StampProvider; +import com.oracle.graal.nodes.util.GraphUtil; +import com.oracle.graal.phases.Phase; /** * Replaces calls to {@link NodeIntrinsic}s with nodes and calls to methods annotated with @@ -145,15 +168,6 @@ return target.invoke(receiver, reflectArgs); } - private static boolean areAllConstant(List<ValueNode> arguments) { - for (ValueNode arg : arguments) { - if (!arg.isConstant()) { - return false; - } - } - return true; - } - /** * Attempts to create a node to replace a call to a {@link NodeIntrinsic} annotated method. * @@ -161,9 +175,8 @@ * @param stamp the stamp to use for the returned node * @param method the method annotated with {@link NodeIntrinsic} * @param graph the graph into which the created node will be added - * @return a {@link ConstantNode} if the intrinsic could be - * {@linkplain NodeIntrinsic#foldable() folded}, {@code null} if intrinsification could - * not (yet) be performed, otherwise the node representing the intrinsic + * @return {@code null} if intrinsification could not (yet) be performed, otherwise the node + * representing the intrinsic */ public ValueNode createIntrinsicNode(List<ValueNode> arguments, Stamp stamp, ResolvedJavaMethod method, StructuredGraph graph, NodeIntrinsic intrinsic) { assert method.getAnnotation(Fold.class) == null; @@ -171,13 +184,6 @@ ResolvedJavaType[] parameterTypes = resolveJavaTypes(method.toParameterTypes(), method.getDeclaringClass()); - if (intrinsic.foldable() && areAllConstant(arguments)) { - JavaConstant res = tryFold(arguments, parameterTypes, method); - if (!res.equals(COULD_NOT_FOLD)) { - return ConstantNode.forConstant(res, metaAccess); - } - } - // Prepare the arguments for the reflective constructor call on the node class. Object[] nodeConstructorArguments = prepareArguments(arguments, parameterTypes, method, false); if (nodeConstructorArguments == null) {