Repository: tapestry-5 Updated Branches: refs/heads/master a05f96186 -> 363f61756
update ASM to 5.0.4 Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/363f6175 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/363f6175 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/363f6175 Branch: refs/heads/master Commit: 363f6175602adc23ec0454433daa0a1ff9dd057a Parents: a05f961 Author: Jochen Kemnade <[email protected]> Authored: Wed Aug 12 13:14:44 2015 +0200 Committer: Jochen Kemnade <[email protected]> Committed: Wed Aug 12 13:14:44 2015 +0200 ---------------------------------------------------------------------- .../internal/plastic/asm/ClassReader.java | 32 ++++++++----- .../internal/plastic/asm/ClassWriter.java | 2 +- .../tapestry5/internal/plastic/asm/Frame.java | 18 +++++--- .../tapestry5/internal/plastic/asm/Item.java | 4 +- .../tapestry5/internal/plastic/asm/Label.java | 11 +++-- .../internal/plastic/asm/MethodVisitor.java | 19 ++++---- .../internal/plastic/asm/MethodWriter.java | 40 ++++++++-------- .../tapestry5/internal/plastic/asm/Type.java | 6 +-- .../internal/plastic/asm/TypePath.java | 7 ++- .../internal/plastic/asm/attrs/package.html | 48 -------------------- .../plastic/asm/commons/AdviceAdapter.java | 2 +- .../plastic/asm/commons/GeneratorAdapter.java | 14 +++--- .../plastic/asm/commons/InstructionAdapter.java | 8 ++-- .../internal/plastic/asm/commons/Method.java | 4 +- .../internal/plastic/asm/commons/Remapper.java | 12 ++--- .../asm/commons/SerialVersionUIDAdder.java | 3 +- .../plastic/asm/commons/SimpleRemapper.java | 8 +++- .../plastic/asm/optimizer/Constant.java | 8 ++-- .../plastic/asm/optimizer/ConstantPool.java | 2 + .../plastic/asm/optimizer/MethodOptimizer.java | 42 +++++++++++++++++ .../plastic/asm/optimizer/Shrinker.java | 17 ++++--- .../plastic/asm/optimizer/shrink.properties | 1 + .../plastic/asm/signature/SignatureVisitor.java | 2 +- .../plastic/asm/tree/AbstractInsnNode.java | 4 +- .../plastic/asm/tree/AnnotationNode.java | 24 +++++----- .../internal/plastic/asm/tree/ClassNode.java | 16 +++---- .../internal/plastic/asm/tree/FieldNode.java | 10 ++-- .../internal/plastic/asm/tree/InsnList.java | 1 + .../plastic/asm/tree/LookupSwitchInsnNode.java | 2 +- .../plastic/asm/tree/MethodInsnNode.java | 1 + .../internal/plastic/asm/tree/MethodNode.java | 26 ++++++----- .../plastic/asm/tree/TryCatchBlockNode.java | 4 +- .../plastic/asm/tree/analysis/Analyzer.java | 1 + .../asm/tree/analysis/AnalyzerException.java | 1 + .../plastic/asm/tree/analysis/Frame.java | 11 +++-- .../internal/plastic/asm/util/ASMifier.java | 3 +- .../plastic/asm/util/CheckClassAdapter.java | 22 ++++----- .../plastic/asm/util/CheckMethodAdapter.java | 2 +- .../internal/plastic/asm/util/Textifier.java | 4 +- .../plastic/asm/xml/ASMContentHandler.java | 11 ++++- .../plastic/asm/xml/SAXAnnotationAdapter.java | 14 +++--- 41 files changed, 256 insertions(+), 211 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassReader.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassReader.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassReader.java index 4b9c65e..c334984 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassReader.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassReader.java @@ -1170,7 +1170,14 @@ public class ClassReader { if (labels[label] == null) { readLabel(label, labels).status |= Label.DEBUG; } - labels[label].line = readUnsignedShort(v + 12); + Label l = labels[label]; + while (l.line > 0) { + if (l.next == null) { + l.next = new Label(); + } + l = l.next; + } + l.line = readUnsignedShort(v + 12); v += 4; } } @@ -1285,9 +1292,15 @@ public class ClassReader { // visits the label and line number for this offset, if any Label l = labels[offset]; if (l != null) { + Label next = l.next; + l.next = null; mv.visitLabel(l); if ((context.flags & SKIP_DEBUG) == 0 && l.line > 0) { mv.visitLineNumber(l.line, l); + while (next != null) { + mv.visitLineNumber(next.line, l); + next = next.next; + } } } @@ -1828,8 +1841,7 @@ public class ClassReader { v += 2; break; case 'B': // pointer to CONSTANT_Byte - av.visit(name, - new Byte((byte) readInt(items[readUnsignedShort(v)]))); + av.visit(name, (byte) readInt(items[readUnsignedShort(v)])); v += 2; break; case 'Z': // pointer to CONSTANT_Boolean @@ -1839,13 +1851,11 @@ public class ClassReader { v += 2; break; case 'S': // pointer to CONSTANT_Short - av.visit(name, new Short( - (short) readInt(items[readUnsignedShort(v)]))); + av.visit(name, (short) readInt(items[readUnsignedShort(v)])); v += 2; break; case 'C': // pointer to CONSTANT_Char - av.visit(name, new Character( - (char) readInt(items[readUnsignedShort(v)]))); + av.visit(name, (char) readInt(items[readUnsignedShort(v)])); v += 2; break; case 's': // pointer to CONSTANT_Utf8 @@ -2469,13 +2479,13 @@ public class ClassReader { int index = items[item]; switch (b[index - 1]) { case ClassWriter.INT: - return new Integer(readInt(index)); + return readInt(index); case ClassWriter.FLOAT: - return new Float(Float.intBitsToFloat(readInt(index))); + return Float.intBitsToFloat(readInt(index)); case ClassWriter.LONG: - return new Long(readLong(index)); + return readLong(index); case ClassWriter.DOUBLE: - return new Double(Double.longBitsToDouble(readLong(index))); + return Double.longBitsToDouble(readLong(index)); case ClassWriter.CLASS: return Type.getObjectType(readUTF8(index, buf)); case ClassWriter.STR: http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassWriter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassWriter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassWriter.java index 6cd89a5..da87f36 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassWriter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/ClassWriter.java @@ -756,7 +756,7 @@ public class ClassWriter extends ClassVisitor { if (innerClasses == null) { innerClasses = new ByteVector(); } - // �4.7.6 of the JVMS states "Every CONSTANT_Class_info entry in the + // Sec. 4.7.6 of the JVMS states "Every CONSTANT_Class_info entry in the // constant_pool table which represents a class or interface C that is // not a package member must have exactly one corresponding entry in the // classes array". To avoid duplicates we keep track in the intVal field http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Frame.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Frame.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Frame.java index 5aa3aff..e0aa35c 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Frame.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Frame.java @@ -1426,16 +1426,20 @@ final class Frame { | cw.getMergedType(t & BASE_VALUE, u & BASE_VALUE); } else { // if u and t are array types, but not with the same element - // type, merge(u,t)=java/lang/Object - v = OBJECT | cw.addType("java/lang/Object"); + // type, merge(u,t) = dim(u) - 1 | java/lang/Object + int vdim = ELEMENT_OF + (u & DIM); + v = vdim | OBJECT | cw.addType("java/lang/Object"); } } else if ((t & BASE_KIND) == OBJECT || (t & DIM) != 0) { // if t is any other reference or array type, the merged type - // is Object, or min(dim(u), dim(t)) | java/lang/Object is u - // and t have different array dimensions - int tdim = t & DIM; - int udim = u & DIM; - v = (udim != tdim ? Math.min(tdim, udim) : 0) | OBJECT + // is min(udim, tdim) | java/lang/Object, where udim is the + // array dimension of u, minus 1 if u is an array type with a + // primitive element type (and similarly for tdim). + int tdim = (((t & DIM) == 0 || (t & BASE_KIND) == OBJECT) ? 0 + : ELEMENT_OF) + (t & DIM); + int udim = (((u & DIM) == 0 || (u & BASE_KIND) == OBJECT) ? 0 + : ELEMENT_OF) + (u & DIM); + v = Math.min(tdim, udim) | OBJECT | cw.addType("java/lang/Object"); } else { // if t is any other type, merge(u,t)=TOP http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Item.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Item.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Item.java index fa4f454..037a45a 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Item.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Item.java @@ -201,6 +201,7 @@ final class Item { * @param strVal3 * third part of the value of this item. */ + @SuppressWarnings("fallthrough") void set(final int type, final String strVal1, final String strVal2, final String strVal3) { this.type = type; @@ -208,9 +209,10 @@ final class Item { this.strVal2 = strVal2; this.strVal3 = strVal3; switch (type) { + case ClassWriter.CLASS: + this.intVal = 0; // intVal of a class must be zero, see visitInnerClass case ClassWriter.UTF8: case ClassWriter.STR: - case ClassWriter.CLASS: case ClassWriter.MTYPE: case ClassWriter.TYPE_NORMAL: hashCode = 0x7FFFFFFF & (type + strVal1.hashCode()); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Label.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Label.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Label.java index c0bbe7e..c135dac 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Label.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Label.java @@ -131,7 +131,11 @@ public class Label { int status; /** - * The line number corresponding to this label, if known. + * The line number corresponding to this label, if known. If there are + * several lines, each line is stored in a separate label, all linked via + * their next field (these links are created in ClassReader and removed just + * before visitLabel is called, so that this does not impact the rest of the + * code). */ int line; @@ -239,7 +243,8 @@ public class Label { * The next basic block in the basic block stack. This stack is used in the * main loop of the fix point algorithm used in the second step of the * control flow analysis algorithms. It is also used in - * {@link #visitSubroutine} to avoid using a recursive method. + * {@link #visitSubroutine} to avoid using a recursive method, and in + * ClassReader to temporarily store multiple source lines for a label. * * @see MethodWriter#visitMaxs */ @@ -473,7 +478,7 @@ public class Label { void addToSubroutine(final long id, final int nbSubroutines) { if ((status & VISITED) == 0) { status |= VISITED; - srcAndRefPositions = new int[(nbSubroutines - 1) / 32 + 1]; + srcAndRefPositions = new int[nbSubroutines / 32 + 1]; } srcAndRefPositions[(int) (id >>> 32)] |= (int) id; } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodVisitor.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodVisitor.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodVisitor.java index 4585e67..6de577a 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodVisitor.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodVisitor.java @@ -33,15 +33,16 @@ package org.apache.tapestry5.internal.plastic.asm; * A visitor to visit a Java method. The methods of this class must be called in * the following order: ( <tt>visitParameter</tt> )* [ * <tt>visitAnnotationDefault</tt> ] ( <tt>visitAnnotation</tt> | - * <tt>visitTypeAnnotation</tt> | <tt>visitAttribute</tt> )* [ - * <tt>visitCode</tt> ( <tt>visitFrame</tt> | <tt>visit<i>X</i>Insn</tt> | - * <tt>visitLabel</tt> | <tt>visitInsnAnnotation</tt> | - * <tt>visitTryCatchBlock</tt> | <tt>visitTryCatchBlockAnnotation</tt> | - * <tt>visitLocalVariable</tt> | <tt>visitLocalVariableAnnotation</tt> | - * <tt>visitLineNumber</tt> )* <tt>visitMaxs</tt> ] <tt>visitEnd</tt>. In - * addition, the <tt>visit<i>X</i>Insn</tt> and <tt>visitLabel</tt> methods must - * be called in the sequential order of the bytecode instructions of the visited - * code, <tt>visitInsnAnnotation</tt> must be called <i>after</i> the annotated + * <tt>visitParameterAnnotation</tt> <tt>visitTypeAnnotation</tt> | + * <tt>visitAttribute</tt> )* [ <tt>visitCode</tt> ( <tt>visitFrame</tt> | + * <tt>visit<i>X</i>Insn</tt> | <tt>visitLabel</tt> | + * <tt>visitInsnAnnotation</tt> | <tt>visitTryCatchBlock</tt> | + * <tt>visitTryCatchAnnotation</tt> | <tt>visitLocalVariable</tt> | + * <tt>visitLocalVariableAnnotation</tt> | <tt>visitLineNumber</tt> )* + * <tt>visitMaxs</tt> ] <tt>visitEnd</tt>. In addition, the + * <tt>visit<i>X</i>Insn</tt> and <tt>visitLabel</tt> methods must be called in + * the sequential order of the bytecode instructions of the visited code, + * <tt>visitInsnAnnotation</tt> must be called <i>after</i> the annotated * instruction, <tt>visitTryCatchBlock</tt> must be called <i>before</i> the * labels passed as arguments have been visited, * <tt>visitTryCatchBlockAnnotation</tt> must be called <i>after</i> the http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodWriter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodWriter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodWriter.java index 7b9a62a..ef572b9 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodWriter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/MethodWriter.java @@ -1966,43 +1966,43 @@ class MethodWriter extends MethodVisitor { stackMap.putByte(v); } } else { - StringBuffer buf = new StringBuffer(); + StringBuilder sb = new StringBuilder(); d >>= 28; while (d-- > 0) { - buf.append('['); + sb.append('['); } if ((t & Frame.BASE_KIND) == Frame.OBJECT) { - buf.append('L'); - buf.append(cw.typeTable[t & Frame.BASE_VALUE].strVal1); - buf.append(';'); + sb.append('L'); + sb.append(cw.typeTable[t & Frame.BASE_VALUE].strVal1); + sb.append(';'); } else { switch (t & 0xF) { case 1: - buf.append('I'); + sb.append('I'); break; case 2: - buf.append('F'); + sb.append('F'); break; case 3: - buf.append('D'); + sb.append('D'); break; case 9: - buf.append('Z'); + sb.append('Z'); break; case 10: - buf.append('B'); + sb.append('B'); break; case 11: - buf.append('C'); + sb.append('C'); break; case 12: - buf.append('S'); + sb.append('S'); break; default: - buf.append('J'); + sb.append('J'); } } - stackMap.putByte(7).putShort(cw.newClass(buf.toString())); + stackMap.putByte(7).putShort(cw.newClass(sb.toString())); } } } @@ -2706,11 +2706,13 @@ class MethodWriter extends MethodVisitor { l = l.successor; } // Update the offsets in the uninitialized types - for (i = 0; i < cw.typeTable.length; ++i) { - Item item = cw.typeTable[i]; - if (item != null && item.type == ClassWriter.TYPE_UNINIT) { - item.intVal = getNewOffset(allIndexes, allSizes, 0, - item.intVal); + if (cw.typeTable != null) { + for (i = 0; i < cw.typeTable.length; ++i) { + Item item = cw.typeTable[i]; + if (item != null && item.type == ClassWriter.TYPE_UNINIT) { + item.intVal = getNewOffset(allIndexes, allSizes, 0, + item.intVal); + } } } // The stack map frames are not serialized yet, so we don't need http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Type.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Type.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Type.java index 0b526a0..1d6c204 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Type.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/Type.java @@ -556,11 +556,11 @@ public class Type { case DOUBLE: return "double"; case ARRAY: - StringBuffer b = new StringBuffer(getElementType().getClassName()); + StringBuilder sb = new StringBuilder(getElementType().getClassName()); for (int i = getDimensions(); i > 0; --i) { - b.append("[]"); + sb.append("[]"); } - return b.toString(); + return sb.toString(); case OBJECT: return new String(buf, off, len).replace('/', '.'); default: http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/TypePath.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/TypePath.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/TypePath.java index b772d59..d86420d 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/TypePath.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/TypePath.java @@ -152,6 +152,9 @@ public class TypePath { typeArg = typeArg * 10 + c - '0'; i += 1; } + if (i < n && typePath.charAt(i) == ';') { + i += 1; + } out.put11(TYPE_ARGUMENT, typeArg); } } @@ -164,7 +167,7 @@ public class TypePath { * ARRAY_ELEMENT} steps are represented with '[', {@link #INNER_TYPE * INNER_TYPE} steps with '.', {@link #WILDCARD_BOUND WILDCARD_BOUND} steps * with '*' and {@link #TYPE_ARGUMENT TYPE_ARGUMENT} steps with their type - * argument index in decimal form. + * argument index in decimal form followed by ';'. */ @Override public String toString() { @@ -182,7 +185,7 @@ public class TypePath { result.append('*'); break; case TYPE_ARGUMENT: - result.append(getStepArgument(i)); + result.append(getStepArgument(i)).append(';'); break; default: result.append('_'); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/attrs/package.html ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/attrs/package.html b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/attrs/package.html deleted file mode 100644 index 28d827d..0000000 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/attrs/package.html +++ /dev/null @@ -1,48 +0,0 @@ -<html> -<!-- - * ASM: a very small and fast Java bytecode manipulation framework - * Copyright (c) 2000-2011 INRIA, France Telecom - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. ---> -<body> -Provides an implementation for optional class, field and method attributes. - -<p> - -By default ASM strips optional attributes, in order to keep them in -the bytecode that is being readed you should pass an array of required attribute -instances to {@link org.objectweb.asm.ClassReader#accept(org.objectweb.asm.ClassVisitor, org.objectweb.asm.Attribute[], boolean) ClassReader.accept()} method. -In order to add custom attributes to the manually constructed bytecode concrete -subclasses of the {@link org.objectweb.asm.Attribute Attribute} can be passed to -the visitAttribute methods of the -{@link org.objectweb.asm.ClassVisitor ClassVisitor}, -{@link org.objectweb.asm.FieldVisitor FieldVisitor} and -{@link org.objectweb.asm.MethodVisitor MethodVisitor} interfaces. - -@since ASM 1.4.1 -</body> -</html> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/AdviceAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/AdviceAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/AdviceAdapter.java index 8fa6bbd..55722bb 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/AdviceAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/AdviceAdapter.java @@ -586,7 +586,7 @@ public abstract class AdviceAdapter extends GeneratorAdapter implements Opcodes } /** - * Called at the beginning of the method or after super class class call in + * Called at the beginning of the method or after super class call in * the constructor. <br> * <br> * http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/GeneratorAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/GeneratorAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/GeneratorAdapter.java index ceb051f..cc16185 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/GeneratorAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/GeneratorAdapter.java @@ -379,7 +379,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { } else if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) { mv.visitIntInsn(Opcodes.SIPUSH, value); } else { - mv.visitLdcInsn(new Integer(value)); + mv.visitLdcInsn(value); } } @@ -393,7 +393,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { if (value == 0L || value == 1L) { mv.visitInsn(Opcodes.LCONST_0 + (int) value); } else { - mv.visitLdcInsn(new Long(value)); + mv.visitLdcInsn(value); } } @@ -408,7 +408,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { if (bits == 0L || bits == 0x3f800000 || bits == 0x40000000) { // 0..2 mv.visitInsn(Opcodes.FCONST_0 + (int) value); } else { - mv.visitLdcInsn(new Float(value)); + mv.visitLdcInsn(value); } } @@ -423,7 +423,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { if (bits == 0L || bits == 0x3ff0000000000000L) { // +0.0d and 1.0d mv.visitInsn(Opcodes.DCONST_0 + (int) value); } else { - mv.visitLdcInsn(new Double(value)); + mv.visitLdcInsn(value); } } @@ -1618,11 +1618,13 @@ public class GeneratorAdapter extends LocalVariablesSorter { */ public void catchException(final Label start, final Label end, final Type exception) { + Label doCatch = new Label(); if (exception == null) { - mv.visitTryCatchBlock(start, end, mark(), null); + mv.visitTryCatchBlock(start, end, doCatch, null); } else { - mv.visitTryCatchBlock(start, end, mark(), + mv.visitTryCatchBlock(start, end, doCatch, exception.getInternalName()); } + mark(doCatch); } } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/InstructionAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/InstructionAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/InstructionAdapter.java index fe8400a..f544323 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/InstructionAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/InstructionAdapter.java @@ -708,7 +708,7 @@ public class InstructionAdapter extends MethodVisitor { } else if (cst >= Short.MIN_VALUE && cst <= Short.MAX_VALUE) { mv.visitIntInsn(Opcodes.SIPUSH, cst); } else { - mv.visitLdcInsn(new Integer(cst)); + mv.visitLdcInsn(cst); } } @@ -716,7 +716,7 @@ public class InstructionAdapter extends MethodVisitor { if (cst == 0L || cst == 1L) { mv.visitInsn(Opcodes.LCONST_0 + (int) cst); } else { - mv.visitLdcInsn(new Long(cst)); + mv.visitLdcInsn(cst); } } @@ -725,7 +725,7 @@ public class InstructionAdapter extends MethodVisitor { if (bits == 0L || bits == 0x3f800000 || bits == 0x40000000) { // 0..2 mv.visitInsn(Opcodes.FCONST_0 + (int) cst); } else { - mv.visitLdcInsn(new Float(cst)); + mv.visitLdcInsn(cst); } } @@ -734,7 +734,7 @@ public class InstructionAdapter extends MethodVisitor { if (bits == 0L || bits == 0x3ff0000000000000L) { // +0.0d and 1.0d mv.visitInsn(Opcodes.DCONST_0 + (int) cst); } else { - mv.visitLdcInsn(new Double(cst)); + mv.visitLdcInsn(cst); } } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Method.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Method.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Method.java index 73c3e96..f6f5857 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Method.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Method.java @@ -176,7 +176,7 @@ public class Method { } String returnType = method.substring(0, space); String methodName = method.substring(space + 1, start - 1).trim(); - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append('('); int p; do { @@ -200,7 +200,7 @@ public class Method { return type; } - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); int index = 0; while ((index = type.indexOf("[]", index) + 1) > 0) { sb.append('['); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Remapper.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Remapper.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Remapper.java index bffd20e..22ae929 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Remapper.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/Remapper.java @@ -118,17 +118,17 @@ public abstract class Remapper { } Type[] args = Type.getArgumentTypes(desc); - StringBuffer s = new StringBuffer("("); + StringBuilder sb = new StringBuilder("("); for (int i = 0; i < args.length; i++) { - s.append(mapDesc(args[i].getDescriptor())); + sb.append(mapDesc(args[i].getDescriptor())); } Type returnType = Type.getReturnType(desc); if (returnType == Type.VOID_TYPE) { - s.append(")V"); - return s.toString(); + sb.append(")V"); + return sb.toString(); } - s.append(')').append(mapDesc(returnType.getDescriptor())); - return s.toString(); + sb.append(')').append(mapDesc(returnType.getDescriptor())); + return sb.toString(); } public Object mapValue(Object value) { http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SerialVersionUIDAdder.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SerialVersionUIDAdder.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SerialVersionUIDAdder.java index 04dcc9b..b8030df 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SerialVersionUIDAdder.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SerialVersionUIDAdder.java @@ -337,8 +337,7 @@ public class SerialVersionUIDAdder extends ClassVisitor { protected void addSVUID(long svuid) { FieldVisitor fv = super.visitField(Opcodes.ACC_FINAL - + Opcodes.ACC_STATIC, "serialVersionUID", "J", null, new Long( - svuid)); + + Opcodes.ACC_STATIC, "serialVersionUID", "J", null, svuid); if (fv != null) { fv.visitEnd(); } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SimpleRemapper.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SimpleRemapper.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SimpleRemapper.java index 25b594d..68c7825 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SimpleRemapper.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/commons/SimpleRemapper.java @@ -35,7 +35,7 @@ import java.util.Map; /** * A {@link Remapper} using a {@link Map} to define its mapping. - * + * * @author Eugene Kuleshov */ public class SimpleRemapper extends Remapper { @@ -57,6 +57,12 @@ public class SimpleRemapper extends Remapper { } @Override + public String mapInvokeDynamicMethodName(String name, String desc) { + String s = map('.' + name + desc); + return s == null ? name : s; + } + + @Override public String mapFieldName(String owner, String name, String desc) { String s = map(owner + '.' + name); return s == null ? name : s; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Constant.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Constant.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Constant.java index 9c1f306..d1f1e1b 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Constant.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Constant.java @@ -234,16 +234,16 @@ class Constant { void write(final ClassWriter cw) { switch (type) { case 'I': - cw.newConst(new Integer(intVal)); + cw.newConst(intVal); break; case 'J': - cw.newConst(new Long(longVal)); + cw.newConst(longVal); break; case 'F': - cw.newConst(new Float(floatVal)); + cw.newConst(floatVal); break; case 'D': - cw.newConst(new Double(doubleVal)); + cw.newConst(doubleVal); break; case 'S': cw.newConst(strVal1); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/ConstantPool.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/ConstantPool.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/ConstantPool.java index 1901387..11df6bb 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/ConstantPool.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/ConstantPool.java @@ -42,6 +42,8 @@ import org.apache.tapestry5.internal.plastic.asm.Type; */ public class ConstantPool extends HashMap<Constant, Constant> { + private static final long serialVersionUID = 1L; + private final Constant key1 = new Constant(); private final Constant key2 = new Constant(); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/MethodOptimizer.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/MethodOptimizer.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/MethodOptimizer.java index adad6b4..1e11e8f 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/MethodOptimizer.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/MethodOptimizer.java @@ -29,6 +29,8 @@ */ package org.apache.tapestry5.internal.plastic.asm.optimizer; +import java.util.HashMap; + import org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor; import org.apache.tapestry5.internal.plastic.asm.Attribute; import org.apache.tapestry5.internal.plastic.asm.FieldVisitor; @@ -133,4 +135,44 @@ public class MethodOptimizer extends RemappingMethodAdapter implements Opcodes { String clsName = classOptimizer.clsName; mv.visitFieldInsn(GETSTATIC, clsName, fieldName, "Ljava/lang/Class;"); } + + @Override + public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { + // rewrite boxing method call to use constructor to keep 1.3/1.4 compatibility + String[] constructorParams; + if (opcode == INVOKESTATIC && name.equals("valueOf") && + (constructorParams = BOXING_MAP.get(owner + desc)) != null) { + String type = constructorParams[0]; + String initDesc = constructorParams[1]; + super.visitTypeInsn(NEW, type); + super.visitInsn(DUP); + super.visitInsn((initDesc == "(J)V" || initDesc == "(D)V")? DUP2_X2: DUP2_X1); + super.visitInsn(POP2); + super.visitMethodInsn(INVOKESPECIAL, type, "<init>", initDesc, false); + return; + } + super.visitMethodInsn(opcode, owner, name, desc, itf); + } + + private static final HashMap<String, String[]> BOXING_MAP; + static { + String[][] boxingNames = { + // Boolean.valueOf is 1.4 and is used by the xml package, so no rewrite + { "java/lang/Byte", "(B)V" }, + { "java/lang/Short", "(S)V" }, + { "java/lang/Character", "(C)V" }, + { "java/lang/Integer", "(I)V" }, + { "java/lang/Long", "(J)V" }, + { "java/lang/Float", "(F)V" }, + { "java/lang/Double", "(D)V" }, + }; + HashMap<String, String[]> map = new HashMap<String, String[]>(); + for(String[] boxingName: boxingNames) { + String wrapper = boxingName[0]; + String desc = boxingName[1]; + String boxingMethod = wrapper + '(' + desc.charAt(1) + ")L" + wrapper + ';'; + map.put(boxingMethod, boxingName); + } + BOXING_MAP = map; + } } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Shrinker.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Shrinker.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Shrinker.java index e20cf5c..39b1d41 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Shrinker.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/Shrinker.java @@ -106,7 +106,8 @@ public class Shrinker { } else if (f.getName().endsWith(".class")) { ConstantPool cp = new ConstantPool(); ClassReader cr = new ClassReader(new FileInputStream(f)); - ClassWriter cw = new ClassWriter(0); + // auto-boxing removal requires to recompute the maxs + ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); ClassConstantsCollector ccc = new ClassConstantsCollector(cw, cp); ClassOptimizer co = new ClassOptimizer(ccc, remapper); cr.accept(co, ClassReader.SKIP_DEBUG); @@ -151,16 +152,13 @@ public class Shrinker { if (d == 0) { switch (c1.type) { case 'I': - return new Integer(c1.intVal).compareTo(new Integer( - c2.intVal)); + return ((Integer)c1.intVal).compareTo(c2.intVal); case 'J': - return new Long(c1.longVal).compareTo(new Long(c2.longVal)); + return ((Long)c1.longVal).compareTo(c2.longVal); case 'F': - return new Float(c1.floatVal).compareTo(new Float( - c2.floatVal)); + return ((Float)c1.floatVal).compareTo(c2.floatVal); case 'D': - return new Double(c1.doubleVal).compareTo(new Double( - c2.doubleVal)); + return ((Double)c1.doubleVal).compareTo(c2.doubleVal); case 's': case 'S': case 'C': @@ -219,6 +217,7 @@ public class Shrinker { return mtype1.getDescriptor().compareTo(mtype2.getDescriptor()); } + @SuppressWarnings("unchecked") private static int compareObjects(Object[] objVals1, Object[] objVals2) { int length = objVals1.length; int d = length - objVals2.length; @@ -235,7 +234,7 @@ public class Shrinker { d = compareHandle((Handle) objVal1, (Handle) objVal2); } else { - d = ((Comparable) objVal1).compareTo(objVal2); + d = ((Comparable<Object>) objVal1).compareTo(objVal2); } } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/shrink.properties ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/shrink.properties b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/shrink.properties index 6b2a41f..4b5e3b2 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/shrink.properties +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/optimizer/shrink.properties @@ -270,6 +270,7 @@ org/objectweb/asm/Attribute.put(Lorg/objectweb/asm/ClassWriter;[BIIILorg/objectw org/objectweb/asm/ByteVector.enlarge(I)V=a org/objectweb/asm/ByteVector.put11(II)Lorg/objectweb/asm/ByteVector;=a org/objectweb/asm/ByteVector.put12(II)Lorg/objectweb/asm/ByteVector;=b +org/objectweb/asm/ByteVector.encodeUTF8(Ljava/lang/String;II)Lorg/objectweb/asm/ByteVector;=c org/objectweb/asm/ClassReader.copyPool(Lorg/objectweb/asm/ClassWriter;)V=a org/objectweb/asm/ClassReader.copyBootstrapMethods(Lorg/objectweb/asm/ClassWriter;[Lorg/objectweb/asm/Item;[C)V=a http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/signature/SignatureVisitor.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/signature/SignatureVisitor.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/signature/SignatureVisitor.java index 941980f..04446b5 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/signature/SignatureVisitor.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/signature/SignatureVisitor.java @@ -39,7 +39,7 @@ import org.apache.tapestry5.internal.plastic.asm.Opcodes; * <ul> * <li><i>ClassSignature</i> = ( <tt>visitFormalTypeParameter</tt> * <tt>visitClassBound</tt>? <tt>visitInterfaceBound</tt>* )* ( - * <tt>visitSuperClass</tt> <tt>visitInterface</tt>* )</li> + * <tt>visitSuperclass</tt> <tt>visitInterface</tt>* )</li> * <li><i>MethodSignature</i> = ( <tt>visitFormalTypeParameter</tt> * <tt>visitClassBound</tt>? <tt>visitInterfaceBound</tt>* )* ( * <tt>visitParameterType</tt>* <tt>visitReturnType</tt> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AbstractInsnNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AbstractInsnNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AbstractInsnNode.java index a6a01d6..b68c9b5 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AbstractInsnNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AbstractInsnNode.java @@ -134,7 +134,7 @@ public abstract class AbstractInsnNode { * number nodes). This list is a list of {@link TypeAnnotationNode} objects. * May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label visible */ public List<TypeAnnotationNode> visibleTypeAnnotations; @@ -145,7 +145,7 @@ public abstract class AbstractInsnNode { * number nodes). This list is a list of {@link TypeAnnotationNode} objects. * May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label invisible */ public List<TypeAnnotationNode> invisibleTypeAnnotations; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AnnotationNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AnnotationNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AnnotationNode.java index f78c810..3fb7344 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AnnotationNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/AnnotationNode.java @@ -37,7 +37,7 @@ import org.apache.tapestry5.internal.plastic.asm.Opcodes; /** * A node that represents an annotationn. - * + * * @author Eric Bruneton */ public class AnnotationNode extends AnnotationVisitor { @@ -64,7 +64,7 @@ public class AnnotationNode extends AnnotationVisitor { * Constructs a new {@link AnnotationNode}. <i>Subclasses must not use this * constructor</i>. Instead, they must use the * {@link #AnnotationNode(int, String)} version. - * + * * @param desc * the class descriptor of the annotation class. * @throws IllegalStateException @@ -79,7 +79,7 @@ public class AnnotationNode extends AnnotationVisitor { /** * Constructs a new {@link AnnotationNode}. - * + * * @param api * the ASM API version implemented by this visitor. Must be one * of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}. @@ -93,7 +93,7 @@ public class AnnotationNode extends AnnotationVisitor { /** * Constructs a new {@link AnnotationNode} to visit an array value. - * + * * @param values * where the visited values must be stored. */ @@ -169,7 +169,7 @@ public class AnnotationNode extends AnnotationVisitor { * version. This methods checks that this node, and all its nodes * recursively, do not contain elements that were introduced in more recent * versions of the ASM API than the given version. - * + * * @param api * an ASM API version. Must be one of {@link Opcodes#ASM4} or * {@link Opcodes#ASM5}. @@ -180,7 +180,7 @@ public class AnnotationNode extends AnnotationVisitor { /** * Makes the given visitor visit this annotation. - * + * * @param av * an annotation visitor. Maybe <tt>null</tt>. */ @@ -199,7 +199,7 @@ public class AnnotationNode extends AnnotationVisitor { /** * Makes the given visitor visit a given annotation value. - * + * * @param av * an annotation visitor. Maybe <tt>null</tt>. * @param name @@ -218,11 +218,13 @@ public class AnnotationNode extends AnnotationVisitor { an.accept(av.visitAnnotation(name, an.desc)); } else if (value instanceof List) { AnnotationVisitor v = av.visitArray(name); - List<?> array = (List<?>) value; - for (int j = 0; j < array.size(); ++j) { - accept(v, null, array.get(j)); + if (v != null) { + List<?> array = (List<?>) value; + for (int j = 0; j < array.size(); ++j) { + accept(v, null, array.get(j)); + } + v.visitEnd(); } - v.visitEnd(); } else { av.visit(name, value); } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/ClassNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/ClassNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/ClassNode.java index 94075d6..bf52334 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/ClassNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/ClassNode.java @@ -119,7 +119,7 @@ public class ClassNode extends ClassVisitor { * The runtime visible annotations of this class. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label visible */ public List<AnnotationNode> visibleAnnotations; @@ -128,7 +128,7 @@ public class ClassNode extends ClassVisitor { * The runtime invisible annotations of this class. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label invisible */ public List<AnnotationNode> invisibleAnnotations; @@ -137,7 +137,7 @@ public class ClassNode extends ClassVisitor { * The runtime visible type annotations of this class. This list is a list * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label visible */ public List<TypeAnnotationNode> visibleTypeAnnotations; @@ -146,7 +146,7 @@ public class ClassNode extends ClassVisitor { * The runtime invisible type annotations of this class. This list is a list * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label invisible */ public List<TypeAnnotationNode> invisibleTypeAnnotations; @@ -155,7 +155,7 @@ public class ClassNode extends ClassVisitor { * The non standard attributes of this class. This list is a list of * {@link Attribute} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.Attribute + * @associates org.apache.tapestry5.internal.plastic.asm.Attribute */ public List<Attribute> attrs; @@ -163,7 +163,7 @@ public class ClassNode extends ClassVisitor { * Informations about the inner classes of this class. This list is a list * of {@link InnerClassNode} objects. * - * @associates org.objectweb.asm.tree.InnerClassNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.InnerClassNode */ public List<InnerClassNode> innerClasses; @@ -171,7 +171,7 @@ public class ClassNode extends ClassVisitor { * The fields of this class. This list is a list of {@link FieldNode} * objects. * - * @associates org.objectweb.asm.tree.FieldNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.FieldNode */ public List<FieldNode> fields; @@ -179,7 +179,7 @@ public class ClassNode extends ClassVisitor { * The methods of this class. This list is a list of {@link MethodNode} * objects. * - * @associates org.objectweb.asm.tree.MethodNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.MethodNode */ public List<MethodNode> methods; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/FieldNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/FieldNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/FieldNode.java index d6c9c90..35f3766 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/FieldNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/FieldNode.java @@ -78,7 +78,7 @@ public class FieldNode extends FieldVisitor { * The runtime visible annotations of this field. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label visible */ public List<AnnotationNode> visibleAnnotations; @@ -87,7 +87,7 @@ public class FieldNode extends FieldVisitor { * The runtime invisible annotations of this field. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label invisible */ public List<AnnotationNode> invisibleAnnotations; @@ -96,7 +96,7 @@ public class FieldNode extends FieldVisitor { * The runtime visible type annotations of this field. This list is a list * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label visible */ public List<TypeAnnotationNode> visibleTypeAnnotations; @@ -105,7 +105,7 @@ public class FieldNode extends FieldVisitor { * The runtime invisible type annotations of this field. This list is a list * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label invisible */ public List<TypeAnnotationNode> invisibleTypeAnnotations; @@ -114,7 +114,7 @@ public class FieldNode extends FieldVisitor { * The non standard attributes of this field. This list is a list of * {@link Attribute} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.Attribute + * @associates org.apache.tapestry5.internal.plastic.asm.Attribute */ public List<Attribute> attrs; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/InsnList.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/InsnList.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/InsnList.java index 8eaaf68..0a00c4b 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/InsnList.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/InsnList.java @@ -521,6 +521,7 @@ public class InsnList { } // this class is not generified because it will create bridges + @SuppressWarnings("rawtypes") private final class InsnListIterator implements ListIterator { AbstractInsnNode next; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/LookupSwitchInsnNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/LookupSwitchInsnNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/LookupSwitchInsnNode.java index af635d7..0ecad60 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/LookupSwitchInsnNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/LookupSwitchInsnNode.java @@ -81,7 +81,7 @@ public class LookupSwitchInsnNode extends AbstractInsnNode { : labels.length); if (keys != null) { for (int i = 0; i < keys.length; ++i) { - this.keys.add(new Integer(keys[i])); + this.keys.add(keys[i]); } } if (labels != null) { http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodInsnNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodInsnNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodInsnNode.java index 5d0c730..bc90ddd 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodInsnNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodInsnNode.java @@ -131,6 +131,7 @@ public class MethodInsnNode extends AbstractInsnNode { @Override public void accept(final MethodVisitor mv) { mv.visitMethodInsn(opcode, owner, name, desc, itf); + acceptAnnotations(mv); } @Override http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodNode.java index 48115c2..3827653 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/MethodNode.java @@ -88,7 +88,7 @@ public class MethodNode extends MethodVisitor { * The runtime visible annotations of this method. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label visible */ public List<AnnotationNode> visibleAnnotations; @@ -97,7 +97,7 @@ public class MethodNode extends MethodVisitor { * The runtime invisible annotations of this method. This list is a list of * {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label invisible */ public List<AnnotationNode> invisibleAnnotations; @@ -106,7 +106,7 @@ public class MethodNode extends MethodVisitor { * The runtime visible type annotations of this method. This list is a list * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label visible */ public List<TypeAnnotationNode> visibleTypeAnnotations; @@ -115,7 +115,7 @@ public class MethodNode extends MethodVisitor { * The runtime invisible type annotations of this method. This list is a * list of {@link TypeAnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label invisible */ public List<TypeAnnotationNode> invisibleTypeAnnotations; @@ -124,7 +124,7 @@ public class MethodNode extends MethodVisitor { * The non standard attributes of this method. This list is a list of * {@link Attribute} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.Attribute + * @associates org.apache.tapestry5.internal.plastic.asm.Attribute */ public List<Attribute> attrs; @@ -142,7 +142,7 @@ public class MethodNode extends MethodVisitor { * The runtime visible parameter annotations of this method. These lists are * lists of {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label invisible parameters */ public List<AnnotationNode>[] visibleParameterAnnotations; @@ -151,7 +151,7 @@ public class MethodNode extends MethodVisitor { * The runtime invisible parameter annotations of this method. These lists * are lists of {@link AnnotationNode} objects. May be <tt>null</tt>. * - * @associates org.objectweb.asm.tree.AnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode * @label visible parameters */ public List<AnnotationNode>[] invisibleParameterAnnotations; @@ -160,7 +160,7 @@ public class MethodNode extends MethodVisitor { * The instructions of this method. This list is a list of * {@link AbstractInsnNode} objects. * - * @associates org.objectweb.asm.tree.AbstractInsnNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.AbstractInsnNode * @label instructions */ public InsnList instructions; @@ -169,7 +169,7 @@ public class MethodNode extends MethodVisitor { * The try catch blocks of this method. This list is a list of * {@link TryCatchBlockNode} objects. * - * @associates org.objectweb.asm.tree.TryCatchBlockNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TryCatchBlockNode */ public List<TryCatchBlockNode> tryCatchBlocks; @@ -187,7 +187,7 @@ public class MethodNode extends MethodVisitor { * The local variables of this method. This list is a list of * {@link LocalVariableNode} objects. May be <tt>null</tt> * - * @associates org.objectweb.asm.tree.LocalVariableNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.LocalVariableNode */ public List<LocalVariableNode> localVariables; @@ -195,7 +195,7 @@ public class MethodNode extends MethodVisitor { * The visible local variable annotations of this method. This list is a * list of {@link LocalVariableAnnotationNode} objects. May be <tt>null</tt> * - * @associates org.objectweb.asm.tree.LocalVariableAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.LocalVariableAnnotationNode */ public List<LocalVariableAnnotationNode> visibleLocalVariableAnnotations; @@ -203,7 +203,7 @@ public class MethodNode extends MethodVisitor { * The invisible local variable annotations of this method. This list is a * list of {@link LocalVariableAnnotationNode} objects. May be <tt>null</tt> * - * @associates org.objectweb.asm.tree.LocalVariableAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.LocalVariableAnnotationNode */ public List<LocalVariableAnnotationNode> invisibleLocalVariableAnnotations; @@ -323,6 +323,7 @@ public class MethodNode extends MethodVisitor { } @Override + @SuppressWarnings("serial") public AnnotationVisitor visitAnnotationDefault() { return new AnnotationNode(new ArrayList<Object>(0) { @Override @@ -370,6 +371,7 @@ public class MethodNode extends MethodVisitor { } @Override + @SuppressWarnings("unchecked") public AnnotationVisitor visitParameterAnnotation(final int parameter, final String desc, final boolean visible) { AnnotationNode an = new AnnotationNode(desc); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/TryCatchBlockNode.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/TryCatchBlockNode.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/TryCatchBlockNode.java index a4c8dde..2609dda 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/TryCatchBlockNode.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/TryCatchBlockNode.java @@ -66,7 +66,7 @@ public class TryCatchBlockNode { * list is a list of {@link TypeAnnotationNode} objects. May be * <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label visible */ public List<TypeAnnotationNode> visibleTypeAnnotations; @@ -76,7 +76,7 @@ public class TryCatchBlockNode { * This list is a list of {@link TypeAnnotationNode} objects. May be * <tt>null</tt>. * - * @associates org.objectweb.asm.tree.TypeAnnotationNode + * @associates org.apache.tapestry5.internal.plastic.asm.tree.TypeAnnotationNode * @label invisible */ public List<TypeAnnotationNode> invisibleTypeAnnotations; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Analyzer.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Analyzer.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Analyzer.java index a78fff4..fc88d8e 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Analyzer.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Analyzer.java @@ -102,6 +102,7 @@ public class Analyzer<V extends Value> implements Opcodes { * @throws AnalyzerException * if a problem occurs during the analysis. */ + @SuppressWarnings("unchecked") public Frame<V>[] analyze(final String owner, final MethodNode m) throws AnalyzerException { if ((m.access & (ACC_ABSTRACT | ACC_NATIVE)) != 0) { http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/AnalyzerException.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/AnalyzerException.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/AnalyzerException.java index 66c9df9..14f5cff 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/AnalyzerException.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/AnalyzerException.java @@ -37,6 +37,7 @@ import org.apache.tapestry5.internal.plastic.asm.tree.AbstractInsnNode; * @author Bing Ran * @author Eric Bruneton */ +@SuppressWarnings("serial") public class AnalyzerException extends Exception { public final AbstractInsnNode node; http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Frame.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Frame.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Frame.java index fdbb0a9..9c74a62 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Frame.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/analysis/Frame.java @@ -83,6 +83,7 @@ public class Frame<V extends Value> { * @param nStack * the maximum stack size of the frame. */ + @SuppressWarnings("unchecked") public Frame(final int nLocals, final int nStack) { this.values = (V[]) new Value[nLocals + nStack]; this.locals = nLocals; @@ -725,14 +726,14 @@ public class Frame<V extends Value> { */ @Override public String toString() { - StringBuffer b = new StringBuffer(); + StringBuilder sb = new StringBuilder(); for (int i = 0; i < getLocals(); ++i) { - b.append(getLocal(i)); + sb.append(getLocal(i)); } - b.append(' '); + sb.append(' '); for (int i = 0; i < getStackSize(); ++i) { - b.append(getStack(i).toString()); + sb.append(getStack(i).toString()); } - return b.toString(); + return sb.toString(); } } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/ASMifier.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/ASMifier.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/ASMifier.java index 5b37a29..7d6339d 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/ASMifier.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/ASMifier.java @@ -170,8 +170,7 @@ public class ASMifier extends Printer { simpleName = name.substring(n + 1); } text.add("import java.util.*;\n"); - text.add("import org.objectweb.asm.*;\n"); - text.add("import org.objectweb.asm.attrs.*;\n"); + text.add("import org.apache.tapestry5.internal.plastic.asm.*;\n"); text.add("public class " + simpleName + "Dump implements Opcodes {\n\n"); text.add("public static byte[] dump () throws Exception {\n\n"); text.add("ClassWriter cw = new ClassWriter(0);\n"); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckClassAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckClassAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckClassAdapter.java index 680f8a9..5b7d217 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckClassAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckClassAdapter.java @@ -79,9 +79,9 @@ import java.util.*; * insnNumber locals : stack): * * <pre> - * org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found . - * at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289) - * at org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135) + * org.apache.tapestry5.internal.plastic.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found . + * at org.apache.tapestry5.internal.plastic.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289) + * at org.apache.tapestry5.internal.plastic.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135) * ... * remove()V * 00000 LinkedBlockingQueue$Itr . . . . . . . . : @@ -255,26 +255,26 @@ public class CheckClassAdapter extends ClassVisitor { for (int j = 0; j < method.instructions.size(); ++j) { method.instructions.get(j).accept(mv); - StringBuffer s = new StringBuffer(); + StringBuilder sb = new StringBuilder(); Frame<BasicValue> f = frames[j]; if (f == null) { - s.append('?'); + sb.append('?'); } else { for (int k = 0; k < f.getLocals(); ++k) { - s.append(getShortName(f.getLocal(k).toString())) + sb.append(getShortName(f.getLocal(k).toString())) .append(' '); } - s.append(" : "); + sb.append(" : "); for (int k = 0; k < f.getStackSize(); ++k) { - s.append(getShortName(f.getStack(k).toString())) + sb.append(getShortName(f.getStack(k).toString())) .append(' '); } } - while (s.length() < method.maxStack + method.maxLocals + 1) { - s.append(' '); + while (sb.length() < method.maxStack + method.maxLocals + 1) { + sb.append(' '); } pw.print(Integer.toString(j + 100000).substring(1)); - pw.print(" " + s + " : " + t.text.get(t.text.size() - 1)); + pw.print(" " + sb + " : " + t.text.get(t.text.size() - 1)); } for (int j = 0; j < method.tryCatchBlocks.size(); ++j) { method.tryCatchBlocks.get(j).accept(mv); http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckMethodAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckMethodAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckMethodAdapter.java index 5770364..f1cf285 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckMethodAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/CheckMethodAdapter.java @@ -773,7 +773,7 @@ public class CheckMethodAdapter extends MethodVisitor { if (labels.get(label) != null) { throw new IllegalArgumentException("Already visited label"); } - labels.put(label, new Integer(insnCount)); + labels.put(label, insnCount); super.visitLabel(label); } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/Textifier.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/Textifier.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/Textifier.java index feae92d..27227e27 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/Textifier.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/util/Textifier.java @@ -407,7 +407,7 @@ public class Textifier extends Printer { } buf.append(tab); - appendAccess(access); + appendAccess(access & ~Opcodes.ACC_VOLATILE); if ((access & Opcodes.ACC_NATIVE) != 0) { buf.append("native "); } @@ -696,7 +696,7 @@ public class Textifier extends Printer { Textifier t = createTextifier(); text.add(t.getText()); text.add(visible ? ") // parameter " : ") // invisible, parameter "); - text.add(new Integer(parameter)); + text.add(parameter); text.add("\n"); return t; } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/ASMContentHandler.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/ASMContentHandler.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/ASMContentHandler.java index 88dab5e..10f3a8f 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/ASMContentHandler.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/ASMContentHandler.java @@ -320,7 +320,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { static { String[] types = SAXCodeAdapter.TYPES; for (int i = 0; i < types.length; i++) { - TYPES.put(types[i], new Integer(i)); + TYPES.put(types[i], i); } } @@ -686,7 +686,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { int major = Integer.parseInt(attrs.getValue("major")); int minor = Integer.parseInt(attrs.getValue("minor")); HashMap<String, Object> vals = new HashMap<String, Object>(); - vals.put("version", new Integer(minor << 16 | major)); + vals.put("version", minor << 16 | major); vals.put("access", attrs.getValue("access")); vals.put("name", attrs.getValue("name")); vals.put("parent", attrs.getValue("parent")); @@ -714,6 +714,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { final class InterfaceRule extends Rule { @Override + @SuppressWarnings("unchecked") public final void begin(final String name, final Attributes attrs) { ((ArrayList<String>) ((HashMap<?, ?>) peek()).get("interfaces")) .add(attrs.getValue("name")); @@ -822,6 +823,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { final class ExceptionRule extends Rule { @Override + @SuppressWarnings("unchecked") public final void begin(final String name, final Attributes attrs) { ((ArrayList<String>) ((HashMap<?, ?>) peek()).get("exceptions")) .add(attrs.getValue("name")); @@ -892,6 +894,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { final class TableSwitchLabelRule extends Rule { @Override + @SuppressWarnings("unchecked") public final void begin(final String name, final Attributes attrs) { ((ArrayList<Label>) ((HashMap<?, ?>) peek()).get("labels")) .add(getLabel(attrs.getValue("name"))); @@ -916,6 +919,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { public final void end(final String name) { HashMap<?, ?> vals = (HashMap<?, ?>) pop(); Label dflt = getLabel(vals.get("dflt")); + @SuppressWarnings("unchecked") ArrayList<String> keyList = (ArrayList<String>) vals.get("keys"); ArrayList<?> lbls = (ArrayList<?>) vals.get("labels"); Label[] labels = lbls.toArray(new Label[lbls.size()]); @@ -933,6 +937,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { final class LookupSwitchLabelRule extends Rule { @Override + @SuppressWarnings("unchecked") public final void begin(final String name, final Attributes attrs) { HashMap<?, ?> vals = (HashMap<?, ?>) peek(); ((ArrayList<Label>) vals.get("labels")).add(getLabel(attrs @@ -991,6 +996,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { @Override public void begin(final String name, final Attributes attrs) { + @SuppressWarnings("unchecked") ArrayList<Object> types = (ArrayList<Object>) ((HashMap<?, ?>) peek()) .get(name); String type = attrs.getValue("type"); @@ -1095,6 +1101,7 @@ public class ASMContentHandler extends DefaultHandler implements Opcodes { @Override public final void begin(final String element, final Attributes attrs) throws SAXException { + @SuppressWarnings("unchecked") ArrayList<Object> bsmArgs = (ArrayList<Object>) peek(); bsmArgs.add(getValue(attrs.getValue("desc"), attrs.getValue("cst"))); } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/363f6175/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java ---------------------------------------------------------------------- diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java index 491c57e..5ac25e4 100644 --- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java +++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java @@ -146,19 +146,19 @@ public final class SAXAnnotationAdapter extends AnnotationVisitor { if (value instanceof byte[]) { byte[] b = (byte[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Byte(b[i])); + av.visit(null, b[i]); } } else if (value instanceof char[]) { char[] b = (char[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Character(b[i])); + av.visit(null, b[i]); } } else if (value instanceof short[]) { short[] b = (short[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Short(b[i])); + av.visit(null, b[i]); } } else if (value instanceof boolean[]) { @@ -170,25 +170,25 @@ public final class SAXAnnotationAdapter extends AnnotationVisitor { } else if (value instanceof int[]) { int[] b = (int[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Integer(b[i])); + av.visit(null, b[i]); } } else if (value instanceof long[]) { long[] b = (long[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Long(b[i])); + av.visit(null, b[i]); } } else if (value instanceof float[]) { float[] b = (float[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Float(b[i])); + av.visit(null, b[i]); } } else if (value instanceof double[]) { double[] b = (double[]) value; for (int i = 0; i < b.length; i++) { - av.visit(null, new Double(b[i])); + av.visit(null, b[i]); } }
