changeset 43:67e51ee24c47

More (kills Zero!)
author Gary Benson <gbenson@redhat.com>
date Mon, 28 Mar 2011 15:03:25 +0100
parents 1abb32424461
children 0ca449acee7d
files test/java/dyn/MethodHandlePrinter.java
diffstat 1 files changed, 25 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/test/java/dyn/MethodHandlePrinter.java	Mon Mar 28 14:58:39 2011 +0100
+++ b/test/java/dyn/MethodHandlePrinter.java	Mon Mar 28 15:03:25 2011 +0100
@@ -17,18 +17,29 @@
         builder.append(indent);
         builder.append(klass.getName());
         builder.append(" {\n");
-        formatFields(builder, obj, klass, indent + "  ");
+        Object vmtarget = formatFields(builder, obj, klass, indent + "  ");
         builder.append(indent);
         builder.append("}");
+        if (vmtarget != null) {
+            builder.append(", ");
+            formatObject(builder, vmtarget, indent);
+        }
     }
 
-    private static void formatFields(StringBuilder builder,
-                                     Object obj,
-                                     Class klass,
-                                     String indent) {
+    private static Object formatFields(StringBuilder builder,
+                                       Object obj,
+                                       Class klass,
+                                       String indent) {
+        Object vmtarget = null;
+
         Class parent = klass.getSuperclass();
         if (parent != Object.class) {
-            formatFields(builder, obj, parent, indent);
+            Object result = formatFields(builder, obj, parent, indent);
+            if (result != null) {
+                if (vmtarget != null)
+                    throw new RuntimeException();
+                vmtarget = result;
+            }
             builder.append("\n");
         }
         
@@ -48,6 +59,12 @@
                 throw new RuntimeException(e);
             }
 
+            if (name.equals("vmtarget")) {
+                if (vmtarget != null)
+                    throw new RuntimeException();
+                vmtarget = value;
+            }
+
             Class type = field.getType();
             String typeName = type.getName();
 
@@ -59,6 +76,8 @@
             builder.append(value);
 
             builder.append('\n');
+
         }
+        return vmtarget;
     }
 }