Mercurial > hg > graal-jvmci-8
changeset 7020:472609cc3e10
fixed implementation of HotSpotResolvedJavaType.findUniqueConcreteSubtype() for array types
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 26 Nov 2012 11:22:26 +0100 |
parents | 6838696d54ac |
children | be508977fb47 f31d374e8195 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfTest.java |
diffstat | 2 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Mon Nov 26 11:21:18 2012 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Mon Nov 26 11:22:26 2012 +0100 @@ -160,7 +160,7 @@ @Override public ResolvedJavaType findUniqueConcreteSubtype() { if (isArrayClass()) { - return getComponentType().findUniqueConcreteSubtype() != null ? this : null; + return getComponentType().findUniqueConcreteSubtype() == getComponentType() ? this : null; } else { ResolvedJavaType subtype = (ResolvedJavaType) HotSpotGraalRuntime.getInstance().getCompilerToVM().getUniqueConcreteSubtype(this); assert subtype == null || !subtype.isInterface();
--- a/graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfTest.java Mon Nov 26 11:21:18 2012 +0100 +++ b/graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/InstanceOfTest.java Mon Nov 26 11:22:26 2012 +0100 @@ -324,4 +324,25 @@ } return b; } + + abstract static class A {} + static class B extends A {} + + public static boolean isArrayOfA(Object o) { + return o instanceof A[]; + } + + public static boolean isArrayOfB(Object o) { + return o instanceof A[]; + } + + @Test + public void testArray() { + Object bArray = new A[10]; + Object aArray = new B[10]; + test("isArrayOfA", aArray); + test("isArrayOfA", bArray); + test("isArrayOfB", aArray); + test("isArrayOfB", bArray); + } }