Package org.compass.core.util.asm.commons

Provides some useful class and method adapters.


Interface Summary
TableSwitchGenerator A code generator for switch statements.

Class Summary
AdviceAdapter A MethodAdapter to insert before, after and around advices in methods and constructors.
AnalyzerAdapter A MethodAdapter that keeps track of stack map frame changes between visitFrame calls.
CodeSizeEvaluator A MethodAdapter that can be used to approximate method size.
EmptyVisitor An empty implementation of the ASM visitor interfaces.
GeneratorAdapter A MethodAdapter with convenient methods to generate code.
JSRInlinerAdapter A MethodAdapter that removes JSR instructions and inlines the referenced subroutines.
LocalVariablesSorter A MethodAdapter that renumbers local variables in their order of appearance.
Method A named method descriptor.
Remapper A class responsible for remapping types and names.
RemappingAnnotationAdapter An AnnotationVisitor adapter for type remapping.
RemappingClassAdapter A ClassAdapter for type remapping.
RemappingFieldAdapter A FieldVisitor adapter for type remapping.
RemappingMethodAdapter A MethodAdapter for type mapping.
RemappingSignatureAdapter A SignatureVisitor adapter for type mapping.
SerialVersionUIDAdder A ClassAdapter that adds a serial version unique identifier to a class if missing.
StaticInitMerger A ClassAdapter that merges clinit methods into a single one.

Package org.compass.core.util.asm.commons Description

Provides some useful class and method adapters. The preferred way of using these adapters is by chaining them together and to custom adapters (instead of inheriting from them). Indeed this approach provides more combination possibilities than inheritance. For instance, suppose you want to implement an adapter MyAdapter than needs sorted local variables and intermediate stack map frame values taking into account the local variables sort. By using inheritance, this would require MyAdapter to extend AnalyzerAdapter, itself extending LocalVariablesSorter. But AnalyzerAdapter is not a subclass of LocalVariablesSorter, so this is not possible. On the contrary, by using delegation, you can make LocalVariablesSorter delegate to AnalyzerAdapter, itself delegating to MyAdapter. In this case AnalyzerAdapter computes intermediate frames based on the output of LocalVariablesSorter, and MyAdapter can add new locals by calling the newLocal method on LocalVariablesSorter, and can get the stack map frame state before each instruction by reading the locals and stack fields in AnalyzerAdapter (this requires references from MyAdapter back to LocalVariablesSorter and AnalyzerAdapter).

Copyright (c) 2004-2008 The Compass Project.