Mercurial > hg > truffle
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<>()); } }