changeset 18499:bd74da0a76f3

implemented toString() for classes that throw UnsupportedError for hashCode()
author Doug Simon <doug.simon@oracle.com>
date Tue, 25 Nov 2014 13:03:08 +0100
parents a65cbe5432dd
children 5c5afd2c6bb3
files graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java
diffstat 5 files changed, 54 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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;
--- 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;
--- 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);
     }
--- 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);
+    }
 }