# HG changeset patch # User Doug Simon # Date 1414236967 -7200 # Node ID 2bf5ea10eea7f4f374adf25cd08c5deae9e12d60 # Parent 44dab78fe6bbbb742503378cc32603836732ebfe sharpened return types for HotSpot specific Graal API implementations diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedJavaFieldTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedJavaFieldTest.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedJavaFieldTest.java Sat Oct 25 13:36:07 2014 +0200 @@ -47,7 +47,7 @@ @Test public void testModifiersForInternal() { for (Class c : classesWithInternalFields) { - ResolvedJavaType type = HotSpotResolvedObjectType.fromClass(c); + HotSpotResolvedObjectType type = HotSpotResolvedObjectType.fromObjectClass(c); for (ResolvedJavaField field : type.getInstanceFields(false)) { if (field.isInternal()) { Assert.assertEquals(0, ~getReflectionFieldModifiers() & field.getModifiers()); @@ -63,7 +63,7 @@ @Test public void testCachingForInternalFields() { for (Class c : classesWithInternalFields) { - HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromClass(c); + HotSpotResolvedObjectType type = HotSpotResolvedObjectType.fromObjectClass(c); for (ResolvedJavaField field : type.getInstanceFields(false)) { if (field.isInternal()) { HotSpotResolvedJavaField expected = (HotSpotResolvedJavaField) field; diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java Sat Oct 25 13:36:07 2014 +0200 @@ -33,7 +33,7 @@ @Test public void testGetSourceFileName() throws Throwable { - Assert.assertEquals("Object.java", HotSpotResolvedObjectType.fromClass(Object.class).getSourceFileName()); - Assert.assertEquals("HotSpotResolvedObjectTypeTest.java", HotSpotResolvedObjectType.fromClass(this.getClass()).getSourceFileName()); + Assert.assertEquals("Object.java", HotSpotResolvedObjectType.fromObjectClass(Object.class).getSourceFileName()); + Assert.assertEquals("HotSpotResolvedObjectTypeTest.java", HotSpotResolvedObjectType.fromObjectClass(this.getClass()).getSourceFileName()); } } diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Sat Oct 25 13:36:07 2014 +0200 @@ -25,6 +25,7 @@ import static com.oracle.graal.compiler.common.GraalOptions.*; import static com.oracle.graal.debug.internal.MemUseTrackerImpl.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.hotspot.meta.HotSpotResolvedObjectType.*; import static com.oracle.graal.nodes.StructuredGraph.*; import java.io.*; @@ -276,7 +277,7 @@ // Pre-load all classes in the constant pool. try { - HotSpotResolvedObjectType objectType = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromClass(javaClass); + HotSpotResolvedObjectType objectType = fromObjectClass(javaClass); ConstantPool constantPool = objectType.constantPool(); for (int cpi = 1; cpi < constantPool.length(); cpi++) { constantPool.loadReferencedType(cpi, Bytecodes.LDC); diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java Sat Oct 25 13:36:07 2014 +0200 @@ -131,7 +131,7 @@ */ private HotSpotResolvedObjectType getHolder() { final long metaspaceKlass = unsafe.getAddress(metaspaceConstantPool + runtime().getConfig().constantPoolHolderOffset); - return (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); + return HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); } /** @@ -462,7 +462,7 @@ String name = getNameRefAt(index); String signature = getSignatureRefAt(index); if (opcode == Bytecodes.INVOKEDYNAMIC) { - JavaType holder = HotSpotResolvedJavaType.fromClass(MethodHandle.class); + HotSpotResolvedObjectType holder = HotSpotResolvedObjectType.fromObjectClass(MethodHandle.class); return new HotSpotMethodUnresolved(name, signature, holder); } else { final int klassIndex = getKlassRefIndexAt(index); @@ -504,7 +504,7 @@ */ return new HotSpotUnresolvedField(holder, name, type); } - HotSpotResolvedObjectType resolvedHolder = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); + HotSpotResolvedObjectType resolvedHolder = HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); final int flags = (int) info[0]; final long offset = info[1]; return resolvedHolder.createField(name, type, offset, flags); @@ -554,7 +554,7 @@ case UnresolvedClass: case UnresolvedClassInError: final long metaspaceKlass = runtime().getCompilerToVM().constantPoolKlassAt(metaspaceConstantPool, index); - HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); + HotSpotResolvedObjectType type = HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); Class klass = type.mirror(); if (!klass.isPrimitive() && !klass.isArray()) { unsafe.ensureClassInitialized(klass); diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Sat Oct 25 13:36:07 2014 +0200 @@ -23,6 +23,8 @@ package com.oracle.graal.hotspot.meta; import static com.oracle.graal.compiler.common.UnsafeAccess.*; +import static com.oracle.graal.hotspot.meta.HotSpotResolvedJavaType.*; +import static com.oracle.graal.hotspot.meta.HotSpotResolvedObjectType.*; import java.lang.reflect.*; @@ -43,19 +45,19 @@ this.runtime = runtime; } - public ResolvedJavaType lookupJavaType(Class clazz) { + public HotSpotResolvedJavaType lookupJavaType(Class clazz) { if (clazz == null) { throw new IllegalArgumentException("Class parameter was null"); } - return HotSpotResolvedObjectType.fromClass(clazz); + return fromClass(clazz); } - public ResolvedJavaType lookupJavaType(Constant constant) { + public HotSpotResolvedObjectType lookupJavaType(Constant constant) { if (constant.isNull() || !(constant instanceof HotSpotObjectConstant)) { return null; } Object o = HotSpotObjectConstant.asObject(constant); - return HotSpotResolvedObjectType.fromClass(o.getClass()); + return fromObjectClass(o.getClass()); } public Signature parseMethodDescriptor(String signature) { @@ -113,11 +115,11 @@ final int modifiers = reflectionField.getModifiers(); final long offset = Modifier.isStatic(modifiers) ? unsafe.staticFieldOffset(reflectionField) : unsafe.objectFieldOffset(reflectionField); - ResolvedJavaType holder = HotSpotResolvedObjectType.fromClass(fieldHolder); - ResolvedJavaType type = HotSpotResolvedObjectType.fromClass(fieldType); + HotSpotResolvedObjectType holder = fromObjectClass(fieldHolder); + HotSpotResolvedJavaType type = fromClass(fieldType); if (offset != -1) { - HotSpotResolvedObjectType resolved = (HotSpotResolvedObjectType) holder; + HotSpotResolvedObjectType resolved = holder; return resolved.createField(name, type, offset, modifiers); } else { throw GraalInternalError.shouldNotReachHere("unresolved field " + reflectionField); @@ -293,7 +295,7 @@ @Override public long getMemorySize(Constant constant) { if (constant.getKind() == Kind.Object) { - HotSpotResolvedObjectType lookupJavaType = (HotSpotResolvedObjectType) this.lookupJavaType(constant); + HotSpotResolvedObjectType lookupJavaType = this.lookupJavaType(constant); if (lookupJavaType == null) { return 0; diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Sat Oct 25 13:36:07 2014 +0200 @@ -492,7 +492,7 @@ outer: for (int i = 0; i < typeProfileWidth; i++) { long receiverKlass = data.readWord(position, getTypeOffset(i)); if (receiverKlass != 0) { - ResolvedJavaType klass = HotSpotResolvedObjectType.fromMetaspaceKlass(receiverKlass); + HotSpotResolvedObjectType klass = HotSpotResolvedObjectType.fromMetaspaceKlass(receiverKlass); long count = data.readUnsignedInt(position, getTypeCountOffset(i)); /* * Because of races in the profile collection machinery it's possible for a diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java Sat Oct 25 13:36:07 2014 +0200 @@ -23,6 +23,8 @@ package com.oracle.graal.hotspot.meta; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.hotspot.meta.HotSpotResolvedJavaType.*; +import static com.oracle.graal.hotspot.meta.HotSpotResolvedObjectType.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.api.replacements.*; @@ -51,7 +53,7 @@ */ private static ResolvedJavaField findFieldInClass(String className, String fieldName) throws ClassNotFoundException { Class clazz = Class.forName(className); - ResolvedJavaType type = HotSpotResolvedObjectType.fromClass(clazz); + ResolvedJavaType type = fromClass(clazz); ResolvedJavaField[] fields = type.getInstanceFields(false); for (ResolvedJavaField field : fields) { if (field.getName().equals(fieldName)) { @@ -63,7 +65,7 @@ private static ResolvedJavaMethod findMethodInClass(String className, String methodName) throws ClassNotFoundException { Class clazz = Class.forName(className); - ResolvedJavaType type = HotSpotResolvedObjectType.fromClass(clazz); + HotSpotResolvedObjectType type = fromObjectClass(clazz); ResolvedJavaMethod result = null; for (ResolvedJavaMethod method : type.getDeclaredMethods()) { if (method.getName().equals(methodName)) { diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Sat Oct 25 13:36:07 2014 +0200 @@ -255,7 +255,7 @@ if (isStatic()) { return false; } - return getDeclaringClass().isAssignableFrom(HotSpotResolvedObjectType.fromClass(object.getClass())); + return getDeclaringClass().isAssignableFrom(HotSpotResolvedObjectType.fromObjectClass(object.getClass())); } @Override diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Sat Oct 25 13:36:07 2014 +0200 @@ -70,7 +70,7 @@ final long metaspaceConstMethod = unsafe.getAddress(metaspaceMethod + config.methodConstMethodOffset); final long metaspaceConstantPool = unsafe.getAddress(metaspaceConstMethod + config.constMethodConstantsOffset); final long metaspaceKlass = unsafe.getAddress(metaspaceConstantPool + config.constantPoolHolderOffset); - return (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); + return HotSpotResolvedObjectType.fromMetaspaceKlass(metaspaceKlass); } /** diff -r 44dab78fe6bb -r 2bf5ea10eea7 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 Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Sat Oct 25 13:36:07 2014 +0200 @@ -32,11 +32,11 @@ /** * Gets the Graal mirror for a {@link Class} object. - * + * * @return the {@link HotSpotResolvedJavaType} corresponding to {@code javaClass} */ - public static ResolvedJavaType fromClass(Class javaClass) { - return runtime().fromClass(javaClass); + public static HotSpotResolvedJavaType fromClass(Class javaClass) { + return (HotSpotResolvedJavaType) runtime().fromClass(javaClass); } public HotSpotResolvedJavaType(String name) { diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Sat Oct 25 13:36:07 2014 +0200 @@ -50,17 +50,26 @@ private HashMap fieldCache; private HashMap methodCache; private HotSpotResolvedJavaField[] instanceFields; - private ResolvedJavaType[] interfaces; + private HotSpotResolvedObjectType[] interfaces; private ConstantPool constantPool; - private ResolvedJavaType arrayOfType; + private HotSpotResolvedObjectType arrayOfType; + + /** + * Gets the Graal mirror for a {@link Class} object. + * + * @return the {@link HotSpotResolvedJavaType} corresponding to {@code javaClass} + */ + public static HotSpotResolvedObjectType fromObjectClass(Class javaClass) { + return (HotSpotResolvedObjectType) runtime().fromClass(javaClass); + } /** * Gets the Graal mirror from a HotSpot metaspace Klass native object. * * @param metaspaceKlass a metaspace Klass object boxed in a {@link Constant} - * @return the {@link ResolvedJavaType} corresponding to {@code klassConstant} + * @return the {@link HotSpotResolvedObjectType} corresponding to {@code klassConstant} */ - public static ResolvedJavaType fromMetaspaceKlass(Constant metaspaceKlass) { + public static HotSpotResolvedObjectType fromMetaspaceKlass(Constant metaspaceKlass) { assert metaspaceKlass.getKind() == Kind.Long; return fromMetaspaceKlass(metaspaceKlass.asLong()); } @@ -71,11 +80,11 @@ * @param metaspaceKlass a metaspace Klass object * @return the {@link ResolvedJavaType} corresponding to {@code metaspaceKlass} */ - public static ResolvedJavaType fromMetaspaceKlass(long metaspaceKlass) { + public static HotSpotResolvedObjectType fromMetaspaceKlass(long metaspaceKlass) { assert metaspaceKlass != 0; Class javaClass = runtime().getCompilerToVM().getJavaMirror(metaspaceKlass); assert javaClass != null; - return fromClass(javaClass); + return fromObjectClass(javaClass); } /** @@ -83,8 +92,8 @@ * *

