# HG changeset patch # User Doug Simon # Date 1426765598 -3600 # Node ID e018185695f63701ae44954baec6714fa7175bab # Parent 3a1ce0aeb8292817523b5d312d5c841582cf4fb5 removed overly strict assertions in InstanceOfDynamicNode constructor diff -r 3a1ce0aeb829 -r e018185695f6 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java --- 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 diff -r 3a1ce0aeb829 -r e018185695f6 graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java --- 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<>()); } }