Changes Apache Commons developers Incorrect comment in StackMap.java Incorrect comment in several classes. Fix local variable live range length; add test case. org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19. org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 20. Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility Add minimal Java 9 support Utility.signatureToString fails if a method has multiple type arguments IINC does not handle -128 properly Support for StackMap should be different from StackMapTable Crash when parsing constructor of inner classes with parameters annotated LocalVariableTypeTable is not updated. Resolving the String representation of a constant throws NoSuchElementException in case of CONSTANT_NameAndType constant. InvokeInstruction.getClassName(ConstantPoolGen) should not throw an exception when it detects an array. non-empty final arrays should be private as they are mutable. Document the Java platform requirement clearly and early. Type.getType() needs to understand TypeVariableSignature(s). Add constants for Java 9 class file version 53. FCONST pattern does not include FCONST_2. Add missing Node.accept() implementations (ConstantMethodHandle, ConstantMethodType, ParameterAnnotationEntry). BCELifier is not working for Java8Example (incomplete). Addition of hashCode() to generic/Instruction.java breaks Targeters. Never make distinct BranchInstructions compare equal. Select constructor allows partially constructed instance to escape. Re-ordered code to delay the escape. Minor doc error in BranchInstruction.java. ClassDumper example duplicates field attribute types. No tests to check the output of dump methods. INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL need to define dump() methods. Two more methods that would be nice to be public. Type class includes constants that reference subclasses. Pass 3b verifier is too strict. StackMapTable[Entry] should be removed and improvements merged into StackMap[Entry]. StackMap[Table]Entry.copy() needs to be deep; Improved support for StackMaps. Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions. Some additional clone methods should be public. Check for max Short seems wrong. Document that Instruction Factory returns singleton instances. better support for clone/copy methods. Remove Serializable. Problem with JAXB if the bcel classloader is used; remove the broken ClassLoader class. modify several toString methods to make output similar to "javap". add javadoc comments to LineNumber.java and LineNumberTable.java. Need to check for an empty InstructionList. Inconsistent toString() results. long type instructions are not searched by InstructionFinder using regular expression. Update Java requirement from 5 to 7. Interfaces should not be used to define constants. Code must not swallow Throwable. Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput) public. Bug fixes and improvements to InvokeDynamic and BootStrapMethods implementation. Verification error when an invoke references a method defined in superclass. Remove ObjectType cache. The verifier now checks if methods with a void return type attempt to return an object. MethodGen.removeLocalVariable now properly unreference the removed variable from the targetters of the instruction handlers delimiting the scope of the variable. Utility.signatureToString() no longer throws a ClassFormatException on TypeVariables found in generic signatures. Removed the 'index' variable from the LocalVariableGen's hash code. The verifier should not check for run time compatibility of objects assigned to arrays. Correct verification of the return value of a method. Performance degradation with the UTF8 cache. getInstance no longer uses cache. org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks input streams. Add parent type processing for ClassPath class. Add support for getResource and getResourceAsStream to ClassPath. Properly parse StackMapTable attributes in Java 6 classfiles. Javadoc overhaul. BCEL is unnecessarily slow. Add support for INVOKEDYNAMIC and MethodHandles. Why using unstable sort at MethodGen.getLocalVariables() ? Incorporate patch file from Findbugs. Implement the MethodParameters attribute. Mistake in "Peephole optimizer" example at http://commons.apache.org/bcel/manual.html BCEL cannot be used as java.system.class.loader. XSLT transforms broken in Turkish Locale. java.lang.ClassFormatError: LVTT entry for 'local' in class file org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT entry ClassParser.parse() throws NullPointerException if class does not exist and ClassParser(String) constructor is used. ArrayOutOfBoundsException in InstructionFinder. Website: Incorrect URL for source; version 5.2 is not in the bug page bcelified method doesn't pass verification. return type not verified by JustIce. @since tag incorrect for Annotation classes in BCEL trunk. InstructionFactory missing % operator for Float, Double. Fields in Annotations and AnnotationEntry are inaccessible to subclasses Add support for getResources to ClassPath. Two source files in repository are empty. Maven POM file calls in apache regex but code does not use it. ClassParser throws unintelligible Exception. verifier raises an AssertionViolatedException when done against Java 5 files with generics/annotations. Verifier fails in pass 2 with "Number of LocalVariableTable attributes of Code attribute" on static methods. ParameterAnnotationEntries are read not dumped. RuntimeVisible Annotations duplicated. ARRAYLENGTH incorrectly not StackConsumer. Error in method search() defined in org.apache.bcel.util.InstructionFinder Deleting all instructions of a list shows wrong behaviour. Make BCEL JAR OSGi compatible. ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile. tableswitch/lookupswitch invalid alignment of 4-byte operands. Incorrect size calculation in InstructionFinder. Class files containing "ParameterAnnotations" are dumped incorrectly. Class files containing "StackMapTable" attributes (on method code) are dumped incorrectly. org.apache.bcel.classfile.ClassParser: NullPointerException caused by fileopen failed. org.apache.bcel.classfile.ClassParser: NullPointerException caused by invalid filename. ExecutionVisitor doesn't support Class constant type for LDC and LDC_W. BCELifier issue: BCELFactory fails to handle float and long constants. "Invalid method signature: TT;" when using MethodGen for a method having a generic parameter. FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() output. org.apache.bcel.generic.Instruction.equals(Object) does not follow Object.equals(Object) rules. Select instructions should implement StackConsumer instead of StackProducer. Fix CPL License issues with EnclosingMethod.java and LocalVariableTypeTable.java. Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output. SyntheticRepository.loadClass() fails to close the inputStream. BCELifier produces incorrect code for methods containing loads of class literals from constant pool. Code attribute size not updated. Incorrect link for Jasmin assembler language. Examples not present in source or binary downloads. ClassParser.parse() generates NPE if it cannot open the file. InstConstraintVisitor does not handle class constants. Pass3bVerifier crashes on empty methods. LocalVariableGen.getLocalVariable() computes incorrect length. Method does not have a method to access parameter annotations. ClassPath.getResource does not correctly perform URL escaping. ClassParser fails to parse JDK classes in Java 8: ClassFormatException: Invalid byte tag in constant pool. Verification of interfaces with default methods fails with Java 8. When reading the number of parameters in a MethodParameters structure only read a single byte as per the JVM specification.