* NOTE: Creating an instance of this class does not install the mirror for the - * {@link Class} type. Use {@link #fromClass(Class)}, {@link #fromMetaspaceKlass(Constant)} or - * {@link #fromMetaspaceKlass(long)} instead. + * {@link Class} type. Use {@link #fromObjectClass(Class)}, + * {@link #fromMetaspaceKlass(Constant)} or {@link #fromMetaspaceKlass(long)} instead. *

* * @param javaClass the Class to create the mirror for @@ -125,7 +134,7 @@ @Override public ResolvedJavaType getArrayClass() { if (arrayOfType == null) { - arrayOfType = fromClass(Array.newInstance(mirror(), 0).getClass()); + arrayOfType = fromObjectClass(Array.newInstance(mirror(), 0).getClass()); } return arrayOfType; } @@ -149,7 +158,7 @@ return null; } - HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) fromMetaspaceKlass(implementorMetaspaceKlass); + HotSpotResolvedObjectType type = fromMetaspaceKlass(implementorMetaspaceKlass); /* * If the implementor field contains itself that indicates that the interface has more @@ -167,7 +176,7 @@ if (subklass == 0 || unsafeReadWord(subklass + config.nextSiblingOffset) != 0) { return null; } - type = (HotSpotResolvedObjectType) fromMetaspaceKlass(subklass); + type = fromMetaspaceKlass(subklass); } if (type.isAbstract() || type.isInterface() || !type.isLeafClass()) { return null; @@ -199,16 +208,16 @@ @Override public HotSpotResolvedObjectType getSuperclass() { Class javaSuperclass = mirror().getSuperclass(); - return javaSuperclass == null ? null : (HotSpotResolvedObjectType) fromClass(javaSuperclass); + return javaSuperclass == null ? null : (HotSpotResolvedObjectType) fromObjectClass(javaSuperclass); } @Override - public ResolvedJavaType[] getInterfaces() { + public HotSpotResolvedObjectType[] getInterfaces() { if (interfaces == null) { Class[] javaInterfaces = mirror().getInterfaces(); - ResolvedJavaType[] result = new ResolvedJavaType[javaInterfaces.length]; + HotSpotResolvedObjectType[] result = new HotSpotResolvedObjectType[javaInterfaces.length]; for (int i = 0; i < javaInterfaces.length; i++) { - result[i] = fromClass(javaInterfaces[i]); + result[i] = fromObjectClass(javaInterfaces[i]); } interfaces = result; } @@ -219,12 +228,12 @@ if (isArray()) { ResolvedJavaType componentType = getComponentType(); if (mirror() == Object[].class || componentType.isPrimitive()) { - return (HotSpotResolvedObjectType) fromClass(Object.class); + return fromObjectClass(Object.class); } return (HotSpotResolvedObjectType) ((HotSpotResolvedObjectType) componentType).getSupertype().getArrayClass(); } if (isInterface()) { - return (HotSpotResolvedObjectType) fromClass(Object.class); + return fromObjectClass(Object.class); } return getSuperclass(); } @@ -809,9 +818,9 @@ } @Override - public ResolvedJavaType getEnclosingType() { + public HotSpotResolvedObjectType getEnclosingType() { final Class encl = mirror().getEnclosingClass(); - return encl == null ? null : fromClass(encl); + return encl == null ? null : fromObjectClass(encl); } @Override @@ -854,7 +863,7 @@ return "HotSpotType<" + getName() + ", resolved>"; } - private static final ResolvedJavaType trustedInterfaceType = fromClass(TrustedInterface.class); + private static final HotSpotResolvedObjectType trustedInterfaceType = fromObjectClass(TrustedInterface.class); @Override public boolean isTrustedInterfaceType() { diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Sat Oct 25 13:36:07 2014 +0200 @@ -71,12 +71,12 @@ } @Override - public ResolvedJavaType getArrayClass() { + public HotSpotResolvedObjectType getArrayClass() { if (kind == Kind.Void) { return null; } Class javaArrayMirror = Array.newInstance(mirror(), 0).getClass(); - return HotSpotResolvedObjectType.fromClass(javaArrayMirror); + return HotSpotResolvedObjectType.fromObjectClass(javaArrayMirror); } public ResolvedJavaType getElementalType() { diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Sat Oct 25 13:36:07 2014 +0200 @@ -67,7 +67,7 @@ if (forJavaClass.isConstant()) { Class c = (Class) HotSpotObjectConstant.asObject(forJavaClass.asConstant()); if (c != null && !c.isPrimitive()) { - HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromClass(c); + HotSpotResolvedObjectType type = HotSpotResolvedObjectType.fromObjectClass(c); return CheckCastNode.create(type, forObject, null, false); } } diff -r 44dab78fe6bb -r 2bf5ea10eea7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java Fri Oct 24 22:53:42 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java Sat Oct 25 13:36:07 2014 +0200 @@ -70,7 +70,7 @@ Object o = HotSpotObjectConstant.asObject(object.asConstant()); return ConstantNode.forBoolean(o != null && c.isInstance(o)); } - HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) HotSpotResolvedObjectType.fromClass(c); + HotSpotResolvedObjectType type = HotSpotResolvedObjectType.fromObjectClass(c); InstanceOfNode instanceOf = InstanceOfNode.create(type, object, null); return ConditionalNode.create(instanceOf, ConstantNode.forBoolean(true), ConstantNode.forBoolean(false)); }