ObjectWeb Consortium
Print

Advanced Search - Powered by Google

  Consortium     Activities     Projects     Forge     Events 

ASM



ASMDEX
· Home
· Download
· Mailing Lists
· License
· History


About
· Users
· Team
· Contacts

History

23 March 2014: ASM 5.0.1 (svn-tag: ASM_5_0_1)

  • 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.

16 March 2014: ASM 5.0 (svn-tag: ASM_5_0)

  • 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()".

12 October 2013: ASM 5.0 beta (svn-tag: ASM_5_0_BETA)

  • Full support of Java 8 (annotation on Java types and MethodParameters attribute)

12 October 2013: ASM 4.2 (svn-tag: ASM_4_2)

  • 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.

14 October 2012: ASM 4.1 (svn-tag: ASM_4_1)

  • 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.

29 October 2011: ASM 4.0 (svn-tag: ASM_4_0)

  • 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.

11 September 2011: ASM 4.0 RC2 (svn-tag: ASM_4_0_RC2)

  • ClassVisitor, MethodVisitor, etc interfaces replaced with abstract classes, in order to ensure backward binary compatibility in future ASM versions.
  • ClassAdapter and MethodAdapter merged into ClassVisitor and MethodVisitor, classes using multiple interface inheritance removed (e.g. MemberNode, EmptyVisitor) or adapted (e.g. trace and asmifier classes in asm.util).
  • MethodHandle and MethodType renamed to Handle and Type.
  • improved getCommonSuperClass to avoid resolving loaded classes.
  • improved getCommonSuperClass in ClassWriterComputeFramesTest (more efficient).
  • new checks in CheckClassAdapter.
  • new example, showing how to use the new invokedynamic instruction.
  • bug fixes
    • 315942 asm-xml.dtd fails to mention SWAP element
    • 315984 asm-xml.dtd fails to mention FREM element
    • NOP ATHROW bug (compute frames failed on deadcode in exception handler range)
    • fixed bugs found with FindBugs
    • minor Javadoc improvements and fixes
  • feature requests
    • 316005 Constant pool access
    • 313999 Maven POM should include source-code
    • patch from Ivo Anjo in Analyzer

17 April 2011: ASM 4.0 RC1 (svn-tag: ASM_4_0_RC1)

  • full support of Java 7
  • support of the new invokedynamic encoding and bootstrap method arguments. Done with a new visitInvokeDynamicInsn method.
  • added two new classes MethodHandle and MethodType. Can be used either in visitLdcInsn or as last arguments of visitInvokeDynamicInsn.
  • generified the API to use generics and varargs. However, almost all jars are still small and 1.2 compatible.

21 December 2010: ASM 3.3.1 (svn-tag: ASM_3_3_1)

  • bug fixes
    • 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

30 May 2010: ASM 3.3 (svn-tag: ASM_3_3)

  • 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 <init> 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

11 June 2009: ASM 3.2 (svn-tag: ASM_3_2)

  • 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

29 October 2007: ASM 3.1 (cvs-tag: ASM_3_1)

  • extended semantic of 'internal name' to array classes (internal name equal to descriptor in this case); renamed 'desc' parameter of 'visitTypeInsn' to 'type'
  • new readLabel method in ClassReader
  • new getLabelNode method in MethodNode (see bug 306920)
  • new resetLabel(s) methods in LabelNode and InsnList (feature request 306499)
  • new checks in CheckMethodVisitor (for stack frames)
  • new CheckSignatureAdapter class
  • new Remapper* classes in commons
  • support for primitive types in GeneratorAdaptor.push (feature request 307378)
  • new build options (no writer, no frames support, etc)
  • new tests
  • bug fixes
    • 307600 StackOverflowError in org.objectweb.asm.MethodWriter.findSubroutine()
    • 307392 MethodWriter generates invalid RuntimeInvisibleParameterAnnotations for enum constructors
    • 307242 Patch to compile ASM 2.2.3 against Java 1.4
    • 307011 Typo error in ASM 3.0 User Guide
    • 306921 SignatureReader does not handle inner class extends of other inner class
    • 306920 MethodNode.labelNode(label) smashes "user" data Label.info
    • 306521 Parameter local of visitFrame() is lost when using a ClassNode
    • 306503 CheckClassAdapter doesn't flush its output
    • 306422 Another code cleanup patch
    • 306349 SerialVersionUIDAdder breaks compile if using JDK 1.4
    • bug fix related to xSTORE in tree.analysis.Frame
    • bug fix in LocalVariableSorter
    • javadoc fixes

