changeset 7279:9e27795a9d05

fixed crash where Class.isInstance() is called on a primitive class (e.g., int.class)
author Doug Simon <doug.simon@oracle.com>
date Wed, 19 Dec 2012 12:39:47 +0100
parents 346336325337
children f368ec89e231
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ClassSnippets.java graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfDynamicTest.java
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }
-
 }
--- 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) {