# HG changeset patch # User Doug Simon # Date 1354030622 -3600 # Node ID 7ac6e4c10e379fe21c9c073471e99ca94565a4d8 # Parent 34753b05732408aee883a0ecd03083266eccbecf bug fix for HotSpotReslvedJavaType.findUniqueConcreteSubtype() on arrays of interfaces diff -r 34753b057324 -r 7ac6e4c10e37 graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java --- a/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java Tue Nov 27 16:09:05 2012 +0100 +++ b/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java Tue Nov 27 16:37:02 2012 +0100 @@ -243,20 +243,22 @@ static void checkConcreteSubtype(ResolvedJavaType type, Class expected) { ResolvedJavaType subtype = type.findUniqueConcreteSubtype(); if (subtype == null) { - // The findUniqueConcreteSubtype() method is conservative - return; + // findUniqueConcreteSubtype() is conservative + } else { + if (expected == null) { + assertNull(subtype); + } else { + assertTrue(subtype.isClass(expected)); + } } - if (expected == null) { - assertNull(subtype); - } else { - assertTrue(subtype.isClass(expected)); - } if (!type.isArrayClass()) { ResolvedJavaType arrayType = type.getArrayClass(); ResolvedJavaType arraySubtype = arrayType.findUniqueConcreteSubtype(); if (arraySubtype != null) { assertEquals(arraySubtype, arrayType); + } else { + // findUniqueConcreteSubtype() method is conservative } } } diff -r 34753b057324 -r 7ac6e4c10e37 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Tue Nov 27 16:09:05 2012 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Tue Nov 27 16:37:02 2012 +0100 @@ -169,7 +169,7 @@ } private static boolean hasSubtype(ResolvedJavaType type) { - assert !type.isInterface() && !type.isArrayClass() : type; + assert !type.isArrayClass() : type; if (isPrimitive(type)) { return false; }