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) {