# HG changeset patch # User Doug Simon # Date 1355917187 -3600 # Node ID 9e27795a9d0559e39cc141dd1c3c84f8e5409889 # Parent 3463363253372daaabdb34433872870b218d65f1 fixed crash where Class.isInstance() is called on a primitive class (e.g., int.class) diff -r 346336325337 -r 9e27795a9d05 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ClassSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ClassSnippets.java Wed Dec 19 00:12:32 2012 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ClassSnippets.java Wed Dec 19 12:39:47 2012 +0100 @@ -111,7 +111,6 @@ @MethodSubstitution(isStatic = false) public static boolean isInstance(final Class thisObj, Object obj) { - return MaterializeNode.isInstance(thisObj, obj); + return !thisObj.isPrimitive() && MaterializeNode.isInstance(thisObj, obj); } - } diff -r 346336325337 -r 9e27795a9d05 graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfDynamicTest.java --- a/graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfDynamicTest.java Wed Dec 19 00:12:32 2012 +0100 +++ b/graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfDynamicTest.java Wed Dec 19 12:39:47 2012 +0100 @@ -57,6 +57,9 @@ test("isInstanceDynamic", String.class, null); test("isInstanceDynamic", String.class, "object"); test("isInstanceDynamic", String.class, Object.class); + test("isInstanceDynamic", int.class, null); + test("isInstanceDynamic", int.class, "Object"); + test("isInstanceDynamic", int.class, Object.class); } @Test @@ -64,6 +67,9 @@ test("isInstanceIntDynamic", String.class, null); test("isInstanceIntDynamic", String.class, "object"); test("isInstanceIntDynamic", String.class, Object.class); + test("isInstanceIntDynamic", int.class, null); + test("isInstanceIntDynamic", int.class, "Object"); + test("isInstanceIntDynamic", int.class, Object.class); } public static boolean isStringDynamic(Object o) {