# HG changeset patch # User Doug Simon # Date 1364299428 -3600 # Node ID 7abc6865bdc6369f32745be93dc8813844453462 # Parent a6ba61be2b5f580f5abc912e1d1171cae3240b8f made method substitutions for Class be interpretable diff -r a6ba61be2b5f -r 7abc6865bdc6 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/HotSpotMethodSubstitutionTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/HotSpotMethodSubstitutionTest.java Tue Mar 26 12:56:27 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/HotSpotMethodSubstitutionTest.java Tue Mar 26 13:03:48 2013 +0100 @@ -63,6 +63,18 @@ test("isPrimitive"); test("getSuperClass"); test("getComponentType"); + + for (Class c : new Class[]{getClass(), Cloneable.class, int[].class, String[][].class}) { + assertEquals(c.getModifiers(), ClassSubstitutions.getModifiers(c)); + assertEquals(c.isInterface(), ClassSubstitutions.isInterface(c)); + assertEquals(c.isArray(), ClassSubstitutions.isArray(c)); + assertEquals(c.isPrimitive(), ClassSubstitutions.isPrimitive(c)); + assertEquals(c.getSuperclass(), ClassSubstitutions.getSuperclass(c)); + assertEquals(c.getComponentType(), ClassSubstitutions.getComponentType(c)); + for (Object o : new Object[]{this, new int[5], new String[2][], new Object()}) { + assertEquals(c.isInstance(o), ClassSubstitutions.isInstance(c, o)); + } + } } @SuppressWarnings("all") diff -r a6ba61be2b5f -r 7abc6865bdc6 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Tue Mar 26 12:56:27 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Tue Mar 26 13:03:48 2013 +0100 @@ -115,5 +115,7 @@ public static native boolean materializeCondition(@ConstantNodeParameter Condition condition, long x, long y); @NodeIntrinsic - public static native boolean materializeIsInstance(Class mirror, Object object); + public static boolean materializeIsInstance(Class mirror, Object object) { + return mirror.isInstance(object); + } }