Mercurial > hg > shark
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; } }