# HG changeset patch # User Doug Simon # Date 1415276656 -3600 # Node ID ecf3de366ecc2726a9e8acc49044f24123bca705 # Parent cffcb119fdbae9f5a5f44e6084d624967b2f1244 added HotSpotObjectConstant.getIdentityHashCode() diff -r cffcb119fdba -r ecf3de366ecc 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:22:00 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Thu Nov 06 13:24:16 2014 +0100 @@ -40,5 +40,13 @@ * * @return {@code null} if this constant does not represent a {@link Class} object */ + @PureFunction JavaConstant getClassLoader(); + + /** + * Gets the {@linkplain System#identityHashCode(Object) identity} has code for the object + * represented by this constant. + */ + @PureFunction + int getIdentityHashCode(); } diff -r cffcb119fdba -r ecf3de366ecc 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:22:00 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Thu Nov 06 13:24:16 2014 +0100 @@ -105,6 +105,10 @@ return null; } + public int getIdentityHashCode() { + return System.identityHashCode(object); + } + @Override public boolean isNull() { return false; diff -r cffcb119fdba -r ecf3de366ecc graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Thu Nov 06 13:22:00 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Thu Nov 06 13:24:16 2014 +0100 @@ -43,6 +43,10 @@ @Override protected JavaConstant evaluate(JavaConstant param, MetaAccessProvider metaAccess) { - return ImmutableCode.getValue() || param.isNull() ? null : JavaConstant.forInt(System.identityHashCode(HotSpotObjectConstantImpl.asObject(param))); + if (ImmutableCode.getValue() || param.isNull()) { + return null; + } + HotSpotObjectConstant c = (HotSpotObjectConstant) param; + return JavaConstant.forInt(c.getIdentityHashCode()); } }