# HG changeset patch # User Doug Simon # Date 1416916988 -3600 # Node ID bd74da0a76f3a782f3d27ddab1d69176b1e8bf44 # Parent a65cbe5432dd5e057b3aac7386a6af2e04368194 implemented toString() for classes that throw UnsupportedError for hashCode() diff -r a65cbe5432dd -r bd74da0a76f3 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Mon Nov 24 23:29:13 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Tue Nov 25 13:03:08 2014 +0100 @@ -22,6 +22,8 @@ */ package com.oracle.graal.api.code; +import static com.oracle.graal.api.meta.MetaUtil.*; + import java.io.*; import java.lang.invoke.*; import java.util.*; @@ -280,6 +282,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff -r a65cbe5432dd -r bd74da0a76f3 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Mon Nov 24 23:29:13 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Tue Nov 25 13:03:08 2014 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.api.code; +import static com.oracle.graal.api.meta.MetaUtil.*; import static java.util.Collections.*; import java.io.*; @@ -59,6 +60,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public abstract boolean equals(Object obj); } @@ -316,6 +322,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public abstract boolean equals(Object obj); } @@ -528,6 +539,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff -r a65cbe5432dd -r bd74da0a76f3 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java Mon Nov 24 23:29:13 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java Tue Nov 25 13:03:08 2014 +0100 @@ -22,6 +22,8 @@ */ package com.oracle.graal.api.code; +import static com.oracle.graal.api.meta.MetaUtil.*; + import java.io.*; import java.nio.*; import java.util.*; @@ -139,6 +141,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public boolean equals(Object obj) { assert ref != null; if (obj == this) { @@ -167,6 +174,11 @@ } @Override + public String toString() { + return identityHashCodeString(this); + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff -r a65cbe5432dd -r bd74da0a76f3 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java Mon Nov 24 23:29:13 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java Tue Nov 25 13:03:08 2014 +0100 @@ -22,6 +22,8 @@ */ package com.oracle.graal.api.code; +import static com.oracle.graal.api.meta.MetaUtil.*; + import com.oracle.graal.api.meta.*; /** @@ -109,6 +111,11 @@ return false; } + @Override + public String toString() { + return identityHashCodeString(this); + } + public int getSizeInBytes(PlatformKind kind) { return arch.getSizeInBytes(kind); } diff -r a65cbe5432dd -r bd74da0a76f3 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java Mon Nov 24 23:29:13 2014 +0100 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java Tue Nov 25 13:03:08 2014 +0100 @@ -326,4 +326,16 @@ } return indentation + lines.replace(newLine, newLine + indentation); } + + /** + * Gets a string representation of an object based soley on its class and its + * {@linkplain System#identityHashCode(Object) identity hash code}. This avoids and calls to + * virtual methods on the object such as {@link Object#hashCode()}. + */ + public static String identityHashCodeString(Object obj) { + if (obj == null) { + return "null"; + } + return obj.getClass().getName() + "@" + System.identityHashCode(obj); + } }