ASM Changelog

What's new in ASM 5.0.4

May 18, 2015
  • Bug fixes:
  • Use the pattern . to specify mapInvokeDynamicMethodName remappings in SimpleRemapper.
  • NPE in MethodWriter.resizeInstructions().
  • Mistakes in API documentation of MethodVisitor and SignatureVisitor.
  • Asm eat linenumbers if there are several of them on one label.
  • TypePath not adequately supporting types w/ >10 type arguments.
  • AnnotationNode in ASM 5.0.3 does not handle null returned from AnnotationVisitor correctly.
  • Bug fix in GeneratorAdapter.catchException.
  • Modernize ASM code: replace new WrapperType() by autoboxing.
  • MethodInsnNode.accept() doesn't call acceptAnnotations().

New in ASM 5.0.3 (Mar 28, 2015)

  • A maintenance version which fixes a bug with inner classes.
  • Changes:
  • Replaced StringBuffer by StringBuilder.
  • Removed the empty asm.attrs package.
  • Bug fixes:
  • 317200 Fix for 317127 eliminates some non-duplicate InnerClass attributes
  • 317195 Method with 32 or 64 try finallys failes with asm

New in ASM 5.0.2 (Mar 28, 2015)

  • Bug fixes:
  • 317135 Textifier prints bridge methods to be volatile.
  • 317151 Fix for 316545 is incorrect.
  • 317136 ASMifier 5.0.1 output references package org.objectweb.asm.attrs.

New in ASM 5.0.1 (Mar 28, 2015)

  • Bug fixes:
  • 317132 ASM 5.0 do not supported JDK 1.5?
  • 317131 Infinite loop in InstructionAdapter.invokestatic(...).
  • 316691 Incorrect StackMapFrame calculations for large > 32k methods in Java 7.
  • 317123 ASM5.0: Class MethodNode broken?
  • 317127 duplicate entries in InnerClasses attribute.

New in ASM 5.0 (Mar 28, 2015)

  • visitMethodInsn(int,String,String,String) is deprecated, and replaced with visitMethodInsn(int,String,String,String,boolean), in order to support invokespecial and invokestatic on interfaces.
  • Added a getMaxStackSize method in asm.tree.analysis.Frame.
  • Bug fixes:
  • 317111 source debug extension size should not be limeted to 64k
  • 316682 maxLocals not updated in AnalyzerAdapter constructor.
  • 316630 Type verification in CheckAnnotationAdapter.
  • 316545 ASM incorrectly merges Object[] and byte[][] in StackMapTable.
  • 316555 Wrong maxLocals calculation in AnalyzerAdapter.
  • 316553 InsnListIterator can't get previous entry after exec "remove()".

New in ASM 4.2 (Mar 28, 2015)

  • Bug fixes:
  • 316506 ByteVector doesn't validate byteLength in putUTF8().
  • Javadoc typos.
  • 316482 JarOptimizer removes directory entries in resulting jars.
  • Don't create a new ClassWriter instance in toByteArray, in order for this code to work with subclasses.
  • 316416 JSRInlinerAdapter fails with IndexOutOfBoundsException.
  • 316403 LocalVariablesSorter incorrectly assumes it can call visitFrame() with original args.
  • 316373 RemappingSignatureAdapter.visitInnerClassType is broken when handling identifiers with "$" signs.
  • 316380 Bug in org.objectweb.asm.util.CheckClassAdapter.visitInnerClass() regarding inner class name.

New in ASM 4.1 (Nov 28, 2012)

  • implicit first frame no longer visited with EXPAND_FRAMES (was necessary to fix bug 316360).
  • performance improvements in ClassReader (about +10 percent speedup).
  • feature requests:
  • 316306: More efficient patch for Frame.merge().
  • 316318: Allow generated SVUID field to be marked synthetic.
  • 316321: asm osgi bundles based on BND.
  • Moved checkClassSignature, checkMethodSignature and checkFieldSignature to CheckClassAdapter and made them public.
  • 316345: Support "synthetic" access modifier in org.objectweb.asm.util.Textifier.appendAccess()
  • bug fixes:
  • 316360: MethodWriter.visitFrame(F_NEW,...) requires explicit invocation for the implicit frame at offset zero.
  • 316352: LocalVariableSorter.visitFrame() logic is incorrect.
  • 316326: analysis.Frame.merge() should use ! .equals() instead of !=.
  • Fix regression: LDC with a primitive class doesn't work anymore.
  • 316347: GeneratorAdaptor.ifCmp() generates DCMPG/DCMPL incorrectly.
  • 316348: ClassVersion check in ClassReader looks at wrong offset.
  • 316359: ClassWriter toByteArray fails when there are more than 32k constant pool entries.

