org.objectweb.asm.commons
public class GeneratorAdapter extends LocalVariablesSorter
public class Example { public static void main(String[] args) { System.out.println("Hello world!"); } }can be generated as follows:
ClassWriter cw = new ClassWriter(true); cw.visit(V1_1, ACC_PUBLIC, "Example", null, "java/lang/Object", null); Method m = Method.getMethod("void <init> ()"); GeneratorAdapter mg = new GeneratorAdapter(ACC_PUBLIC, m, null, null, cw); mg.loadThis(); mg.invokeConstructor(Type.getType(Object.class), m); mg.returnValue(); mg.endMethod(); m = Method.getMethod("void main (String[])"); mg = new GeneratorAdapter(ACC_PUBLIC + ACC_STATIC, m, null, null, cw); mg.getStatic(Type.getType(System.class), "out", Type.getType(PrintStream.class)); mg.push("Hello world!"); mg.invokeVirtual(Type.getType(PrintStream.class), Method.getMethod("void println (String)")); mg.returnValue(); mg.endMethod(); cw.visitEnd();
Field Summary | |
---|---|
static int | ADD
Constant for the math method. |
static int | AND
Constant for the math method. |
static int | DIV
Constant for the math method. |
static int | EQ
Constant for the ifCmp method. |
static int | GE
Constant for the ifCmp method. |
static int | GT
Constant for the ifCmp method. |
static int | LE
Constant for the ifCmp method. |
static int | LT
Constant for the ifCmp method. |
static int | MUL
Constant for the math method. |
static int | NE
Constant for the ifCmp method. |
static int | NEG
Constant for the math method. |
static int | OR
Constant for the math method. |
static int | REM
Constant for the math method. |
static int | SHL
Constant for the math method. |
static int | SHR
Constant for the math method. |
static int | SUB
Constant for the math method. |
static int | USHR
Constant for the math method. |
static int | XOR
Constant for the math method. |
Constructor Summary | |
---|---|
GeneratorAdapter(MethodVisitor mv, int access, String name, String desc)
Creates a new GeneratorAdapter.
| |
GeneratorAdapter(int access, Method method, MethodVisitor mv)
Creates a new GeneratorAdapter.
| |
GeneratorAdapter(int access, Method method, String signature, Type[] exceptions, ClassVisitor cv)
Creates a new GeneratorAdapter.
|
Method Summary | |
---|---|
void | arrayLength()
Generates the instruction to compute the length of an array. |
void | arrayLoad(Type type)
Generates the instruction to load an element from an array.
|
void | arrayStore(Type type)
Generates the instruction to store an element in an array.
|
void | box(Type type)
Generates the instructions to box the top stack value. |
void | cast(Type from, Type to)
Generates the instructions to cast a numerical value from one type to
another.
|
void | catchException(Label start, Label end, Type exception)
Marks the start of an exception handler.
|
void | checkCast(Type type)
Generates the instruction to check that the top stack value is of the
given type.
|
void | dup()
Generates a DUP instruction. |
void | dup2()
Generates a DUP2 instruction. |
void | dup2X1()
Generates a DUP2_X1 instruction. |
void | dup2X2()
Generates a DUP2_X2 instruction. |
void | dupX1()
Generates a DUP_X1 instruction. |
void | dupX2()
Generates a DUP_X2 instruction. |
void | endMethod()
Marks the end of the visited method. |
void | getField(Type owner, String name, Type type)
Generates the instruction to push the value of a non static field on the
stack.
|
Type | getLocalType(int local)
Returns the type of the given local variable.
|
void | getStatic(Type owner, String name, Type type)
Generates the instruction to push the value of a static field on the
stack.
|
void | goTo(Label label)
Generates the instruction to jump to the given label.
|
void | ifCmp(Type type, int mode, Label label)
Generates the instructions to jump to a label based on the comparison of
the top two stack values.
|
void | ifICmp(int mode, Label label)
Generates the instructions to jump to a label based on the comparison of
the top two integer stack values.
|
void | ifNonNull(Label label)
Generates the instruction to jump to the given label if the top stack
value is not null.
|
void | ifNull(Label label)
Generates the instruction to jump to the given label if the top stack
value is null.
|
void | ifZCmp(int mode, Label label)
Generates the instructions to jump to a label based on the comparison of
the top integer stack value with zero.
|
void | iinc(int local, int amount)
Generates the instruction to increment the given local variable.
|
void | instanceOf(Type type)
Generates the instruction to test if the top stack value is of the given
type.
|
void | invokeConstructor(Type type, Method method)
Generates the instruction to invoke a constructor.
|
void | invokeDynamic(Method method)
Generates the instruction to invoke a dynamic method.
|
void | invokeInterface(Type owner, Method method)
Generates the instruction to invoke an interface method.
|
void | invokeStatic(Type owner, Method method)
Generates the instruction to invoke a static method.
|
void | invokeVirtual(Type owner, Method method)
Generates the instruction to invoke a normal method.
|
void | loadArg(int arg)
Generates the instruction to load the given method argument on the stack.
|
void | loadArgArray()
Generates the instructions to load all the method arguments on the stack,
as a single object array. |
void | loadArgs(int arg, int count)
Generates the instructions to load the given method arguments on the
stack.
|
void | loadArgs()
Generates the instructions to load all the method arguments on the stack. |
void | loadLocal(int local)
Generates the instruction to load the given local variable on the stack.
|
void | loadLocal(int local, Type type)
Generates the instruction to load the given local variable on the stack.
|
void | loadThis()
Generates the instruction to load 'this' on the stack. |
void | mark(Label label)
Marks the current code position with the given label.
|
Label | mark()
Marks the current code position with a new label.
|
void | math(int op, Type type)
Generates the instruction to do the specified mathematical or logical
operation.
|
void | monitorEnter()
Generates the instruction to get the monitor of the top stack value. |
void | monitorExit()
Generates the instruction to release the monitor of the top stack value. |
void | newArray(Type type)
Generates the instruction to create a new array.
|
void | newInstance(Type type)
Generates the instruction to create a new object.
|
Label | newLabel()
Creates a new Label.
|
void | not()
Generates the instructions to compute the bitwise negation of the top
stack value. |
void | pop()
Generates a POP instruction. |
void | pop2()
Generates a POP2 instruction. |
void | push(boolean value)
Generates the instruction to push the given value on the stack.
|
void | push(int value)
Generates the instruction to push the given value on the stack.
|
void | push(long value)
Generates the instruction to push the given value on the stack.
|
void | push(float value)
Generates the instruction to push the given value on the stack.
|
void | push(double value)
Generates the instruction to push the given value on the stack.
|
void | push(String value)
Generates the instruction to push the given value on the stack.
|
void | push(Type value)
Generates the instruction to push the given value on the stack.
|
void | putField(Type owner, String name, Type type)
Generates the instruction to store the top stack value in a non static
field.
|
void | putStatic(Type owner, String name, Type type)
Generates the instruction to store the top stack value in a static field.
|
void | ret(int local)
Generates a RET instruction.
|
void | returnValue()
Generates the instruction to return the top stack value to the caller. |
protected void | setLocalType(int local, Type type) |
void | storeArg(int arg)
Generates the instruction to store the top stack value in the given
method argument.
|
void | storeLocal(int local)
Generates the instruction to store the top stack value in the given local
variable.
|
void | storeLocal(int local, Type type)
Generates the instruction to store the top stack value in the given local
variable.
|
void | swap()
Generates a SWAP instruction. |
void | swap(Type prev, Type type)
Generates the instructions to swap the top two stack values.
|
void | tableSwitch(int[] keys, TableSwitchGenerator generator)
Generates the instructions for a switch statement.
|
void | tableSwitch(int[] keys, TableSwitchGenerator generator, boolean useTable)
Generates the instructions for a switch statement.
|
void | throwException()
Generates the instruction to throw an exception. |
void | throwException(Type type, String msg)
Generates the instructions to create and throw an exception. |
void | unbox(Type type)
Generates the instructions to unbox the top stack value. |
void | valueOf(Type type)
Generates the instructions to box the top stack value using Java 5's
valueOf() method. |
math
method.math
method.math
method.ifCmp
method.ifCmp
method.ifCmp
method.ifCmp
method.ifCmp
method.math
method.ifCmp
method.math
method.math
method.math
method.math
method.math
method.math
method.math
method.math
method.Parameters: mv the method visitor to which this adapter delegates calls. access the method's access flags (see Opcodes). name the method's name. desc the method's descriptor (see Type
).
Parameters: access access flags of the adapted method. method the adapted method. mv the method visitor to which this adapter delegates calls.
Parameters: access access flags of the adapted method. method the adapted method. signature the signature of the adapted method (may be null). exceptions the exceptions thrown by the adapted method (may be null). cv the class visitor to which this adapter delegates calls.
Parameters: type the type of the array element to be loaded.
Parameters: type the type of the array element to be stored.
Parameters: type the type of the top stack value.
Parameters: from the type of the top stack value to the type into which this value must be cast.
Parameters: start beginning of the exception handler's scope (inclusive). end end of the exception handler's scope (exclusive). exception internal name of the type of exceptions handled by the handler.
Parameters: type a class or interface type.
Parameters: owner the class in which the field is defined. name the name of the field. type the type of the field.
Parameters: local a local variable identifier, as returned by
newLocal()
.
Returns: the type of the given local variable.
Parameters: owner the class in which the field is defined. name the name of the field. type the type of the field.
Parameters: label where to jump if the condition is true.
Parameters: type the type of the top two stack values. mode how these values must be compared. One of EQ, NE, LT, GE, GT, LE. label where to jump if the comparison result is true.
Parameters: mode how these values must be compared. One of EQ, NE, LT, GE, GT, LE. label where to jump if the comparison result is true.
Parameters: label where to jump if the condition is true.
Parameters: label where to jump if the condition is true.
Parameters: mode how these values must be compared. One of EQ, NE, LT, GE, GT, LE. label where to jump if the comparison result is true.
Parameters: local the local variable to be incremented. amount the amount by which the local variable must be incremented.
Parameters: type a class or interface type.
Parameters: type the class in which the constructor is defined. method the constructor to be invoked.
Parameters: method the method to be invoked.
Parameters: owner the class in which the method is defined. method the method to be invoked.
Parameters: owner the class in which the method is defined. method the method to be invoked.
Parameters: owner the class in which the method is defined. method the method to be invoked.
Parameters: arg the index of a method argument.
Parameters: arg the index of the first method argument to be loaded. count the number of method arguments to be loaded.
Parameters: local a local variable identifier, as returned by
newLocal()
.
Parameters: local a local variable identifier, as returned by
newLocal()
. type the type of this local variable.
Parameters: label a label.
Returns: the label that was created to mark the current code position.
Parameters: op a mathematical or logical operation. Must be one of ADD, SUB, MUL, DIV, REM, NEG, SHL, SHR, USHR, AND, OR, XOR. type the type of the operand(s) for this operation.
Parameters: type the type of the array elements.
Parameters: type the class of the object to be created.
Parameters: value the value to be pushed on the stack.
Parameters: value the value to be pushed on the stack.
Parameters: value the value to be pushed on the stack.
Parameters: value the value to be pushed on the stack.
Parameters: value the value to be pushed on the stack.
Parameters: value the value to be pushed on the stack. May be null.
Parameters: value the value to be pushed on the stack.
Parameters: owner the class in which the field is defined. name the name of the field. type the type of the field.
Parameters: owner the class in which the field is defined. name the name of the field. type the type of the field.
Parameters: local a local variable identifier, as returned by
newLocal()
.
Parameters: arg the index of a method argument.
Parameters: local a local variable identifier, as returned by
newLocal()
.
Parameters: local a local variable identifier, as returned by
newLocal()
. type the type of this local variable.
Parameters: prev type of the top - 1 stack value. type type of the top stack value.
Parameters: keys the switch case keys. generator a generator to generate the code for the switch cases.
Parameters: keys the switch case keys. generator a generator to generate the code for the switch cases. useTable true to use a TABLESWITCH instruction, or false to use a LOOKUPSWITCH instruction.
Parameters: type the class of the exception to be thrown. msg the detailed message of the exception.
Parameters: type the type of the top stack value.
Parameters: type the type of the top stack value.