| org.objectweb.asm.commons.LocalVariablesSorter org.objectweb.asm.commons.GeneratorAdapter
All known Subclasses: org.objectweb.asm.commons.AdviceAdapter,
GeneratorAdapter | public class GeneratorAdapter extends LocalVariablesSorter (Code) | | A
org.objectweb.asm.MethodAdapter with convenient methods to generate
code. For example, using this adapter, the class below
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();
author: Juozas Baliuka author: Chris Nokleberg author: Eric Bruneton |
Method Summary | |
public void | arrayLength() Generates the instruction to compute the length of an array. | public void | arrayLoad(Type type) Generates the instruction to load an element from an array. | public void | arrayStore(Type type) Generates the instruction to store an element in an array. | public void | box(Type type) Generates the instructions to box the top stack value. | public void | cast(Type from, Type to) Generates the instructions to cast a numerical value from one type to
another. | public void | catchException(Label start, Label end, Type exception) Marks the start of an exception handler. | public void | checkCast(Type type) Generates the instruction to check that the top stack value is of the
given type. | public void | dup() Generates a DUP instruction. | public void | dup2() Generates a DUP2 instruction. | public void | dup2X1() Generates a DUP2_X1 instruction. | public void | dup2X2() Generates a DUP2_X2 instruction. | public void | dupX1() Generates a DUP_X1 instruction. | public void | dupX2() Generates a DUP_X2 instruction. | public void | endMethod() Marks the end of the visited method. | public void | getField(Type owner, String name, Type type) Generates the instruction to push the value of a non static field on the
stack. | public Type | getLocalType(int local) Returns the type of the given local variable.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). | public void | getStatic(Type owner, String name, Type type) Generates the instruction to push the value of a static field on the
stack. | public void | goTo(Label label) Generates the instruction to jump to the given label. | public 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.
Parameters: type - the type of the top two stack values. Parameters: mode - how these values must be compared. | public 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.
Parameters: mode - how these values must be compared. | public void | ifNonNull(Label label) Generates the instruction to jump to the given label if the top stack
value is not null. | public void | ifNull(Label label) Generates the instruction to jump to the given label if the top stack
value is null. | public 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.
Parameters: mode - how these values must be compared. | public void | iinc(int local, int amount) Generates the instruction to increment the given local variable. | public void | instanceOf(Type type) Generates the instruction to test if the top stack value is of the given
type. | public void | invokeConstructor(Type type, Method method) Generates the instruction to invoke a constructor. | public void | invokeInterface(Type owner, Method method) Generates the instruction to invoke an interface method. | public void | invokeStatic(Type owner, Method method) Generates the instruction to invoke a static method. | public void | invokeVirtual(Type owner, Method method) Generates the instruction to invoke a normal method. | public void | loadArg(int arg) Generates the instruction to load the given method argument on the stack. | public void | loadArgArray() Generates the instructions to load all the method arguments on the stack,
as a single object array. | public void | loadArgs(int arg, int count) Generates the instructions to load the given method arguments on the
stack. | public void | loadArgs() Generates the instructions to load all the method arguments on the stack. | public void | loadLocal(int local) Generates the instruction to load the given local variable on the stack. | public void | loadLocal(int local, Type type) Generates the instruction to load the given local variable on the stack. | public void | loadThis() Generates the instruction to load 'this' on the stack. | public void | mark(Label label) Marks the current code position with the given label. | public Label | mark() Marks the current code position with a new label. | public void | math(int op, Type type) Generates the instruction to do the specified mathematical or logical
operation.
Parameters: op - a mathematical or logical operation. | public void | monitorEnter() Generates the instruction to get the monitor of the top stack value. | public void | monitorExit() Generates the instruction to release the monitor of the top stack value. | public void | newArray(Type type) Generates the instruction to create a new array. | public void | newInstance(Type type) Generates the instruction to create a new object. | public Label | newLabel() Creates a new
Label . | public void | not() Generates the instructions to compute the bitwise negation of the top
stack value. | public void | pop() Generates a POP instruction. | public void | pop2() Generates a POP2 instruction. | public void | push(boolean value) Generates the instruction to push the given value on the stack. | public void | push(int value) Generates the instruction to push the given value on the stack. | public void | push(long value) Generates the instruction to push the given value on the stack. | public void | push(float value) Generates the instruction to push the given value on the stack. | public void | push(double value) Generates the instruction to push the given value on the stack. | public void | push(String value) Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. | public void | push(Type value) Generates the instruction to push the given value on the stack. | public void | putField(Type owner, String name, Type type) Generates the instruction to store the top stack value in a non static
field. | public void | putStatic(Type owner, String name, Type type) Generates the instruction to store the top stack value in a static field. | public void | ret(int local) Generates a RET instruction. | public void | returnValue() Generates the instruction to return the top stack value to the caller. | protected void | setLocalType(int local, Type type) | public void | storeArg(int arg) Generates the instruction to store the top stack value in the given
method argument. | public void | storeLocal(int local) Generates the instruction to store the top stack value in the given local
variable. | public void | storeLocal(int local, Type type) Generates the instruction to store the top stack value in the given local
variable. | public void | swap() Generates a SWAP instruction. | public void | swap(Type prev, Type type) Generates the instructions to swap the top two stack values. | public void | tableSwitch(int[] keys, TableSwitchGenerator generator) Generates the instructions for a switch statement. | public void | tableSwitch(int[] keys, TableSwitchGenerator generator, boolean useTable) Generates the instructions for a switch statement. | public void | throwException() Generates the instruction to throw an exception. | public void | throwException(Type type, String msg) Generates the instructions to create and throw an exception. | public void | unbox(Type type) Generates the instructions to unbox the top stack value. |
GeneratorAdapter | public GeneratorAdapter(MethodVisitor mv, int access, String name, String desc)(Code) | | Creates a new
GeneratorAdapter .
Parameters: mv - the method visitor to which this adapter delegates calls. Parameters: access - the method's access flags (see Opcodes). Parameters: name - the method's name. Parameters: desc - the method's descriptor (see Type Type). |
GeneratorAdapter | public GeneratorAdapter(int access, Method method, MethodVisitor mv)(Code) | | Creates a new
GeneratorAdapter .
Parameters: access - access flags of the adapted method. Parameters: method - the adapted method. Parameters: mv - the method visitor to which this adapter delegates calls. |
GeneratorAdapter | public GeneratorAdapter(int access, Method method, String signature, Type[] exceptions, ClassVisitor cv)(Code) | | Creates a new
GeneratorAdapter .
Parameters: access - access flags of the adapted method. Parameters: method - the adapted method. Parameters: signature - the signature of the adapted method (may benull). Parameters: exceptions - the exceptions thrown by the adapted method (may benull). Parameters: cv - the class visitor to which this adapter delegates calls. |
arrayLength | public void arrayLength()(Code) | | Generates the instruction to compute the length of an array.
|
arrayLoad | public void arrayLoad(Type type)(Code) | | Generates the instruction to load an element from an array.
Parameters: type - the type of the array element to be loaded. |
arrayStore | public void arrayStore(Type type)(Code) | | Generates the instruction to store an element in an array.
Parameters: type - the type of the array element to be stored. |
box | public void box(Type type)(Code) | | Generates the instructions to box the top stack value. This value is
replaced by its boxed equivalent on top of the stack.
Parameters: type - the type of the top stack value. |
cast | public void cast(Type from, Type to)(Code) | | Generates the instructions to cast a numerical value from one type to
another.
Parameters: from - the type of the top stack value Parameters: to - the type into which this value must be cast. |
catchException | public void catchException(Label start, Label end, Type exception)(Code) | | Marks the start of an exception handler.
Parameters: start - beginning of the exception handler's scope (inclusive). Parameters: end - end of the exception handler's scope (exclusive). Parameters: exception - internal name of the type of exceptions handled by thehandler. |
checkCast | public void checkCast(Type type)(Code) | | Generates the instruction to check that the top stack value is of the
given type.
Parameters: type - a class or interface type. |
dup | public void dup()(Code) | | Generates a DUP instruction.
|
dup2 | public void dup2()(Code) | | Generates a DUP2 instruction.
|
dup2X1 | public void dup2X1()(Code) | | Generates a DUP2_X1 instruction.
|
dup2X2 | public void dup2X2()(Code) | | Generates a DUP2_X2 instruction.
|
dupX1 | public void dupX1()(Code) | | Generates a DUP_X1 instruction.
|
dupX2 | public void dupX2()(Code) | | Generates a DUP_X2 instruction.
|
endMethod | public void endMethod()(Code) | | Marks the end of the visited method.
|
getField | public void getField(Type owner, String name, Type type)(Code) | | Generates the instruction to push the value of a non static field on the
stack.
Parameters: owner - the class in which the field is defined. Parameters: name - the name of the field. Parameters: type - the type of the field. |
getLocalType | public Type getLocalType(int local)(Code) | | Returns the type of the given local variable.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). the type of the given local variable. |
getStatic | public void getStatic(Type owner, String name, Type type)(Code) | | Generates the instruction to push the value of a static field on the
stack.
Parameters: owner - the class in which the field is defined. Parameters: name - the name of the field. Parameters: type - the type of the field. |
goTo | public void goTo(Label label)(Code) | | Generates the instruction to jump to the given label.
Parameters: label - where to jump if the condition is true. |
ifCmp | public void ifCmp(Type type, int mode, Label label)(Code) | | Generates the instructions to jump to a label based on the comparison of
the top two stack values.
Parameters: type - the type of the top two stack values. Parameters: mode - how these values must be compared. One of EQ, NE, LT, GE, GT,LE. Parameters: label - where to jump if the comparison result is true. |
ifICmp | public void ifICmp(int mode, Label label)(Code) | | Generates the instructions to jump to a label based on the comparison of
the top two integer stack values.
Parameters: mode - how these values must be compared. One of EQ, NE, LT, GE, GT,LE. Parameters: label - where to jump if the comparison result is true. |
ifNonNull | public void ifNonNull(Label label)(Code) | | Generates the instruction to jump to the given label if the top stack
value is not null.
Parameters: label - where to jump if the condition is true. |
ifNull | public void ifNull(Label label)(Code) | | Generates the instruction to jump to the given label if the top stack
value is null.
Parameters: label - where to jump if the condition is true. |
ifZCmp | public void ifZCmp(int mode, Label label)(Code) | | Generates the instructions to jump to a label based on the comparison of
the top integer stack value with zero.
Parameters: mode - how these values must be compared. One of EQ, NE, LT, GE, GT,LE. Parameters: label - where to jump if the comparison result is true. |
iinc | public void iinc(int local, int amount)(Code) | | Generates the instruction to increment the given local variable.
Parameters: local - the local variable to be incremented. Parameters: amount - the amount by which the local variable must be incremented. |
instanceOf | public void instanceOf(Type type)(Code) | | Generates the instruction to test if the top stack value is of the given
type.
Parameters: type - a class or interface type. |
invokeConstructor | public void invokeConstructor(Type type, Method method)(Code) | | Generates the instruction to invoke a constructor.
Parameters: type - the class in which the constructor is defined. Parameters: method - the constructor to be invoked. |
invokeInterface | public void invokeInterface(Type owner, Method method)(Code) | | Generates the instruction to invoke an interface method.
Parameters: owner - the class in which the method is defined. Parameters: method - the method to be invoked. |
invokeStatic | public void invokeStatic(Type owner, Method method)(Code) | | Generates the instruction to invoke a static method.
Parameters: owner - the class in which the method is defined. Parameters: method - the method to be invoked. |
invokeVirtual | public void invokeVirtual(Type owner, Method method)(Code) | | Generates the instruction to invoke a normal method.
Parameters: owner - the class in which the method is defined. Parameters: method - the method to be invoked. |
loadArg | public void loadArg(int arg)(Code) | | Generates the instruction to load the given method argument on the stack.
Parameters: arg - the index of a method argument. |
loadArgArray | public void loadArgArray()(Code) | | Generates the instructions to load all the method arguments on the stack,
as a single object array.
|
loadArgs | public void loadArgs(int arg, int count)(Code) | | Generates the instructions to load the given method arguments on the
stack.
Parameters: arg - the index of the first method argument to be loaded. Parameters: count - the number of method arguments to be loaded. |
loadArgs | public void loadArgs()(Code) | | Generates the instructions to load all the method arguments on the stack.
|
loadLocal | public void loadLocal(int local)(Code) | | Generates the instruction to load the given local variable on the stack.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). |
loadLocal | public void loadLocal(int local, Type type)(Code) | | Generates the instruction to load the given local variable on the stack.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). Parameters: type - the type of this local variable. |
loadThis | public void loadThis()(Code) | | Generates the instruction to load 'this' on the stack.
|
mark | public void mark(Label label)(Code) | | Marks the current code position with the given label.
Parameters: label - a label. |
mark | public Label mark()(Code) | | Marks the current code position with a new label.
the label that was created to mark the current code position. |
math | public void math(int op, Type type)(Code) | | Generates the instruction to do the specified mathematical or logical
operation.
Parameters: op - a mathematical or logical operation. Must be one of ADD, SUB,MUL, DIV, REM, NEG, SHL, SHR, USHR, AND, OR, XOR. Parameters: type - the type of the operand(s) for this operation. |
monitorEnter | public void monitorEnter()(Code) | | Generates the instruction to get the monitor of the top stack value.
|
monitorExit | public void monitorExit()(Code) | | Generates the instruction to release the monitor of the top stack value.
|
newArray | public void newArray(Type type)(Code) | | Generates the instruction to create a new array.
Parameters: type - the type of the array elements. |
newInstance | public void newInstance(Type type)(Code) | | Generates the instruction to create a new object.
Parameters: type - the class of the object to be created. |
not | public void not()(Code) | | Generates the instructions to compute the bitwise negation of the top
stack value.
|
pop | public void pop()(Code) | | Generates a POP instruction.
|
pop2 | public void pop2()(Code) | | Generates a POP2 instruction.
|
push | public void push(boolean value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
push | public void push(int value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
push | public void push(long value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
push | public void push(float value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
push | public void push(double value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
push | public void push(String value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. May be null. |
push | public void push(Type value)(Code) | | Generates the instruction to push the given value on the stack.
Parameters: value - the value to be pushed on the stack. |
putField | public void putField(Type owner, String name, Type type)(Code) | | Generates the instruction to store the top stack value in a non static
field.
Parameters: owner - the class in which the field is defined. Parameters: name - the name of the field. Parameters: type - the type of the field. |
putStatic | public void putStatic(Type owner, String name, Type type)(Code) | | Generates the instruction to store the top stack value in a static field.
Parameters: owner - the class in which the field is defined. Parameters: name - the name of the field. Parameters: type - the type of the field. |
returnValue | public void returnValue()(Code) | | Generates the instruction to return the top stack value to the caller.
|
setLocalType | protected void setLocalType(int local, Type type)(Code) | | |
storeArg | public void storeArg(int arg)(Code) | | Generates the instruction to store the top stack value in the given
method argument.
Parameters: arg - the index of a method argument. |
storeLocal | public void storeLocal(int local)(Code) | | Generates the instruction to store the top stack value in the given local
variable.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). |
storeLocal | public void storeLocal(int local, Type type)(Code) | | Generates the instruction to store the top stack value in the given local
variable.
Parameters: local - a local variable identifier, as returned byLocalVariablesSorter.newLocal(Type) newLocal(). Parameters: type - the type of this local variable. |
swap | public void swap()(Code) | | Generates a SWAP instruction.
|
swap | public void swap(Type prev, Type type)(Code) | | Generates the instructions to swap the top two stack values.
Parameters: prev - type of the top - 1 stack value. Parameters: type - type of the top stack value. |
tableSwitch | public void tableSwitch(int[] keys, TableSwitchGenerator generator)(Code) | | Generates the instructions for a switch statement.
Parameters: keys - the switch case keys. Parameters: generator - a generator to generate the code for the switch cases. |
tableSwitch | public void tableSwitch(int[] keys, TableSwitchGenerator generator, boolean useTable)(Code) | | Generates the instructions for a switch statement.
Parameters: keys - the switch case keys. Parameters: generator - a generator to generate the code for the switch cases. Parameters: useTable - true to use a TABLESWITCH instruction, orfalse to use a LOOKUPSWITCH instruction. |
throwException | public void throwException()(Code) | | Generates the instruction to throw an exception.
|
throwException | public void throwException(Type type, String msg)(Code) | | Generates the instructions to create and throw an exception. The
exception class must have a constructor with a single String argument.
Parameters: type - the class of the exception to be thrown. Parameters: msg - the detailed message of the exception. |
unbox | public void unbox(Type type)(Code) | | Generates the instructions to unbox the top stack value. This value is
replaced by its unboxed equivalent on top of the stack.
Parameters: type - the type of the top stack value. |
Methods inherited from org.objectweb.asm.commons.LocalVariablesSorter | public int newLocal(Type type)(Code)(Java Doc) protected void setLocalType(int local, Type type)(Code)(Java Doc) public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)(Code)(Java Doc) public void visitIincInsn(int var, int increment)(Code)(Java Doc) public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)(Code)(Java Doc) public void visitMaxs(int maxStack, int maxLocals)(Code)(Java Doc) public void visitVarInsn(int opcode, int var)(Code)(Java Doc)
|
|
|