Mercurial > hg > graal-compiler
changeset 18287:b7461f7fa8a0
added HotSpotObjectConstant.getCompositeValueClass()
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 06 Nov 2014 13:55:47 +0100 |
parents | ffcbc50063a3 |
children | feef9ed5fc56 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java |
diffstat | 3 files changed, 21 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Thu Nov 06 13:50:10 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Thu Nov 06 13:55:47 2014 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; +import com.oracle.graal.lir.*; /** * Represents a constant non-{@code null} object reference, within the compiler and across the @@ -88,4 +89,11 @@ */ JavaConstant getCallSiteTarget(Assumptions assumptions); + /** + * Gets the result of {@link CompositeValueClass#get(Class)} for the {@link Class} object + * represented by this constant. + * + * @return {@code null} if this constant does not represent a {@link Class} object + */ + JavaConstant getCompositeValueClass(); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Thu Nov 06 13:50:10 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Thu Nov 06 13:55:47 2014 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; +import com.oracle.graal.lir.*; /** * Represents a constant non-{@code null} object reference, within the compiler and across the @@ -149,6 +150,16 @@ return null; } + @SuppressWarnings("unchecked") + public JavaConstant getCompositeValueClass() { + if (object instanceof Class) { + Class<? extends CompositeValue> c = (Class<? extends CompositeValue>) object; + assert CompositeValueClass.class.isAssignableFrom(c); + return HotSpotObjectConstantImpl.forObject(CompositeValueClass.get(c)); + } + return null; + } + @Override public boolean isNull() { return false;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Thu Nov 06 13:50:10 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Thu Nov 06 13:55:47 2014 +0100 @@ -55,13 +55,13 @@ super(invoke); } - @SuppressWarnings("unchecked") @Override protected JavaConstant evaluate(JavaConstant param, MetaAccessProvider metaAccess) { if (param.isNull() || ImmutableCode.getValue()) { return null; } - return HotSpotObjectConstantImpl.forObject(CompositeValueClass.get((Class<? extends CompositeValue>) HotSpotObjectConstantImpl.asObject(param))); + HotSpotObjectConstant c = (HotSpotObjectConstant) param; + return c.getCompositeValueClass(); } }