# HG changeset patch # User Doug Simon # Date 1415278081 -3600 # Node ID 420161aee8400cd57743631b8fd998bfb50f7a63 # Parent 29ba2a7cdfcb77c44e07343963bccb181e11568c added HotSpotObjectConstant.getSuperclass() diff -r 29ba2a7cdfcb -r 420161aee840 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Thu Nov 06 13:28:35 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Thu Nov 06 13:48:01 2014 +0100 @@ -66,4 +66,12 @@ * @return {@code null} if this constant does not represent a {@link Class} object */ JavaConstant getComponentType(); + + /** + * Gets the result of {@link Class#getSuperclass()} for the {@link Class} object represented by + * this constant. + * + * @return {@code null} if this constant does not represent a {@link Class} object + */ + JavaConstant getSuperclass(); } diff -r 29ba2a7cdfcb -r 420161aee840 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Thu Nov 06 13:28:35 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Thu Nov 06 13:48:01 2014 +0100 @@ -124,6 +124,13 @@ return null; } + public JavaConstant getSuperclass() { + if (object instanceof Class) { + return HotSpotObjectConstantImpl.forObject(((Class) object).getSuperclass()); + } + return null; + } + @Override public boolean isNull() { return false; diff -r 29ba2a7cdfcb -r 420161aee840 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Thu Nov 06 13:28:35 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Thu Nov 06 13:48:01 2014 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.hotspot.meta.*; @@ -54,10 +55,10 @@ public Node canonical(CanonicalizerTool tool) { ValueNode javaClass = getJavaClass(); if (javaClass.isConstant()) { - Class c = (Class) HotSpotObjectConstantImpl.asObject(javaClass.asJavaConstant()); - if (c != null) { - Class superclass = c.getSuperclass(); - return ConstantNode.forConstant(HotSpotObjectConstantImpl.forObject(superclass), tool.getMetaAccess()); + HotSpotObjectConstant c = (HotSpotObjectConstant) javaClass.asJavaConstant(); + JavaConstant superclass = c.getSuperclass(); + if (superclass != null) { + return ConstantNode.forConstant(superclass, tool.getMetaAccess()); } } return this;