changeset 22337:4f3eda22dbe9

make GraphPrintVisitor resilient against toString() methods that throw
author Andreas Woess <andreas.woess@oracle.com>
date Mon, 02 Nov 2015 16:34:22 +0100
parents 5e37933270b0
children 15c9dda91e50
files truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java	Mon Oct 19 18:27:52 2015 +0200
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java	Mon Nov 02 16:34:22 2015 +0100
@@ -319,7 +319,7 @@
             for (Map.Entry<String, Object> property : node.getProperties().entrySet()) {
                 xmlstream.writeStartElement("p");
                 xmlstream.writeAttribute("name", property.getKey());
-                xmlstream.writeCharacters(String.valueOf(property.getValue()));
+                xmlstream.writeCharacters(safeToString(property.getValue()));
                 xmlstream.writeEndElement(); // p
             }
             xmlstream.writeEndElement(); // properties
@@ -541,6 +541,14 @@
         return nodes;
     }
 
+    private static String safeToString(Object value) {
+        try {
+            return String.valueOf(value);
+        } catch (Throwable ex) {
+            return value.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(value));
+        }
+    }
+
     public class GraphPrintAdapter {
 
         public void createElementForNode(Object node) {