1 November 2006: ASM 3.0 (cvs-tag: ASM_3_0)

  • visit*Annotation methods can now return null
  • COMPUTE_MAXS now works with all subroutines, even very weird ones that cannot be produced by javac
  • new getters in ClassReader, SKIP_DEBUG now skips visitSource
  • new methods in Type: getObjectType, getConstructorDescriptor
  • InsnList now supports ListIterator interface
  • new insertBefore() and insert*() methods in InsnList class
  • improved Analyzer API, support for abstract and native methods
  • improved Method class behavior with default package
  • minor bug fixes
    • 305716 bug in floating point constant handling in constant pool writing
    • 305917 optimizer.ClassConstantsCollector generates an invalid class constant
    • 306058 FieldNode.accept() cannot handle ClassVisitors yielding null as FieldVisitor
  • new tests
  • javadoc improvements

06 July 2006: ASM 3.0 RC1 (cvs-tag: ASM_3_0_RC1)

  • new API for instruction lists in tree package
  • new JSRInliner class in commons
  • new CodeSizeEvaluator class in commons
  • changes and optimizations in AnalyzerAdapter
  • DataflowInterpreter renamed into SourceInterpreter
  • port of changes from ASM 2.x

06 July 2006: ASM 2.2.3 (cvs-tag: ASM_2_2_3)

  • compute maxs option now takes visitLocalVariable into account
  • bug fix in TraceSignatureVisitor
  • minor Javadoc improvements

20 April 2006: ASM 3.0 beta2 (cvs-tag: ASM_3_0_BETA2)

  • visitFrame is now called after visitLabel in ClassReader
  • new SKIP_FRAMES and SKIP_CODE flags in ClassReader
  • fixed issue with dead code and COMPUTE_FRAMES option in ClassWriter
  • port of bug fixes from ASM_2_2_2
  • refactorings in core package to get same performances as in ASM 2.x (3.0 beta was slightly less performant than 2.x)
  • refactored tests and added many new tests. Tests now cover 100% of the code, except in commons package.

7 April 2006: ASM 2.2.2 (cvs-tag: ASM_2_2_2)

  • bug fix in ClassWriter for SourceDebugExtension attribute
  • bug fix in LocalVariableSorter when same variable slot is used to save different types
  • all fields in classes ClassNode, MethodNode, LookupSwitchInsnNode and TableSwitchInsnNode of the tree package are mutable (non-final)
  • additional checks in CheckClassAdapter, CheckMethodAdapter and CheckAnnotationAdapter
  • new constructor in SimpleVerifier with list of interfaces of the class being verified to allow isAssignableFrom check without loading this class (which may be invalid)

14 December 2005: ASM 3.0 beta (cvs-tag: ASM_3_0_BETA)

  • Major changes for the new Java 6 StackMapTable attribute
    • StackMapTable support integrated in core package (new visitFrame method in MethodVisitor)
    • asm.attrs package removed
    • new commons.AnalyzerAdapter class
    • incremental stack map frames update in LocalVariablesSorter
  • ClassReader and ClassWriter constructors changed
  • ...

14 December 2005: ASM 2.2.1 (cvs-tag: ASM_2_2_1)

  • bug fix in ClassReader for empty annotation array values
  • new accept method in MethodNode
  • new checks in asm.util
  • performance optimizations in LocalVariablesSorter
  • more precise type system used in analysis package
  • javadoc fixes and improvements

24 November 2005: ASM 2.2 (cvs-tag: ASM_2_2)

  • pass through behavior for unknown attributes
  • optimizations for "mostly add" transformations (new ClassWriter constructor)
  • removed constraint for visitTryCatchBlock call order with respect to visitLabel
    • visitTryCatchBlock can be called before or after its labels are visited
    • ClassReader now calls visitTryCatchBloc at the beginning of the method body
  • new AdviceAdapter class in commons
  • new constructor in GeneratorAdapter for better integration with the plain visitors/adapters
  • fixed potential endles loop in IntMap.get()
  • bug fixes in xml package
  • improved javadocs (commons, tree)
  • new tests
  • corbertura added to the build

25 August 2005: ASM 2.1 (cvs-tag: ASM_2_1)

  • support for StackMapTable attribute in asm.attrs
  • restructured StackMap attribute implementation (SM and SMT are using the same frames)
  • addition of Traceable interface in asm.util.attrs
  • new "dependencies" example
  • improved commons.Method
  • deprecated asm.tree.Insn.getByOpcode()
  • public constructor in InsnNode
  • better exception handling in analyzer
  • added Opcodes.V1_6 constant
  • javadoc improvements
  • changed code style (Eclipse formatter + Sun conventions with minor changes)
  • asm-all jar
  • bug fixes
    • correct handling of synthetic attribute vs. synthetic flag
    • bug in TraceClassVisitor
    • bug in analyzer.Frame for ASTORE
    • added BasicValue.hashCode() and DataflowValue.hashCode()
    • bug about size calculation for custom attributes

17 May 2005: ASM 2.0 (cvs-tag: ASM_2_0)

  • Bug fixes