New in ASM 4.0 (Dec 1, 2011)

  • added automatic test of backward binary compatibility in build process.
  • added automatic call to resetLabel in MethodNode when necessary.
  • improved printing of method handles in Textifier.
  • bug fixes
  • 316204 Analyzer produces incorrect lvt types for jsr return targets when jsr frame changes twice during analysis.
  • 316212 org.objectweb.asm.optimizer.ClassOptimizer does not work with classes in default package.
  • fixed incorrectly ASMified method handles.

New in ASM 3.3.1 (Dec 22, 2010)

  • 315135 COMPUTE_FRAMES with CheckClassAdapter gives IndexOutOfBoundsException
  • 315248 Bug in CheckClassAdapter? Fails for untransformed class
  • 315399 AnalyzerAdapter.execute() method doesn't process null array correctly for AALOAD instruction
  • 315417 LocalVariablesSorter.remap() incorrectly process long/double types
  • 315697 DependencyTracker example fails in handling class Object
  • 315698 DependencyTracker example fails in handling finally blocks

New in ASM 3.3 (May 31, 2010)

  • added new InstructionAdapter class
  • added TryCatchBlockSorter (provided by Adrian Sampson)
  • improved extensibility of analysis package (patch from Markus Heiden)
  • bug fixes
  • 314969 Counterintuitive interaction of arguments to ClassWriter(cr, flags)
  • 314964 AnalyzerAdapter does not treat calls correctly
  • 314934 ASM Handling of method Synthetic attribute causes exception during retransformation
  • 314878 NPE in AnalyzerAdapter, putfield object comes from different control flow branches
  • fixed bug with remapping of RET instructions
  • 314563 exception from asm.commons.LocalVariablesSorterremap
  • fixed bug in GASMifier
  • fixed bug for F_CHOP frames (locals are ignored for these frames)
  • 314719 method length is sometimes calculated incorrectly
  • 314584 ByteCode Outline Eclipse Plugin -- access flags comment is showing in decimal rather than hex
  • 314481 Bug in Remapper related to annotations
  • 314486 SerialVersionUIDAdder generates an incorrect serialVersionUID under 1.6 VMs for anonymous classes
  • fixed bug with padding for xxxSwitch instructions
  • 313909 VOID_TYPE.getSize() != 0
  • 312464 ClassReader does not ensure that NEW has a label associated with it
  • patches (minor code improvements)
  • 314328 minor improvement to serialveruidadder
  • 314329 unnecessary casting, using HashMap v. Map
  • 314330 make sure files get closed
  • feature requests
  • 314119 Provide read access to uninitializedTypes in AnalyzerAdapter
  • 313804 Improve analysis results
  • Javadoc fixes and improvements

New in ASM 3.2 (Feb 26, 2010)

  • added support for new invokedynamic opcode
  • added new Type.getArgumentsAndReturnSizes method
  • added new GeneratorAdapter.valueOf method
  • added two new Method.getMethod methods (feature request #308554)
  • added new checks in Check*Adapter
  • check of xRETURN instructions against declared method return type
  • check that labels are not reused across methods (inside same class; check for labels reuse across classes still missing)
  • checks for debug labels and for visitTryCatchBlock calling order
  • new option for data flow checks with BasicVerifier
  • added Jasmin class adapter (with round trip tests) in examples
  • bug fixes
  • 313314 ClassReader.readClass(InputStream) unnecessary copies read buffer two times
  • 311642 StackOverflowException in Label.visitSubroutine
  • 311100 patch to make verifying multiple classes easier
  • 309819 java/lang/Character typo in GeneratorAdapter
  • 312468 Incorrect merging of frames
  • 309037 GeneratorAdapter generates jump instructions wrongly
  • 308875 ClassWriter COMPUTE_MAXS produces invalid class (verify error)
  • 308807 AnalyzerException running CheckClassAdapter.verify() on java.lang.String
  • 308745 BasicInterpreter.newOperation lacks a throws AnalyzerException clause
  • fixed bug submitted by Simon Goldsmith for inner classes
  • fixed bug submitted by Michael Rudolf
  • fixed bug with usage of copyOperation
  • fixed bug in test case
  • Javadoc fixes and improvements
  • added performance tests with JBET, JClassLib, Jiapi, mozilla.classfile, BCEL and AspectJ BCEL using HelloWorld example
  • added performance tests with Cojen library
  • added performance tests for gnu.bytecode and CSG bytecode using HelloWorld example
  • added FindBugs preferences and builder for ASM
  • added debug jar
  • improved Ant build scripts
  • replaced ow_util_ant_tasks (no longer maintained) with standard ant tasks
  • updated test/lib jars with newer versions
  • removed hardcoded JUNIT Eclipse path, made JSE 1.5.0 container as default VM (previously random system JRE)
  • added license info to the parent pom