Mercurial > hg > graal-compiler
changeset 7045:7ac6e4c10e37
bug fix for HotSpotReslvedJavaType.findUniqueConcreteSubtype() on arrays of interfaces
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 27 Nov 2012 16:37:02 +0100 |
parents | 34753b057324 |
children | 6cbaae52bab9 47c120841ceb |
files | graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java |
diffstat | 2 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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 } } }
--- 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; }