From 25f3a34a0c1e2db9b34f00afdbfb2d15d89e6418 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Tue, 5 Aug 2014 15:40:19 -0700 Subject: [PATCH] Add toString to BootstrapMethods in BCEL --- .../bcel/classfile/BootstrapMethods.java | 72 ++++++++++++------ .../bcel/classfile/ConstantMethodHandle.java | 32 +++++--- lib/bcel/bcel-src.zip | Bin 326310 -> 326548 bytes lib/bcel/bcel-verifier.jar | Bin 161556 -> 161556 bytes lib/bcel/bcel.jar | Bin 285458 -> 286993 bytes 5 files changed, 67 insertions(+), 37 deletions(-) diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/BootstrapMethods.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/BootstrapMethods.java index 04b1c764b..b4638bc29 100644 --- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/BootstrapMethods.java +++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/BootstrapMethods.java @@ -120,6 +120,14 @@ public final class BootstrapMethods extends Attribute { this.bootstrapMethodRef = bootstrapMethodRef; this.bootstrapArguments = bootstrapArguments; } + + public int getBootstrapMethodRef() { + return bootstrapMethodRef; + } + + public int[] getBootstrapArguments() { + return bootstrapArguments; + } public final void dump(DataOutputStream file) throws IOException { file.writeShort(bootstrapMethodRef); @@ -129,6 +137,7 @@ public final class BootstrapMethods extends Attribute { file.writeShort(bootstrapArguments[i]); } } + } // Unpacks the byte array into the table @@ -137,9 +146,9 @@ public final class BootstrapMethods extends Attribute { try { ByteArrayInputStream bs = new ByteArrayInputStream(data); DataInputStream dis = new DataInputStream(bs); - int bootstrapMethodCount = dis.readUnsignedShort(); - bootstrapMethods = new BootstrapMethod[bootstrapMethodCount]; - for (int i = 0; i < bootstrapMethodCount; i++) { + numBootstrapMethods = dis.readUnsignedShort(); + bootstrapMethods = new BootstrapMethod[numBootstrapMethods]; + for (int i = 0; i < numBootstrapMethods; i++) { bootstrapMethods[i] = new BootstrapMethod(dis); } dis.close(); @@ -194,28 +203,41 @@ public final class BootstrapMethods extends Attribute { */ @Override public final String toString() { - throw new IllegalStateException("nyi"); -// unpack(); -// StringBuffer buf = new StringBuffer(); -// StringBuffer line = new StringBuffer(); -// -// for (int i = 0; i < bootstrapMethodCount; i++) { -// line.append(table[i].toString()); -// -// if (i < bootstrapMethodCount - 1) { -// line.append(", "); -// } -// -// if (line.length() > 72) { -// line.append('\n'); -// buf.append(line); -// line.setLength(0); -// } -// } -// -// buf.append(line); -// -// return buf.toString(); + unpack(); + StringBuffer buf = new StringBuffer(); + StringBuffer line = new StringBuffer(); + + for (int i = 0; i < numBootstrapMethods; i++) { + BootstrapMethod bm = bootstrapMethods[i]; + line.append("BootstrapMethod[").append(i).append("]:"); + int ref = bm.getBootstrapMethodRef(); + ConstantMethodHandle mh = (ConstantMethodHandle)getConstantPool().getConstant(ref); + line.append("#"+ref+":"); + line.append(ConstantMethodHandle.kindToString(mh.getReferenceKind())); + line.append(" ").append(getConstantPool().getConstant(mh.getReferenceIndex())); + int [] args = bm.getBootstrapArguments(); + line.append(" argcount:").append(args==null?0:args.length).append(" "); + if (args!=null) { + for (int a=0;a 72) { + line.append('\n'); + buf.append(line); + line.setLength(0); + } + } + + buf.append(line); + + return buf.toString(); } diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.java index fe5623f33..712a13f4c 100644 --- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.java +++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.java @@ -93,18 +93,10 @@ public final class ConstantMethodHandle extends Constant { public final byte getReferenceKind() { return referenceKind; } - -// public final String getName(ConstantPool cp) { -// return cp.constantToString(getNameIndex(), Constants.CONSTANT_Utf8); -// } -// -// public final int getSignatureIndex() { -// return referenceIndex; -// } -// -// public final String getSignature(ConstantPool cp) { -// return cp.constantToString(getSignatureIndex(), Constants.CONSTANT_Utf8); -// } + + public final int getReferenceIndex() { + return referenceIndex; + } @Override public final String toString() { @@ -121,4 +113,20 @@ public final class ConstantMethodHandle extends Constant { v.visitConstantMethodHandle(this); } + public static String kindToString(byte kind) { + switch (kind) { + case 1: return "getfield"; + case 2: return "getstatic"; + case 3: return "putfield"; + case 4: return "putstatic"; + case 5: return "invokevirtual"; + case 6: return "invokestatic"; + case 7: return "invokespecial"; + case 8: return "newinvokespecial"; + case 9: return "invokeinterface"; + default: + return "nyi"; + } + } + } diff --git a/lib/bcel/bcel-src.zip b/lib/bcel/bcel-src.zip index d6745a98128d36b854dc83ffd136c141a8219706..7b2259ed01c9ff734ed7bc0896a9217d05b201c4 100644 GIT binary patch delta 7028 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 T#FQn75`-t%0wr;RdmZtA&d>@~ delta 13140 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 -- 2.39.5