changeset 19958:e018185695f6

removed overly strict assertions in InstanceOfDynamicNode constructor
author Doug Simon <doug.simon@oracle.com>
date Thu, 19 Mar 2015 12:46:38 +0100
parents 3a1ce0aeb829
children 812fc403db8c
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java
diffstat 2 files changed, 20 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Thu Mar 19 12:46:06 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Thu Mar 19 12:46:38 2015 +0100
@@ -28,7 +28,6 @@
 import com.oracle.graal.nodeinfo.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.spi.*;
-import com.oracle.graal.nodes.type.*;
 
 /**
  * The {@code InstanceOfDynamicNode} represents a type check where the type being checked is not
@@ -56,8 +55,6 @@
         this.mirror = mirror;
         this.object = object;
         assert mirror.getKind() == Kind.Object : mirror.getKind();
-        assert StampTool.isExactType(mirror);
-        assert StampTool.typeOrNull(mirror).getName().equals("Ljava/lang/Class;");
     }
 
     @Override
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java	Thu Mar 19 12:46:06 2015 +0100
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java	Thu Mar 19 12:46:38 2015 +0100
@@ -22,6 +22,8 @@
  */
 package com.oracle.graal.replacements.test;
 
+import java.util.*;
+
 import org.junit.*;
 
 import com.oracle.graal.api.code.*;
@@ -230,6 +232,16 @@
         return clazz.isInstance(object);
     }
 
+    public static boolean isInstance2(boolean cond, Object object) {
+        Class<?> clazz;
+        if (cond) {
+            clazz = String.class;
+        } else {
+            clazz = java.util.HashMap.class;
+        }
+        return clazz.isInstance(object);
+    }
+
     public static boolean isAssignableFrom(Class<?> clazz, Class<?> other) {
         return clazz.isAssignableFrom(other);
     }
@@ -237,6 +249,7 @@
     @Test
     public void testClassSubstitutions() {
         testGraph("isInstance");
+        testGraph("isInstance2");
         testGraph("isAssignableFrom");
         for (Class<?> c : new Class[]{getClass(), Cloneable.class, int[].class, String[][].class}) {
             for (Object o : new Object[]{this, new int[5], new String[2][], new Object()}) {
@@ -244,5 +257,12 @@
                 test("isAssignableFrom", c, o.getClass());
             }
         }
+
+        test("isInstance2", true, null);
+        test("isInstance2", false, null);
+        test("isInstance2", true, "string");
+        test("isInstance2", false, "string");
+        test("isInstance2", true, new HashMap<>());
+        test("isInstance2", false, new HashMap<>());
     }
 }