| org.objectweb.asm.jip.commons.LocalVariablesSorter org.objectweb.asm.jip.commons.GeneratorAdapter
All known Subclasses: org.objectweb.asm.jip.commons.AdviceAdapter,
GeneratorAdapter | public class GeneratorAdapter extends LocalVariablesSorter (Code) | | A
org.objectweb.asm.jip.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 by GeneratorAdapter.newLocalnewLocal. | 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 int | newLocal(Type type) Creates a new local variable of the given type.
Parameters: type - the type of the local variable to be created. | 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. | 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 by GeneratorAdapter.newLocalnewLocal. 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 by GeneratorAdapter.newLocalnewLocal. |
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 by GeneratorAdapter.newLocalnewLocal. 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. |
newLocal | public int newLocal(Type type)(Code) | | Creates a new local variable of the given type.
Parameters: type - the type of the local variable to be created. the identifier of the newly created local variable. |
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. |
ret | public void ret(int local)(Code) | | Generates a RET instruction.
Parameters: local - a local variable identifier, as returned by GeneratorAdapter.newLocalnewLocal. |
returnValue | public void returnValue()(Code) | | Generates the instruction to return the top stack value to the caller.
|
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 by GeneratorAdapter.newLocalnewLocal. |
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 by GeneratorAdapter.newLocalnewLocal. 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. |
Fields inherited from org.objectweb.asm.jip.commons.LocalVariablesSorter | final protected int firstLocal(Code)(Java Doc)
|
|
|