7 February 2005: ASM 2.0.RC1 (cvs-tag: ASM_2_0_RC1)

  • Bug fixes
  • New visitCode() method in MethodVisitor to easily detect first instruction
  • signature support (contribution from Thomas Hallgren)
  • commons package (contribution from CLIB and other projects; not yet stable)
  • memory usage optimization in tree package (contribution from Rene Treffer)
  • performance improvements in core package
  • performance improvements in analysis package (dataflowinterpreter is now two times faster)
  • asm library plugin for Eclipse, used by Bytecode Outline plugin

21 January 2005: ASM 1.5.3 (cvs-tag: ASM_1_5_3)

  • Bug fixes
  • New behavior for visitLineNumber

8 November 2004: ASM 2.0 alpha (cvs-tag: ASM_2_0_ALPHA)

  • Major API changes for Java 5 attributes
    • added new FieldVisitor interface
    • added new AnnotationVisitor interface
    • renamed CodeVisitor into MethodVisitor
    • renamed Constants into Opcodes
    • added and changed methods in ClassVisitor and CodeVisitor
    • removed almost all classes in attrs package
    • removed TreeClassAdapter and TreeCodeAdapter
    • added new MemberNode, AnnotationNode and LabelNode classes
    • many changes in asm.util package
  • Added many new tests, reorganized tests classes and scripts

8 November 2004: ASM 1.5.2 (cvs-tag: ASM_1_5_2)

  • Bug fixes

23 September 2004: ASM 1.5.1 (cvs-tag: ASM_1_5_1)

  • Cleaned up ASMifierClassVisitor
  • Removed AnnotationElementValue
  • Added more tests for attributes and Java 5 annotations
  • Added new annotations example
  • Build package for Maven's ibiblio repository
  • Bug fixes

30 August 2004: ASM 1.5 (cvs-tag: ASM_1_5)

  • Added support for class version in ClassVisitor
  • Changed behavior for unrecognized attributes
  • Added new analyzer in tree.analysis package (contribution from Bing Ran)
  • Improved build files
  • Bug fixes

11 May 2004: ASM 1.4.3 (cvs-tag: ASM_1_4_3)

  • Added tree.analysis package
  • Added xml package, contributed by Eugene Kuleshov
  • Bug fixes

1 March 2004: ASM 1.4.2 (cvs-tag: ASM_1_4_2)

  • Improved build files to facilitate Linux packaging
  • Bug fixes

12 December 2003: ASM 1.4.1 (cvs-tag: ASM_1_4_1)

  • Added attrs package, contributed by Eugene Kuleshov

13 November 2003: ASM 1.4 (cvs-tag: ASM_1_4)

  • Added attribute support

3 November 2003: ASM 1.3.6 (cvs-tag: ASM_1_3_6)

  • Changed license from LGPL to BSD

8 October 2003: ASM 1.3.5 (cvs-tag: ASM_1_3_5)

  • Bug fixes
  • Added thread safety support in ClassReader
  • Added equals and hashcode in Type
  • Added FAQ

9 July 2003: ASM 1.3.4 (cvs-tag: ASM_1_3_4)

  • Added kASM jar (needed a small refactoring)

3 October 2002: ASM 1.3.3 (cvs-tag: ASM_1_3_3)

  • Added tree package
  • Added support for GOTO_W and JSR_W
  • Added an ant target to create a debian package

6 September 2002: ASM 1.3.2 (cvs-tag: ASM_1_3_2)

  • Added util package

6 September 2002: ASM 1.3.1 (cvs-tag: ASM_1_3_1)

  • Bug fix

11 July 2002: ASM 1.3 (cvs-tag: ASM_1_3)

  • First public version

Origins

  • The ASM project was created by Eric Bruneton in 2000, during his PhD at INRIA. At that time it was only a code generator (no ClassReader, no Visitor concept). It was used to generate dynamic stub and proxy classes, before the java.lang.reflect.Proxy class was released in JDK 1.3. These dynamic classes were used to transparently add non functional properties (logging, persistence, replication, etc) to user components.
  • The visitor idea and the ClassReader concepts were added later, in order to be able to transform existing classes. This was needed to insert the non functional code directly in the user classes, instead of in an intermediate proxy (for better performance). These new features were designed and implemented by Eric Bruneton after his PhD, at France Telecom R&D (now Orange Labs), in order to implement the Fractal component model.
  • The ASM project was released in Open Source in 2002, at the same time as the Fractal project. Since then, many external contributions have been done to the project. The most important contributors are now part of the ASM team, namely Eugene Kuleshov (since 2003), Andrei Loskutov (since 2004) and Rémi Forax (since 2008).

Copyright © 1999-2009, OW2 Consortium | contact | webmaster | Last modified at 2014-03-23 11:31 AM