diff graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraySubstitutions.java @ 21925:64475dbf6aec

Move instantiation checks from methods substitutions to the lowering of DynamicNewInstanceNode and DynamicNewArrayNode, so that Unsafe.allocateInstance and Array.newInstance can be intrinsified to a single node.
author Christian Wimmer <christian.wimmer@oracle.com>
date Wed, 10 Jun 2015 17:23:19 -0700
parents 2c6802ac343c
children
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraySubstitutions.java	Thu Jun 11 01:21:44 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraySubstitutions.java	Wed Jun 10 17:23:19 2015 -0700
@@ -22,9 +22,6 @@
  */
 package com.oracle.graal.replacements;
 
-import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*;
-
-import com.oracle.graal.api.directives.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.java.*;
 import com.oracle.jvmci.meta.*;
@@ -36,18 +33,6 @@
  */
 public class ArraySubstitutions {
 
-    public static Object newInstance(Class<?> componentType, int length) throws NegativeArraySizeException {
-        // The error cases must be handled here since DynamicNewArrayNode can only deoptimize the
-        // caller in response to exceptions.
-        if (probability(SLOW_PATH_PROBABILITY, length < 0)) {
-            DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
-        }
-        if (probability(SLOW_PATH_PROBABILITY, componentType == void.class)) {
-            DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
-        }
-        return DynamicNewArrayNode.newArray(GraalDirectives.guardingNonNull(componentType), length);
-    }
-
     public static int getLength(Object array) {
         if (!array.getClass().isArray()) {
             DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);