# HG changeset patch # User Gary Benson # Date 1301321005 -3600 # Node ID 67e51ee24c470f5ab5ca32be809eae07ae67f59d # Parent 1abb3242446174dabc06d332792dc84c843323ea More (kills Zero!) diff -r 1abb32424461 -r 67e51ee24c47 test/java/dyn/MethodHandlePrinter.java --- 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; } }