Package net.sf.cglib.core
Class CodeEmitter
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- net.sf.cglib.core.LocalVariablesSorter
-
- net.sf.cglib.core.CodeEmitter
-
public class CodeEmitter extends LocalVariablesSorter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
CodeEmitter.State
-
Field Summary
Fields Modifier and Type Field Description static int
ADD
static int
AND
private static Signature
BOOLEAN_VALUE
private ClassEmitter
ce
private static Signature
CHAR_VALUE
private static Signature
CSTRUCT_NULL
private static Signature
CSTRUCT_STRING
static int
DIV
private static Signature
DOUBLE_VALUE
static int
EQ
private static Signature
FLOAT_VALUE
static int
GE
static int
GT
private static Signature
INT_VALUE
static int
LE
private static Signature
LONG_VALUE
static int
LT
static int
MUL
static int
NE
static int
NEG
static int
OR
static int
REM
private CodeEmitter.State
state
static int
SUB
static int
USHR
static int
XOR
-
Fields inherited from class net.sf.cglib.core.LocalVariablesSorter
firstLocal
-
-
Constructor Summary
Constructors Constructor Description CodeEmitter(ClassEmitter ce, org.objectweb.asm.MethodVisitor mv, int access, Signature sig, org.objectweb.asm.Type[] exceptionTypes)
CodeEmitter(CodeEmitter wrap)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
aaload()
void
aaload(int index)
void
aastore()
void
aconst_null()
void
array_load(org.objectweb.asm.Type type)
void
array_store(org.objectweb.asm.Type type)
void
arraylength()
void
athrow()
Block
begin_block()
void
box(org.objectweb.asm.Type type)
If the argument is a primitive class, replaces the primitive value on the top of the stack with the wrapped (Object) equivalent.void
cast_numeric(org.objectweb.asm.Type from, org.objectweb.asm.Type to)
Casts from one primitive numeric type to anothervoid
catch_exception(Block block, org.objectweb.asm.Type exception)
void
checkcast(org.objectweb.asm.Type type)
void
checkcast_this()
void
create_arg_array()
Allocates and fills an Object[] array with the arguments to the current method.void
dup()
void
dup_x1()
void
dup_x2()
void
dup2()
void
dup2_x1()
void
dup2_x2()
(package private) void
emit_field(int opcode, org.objectweb.asm.Type ctype, java.lang.String name, org.objectweb.asm.Type ftype)
private void
emit_invoke(int opcode, org.objectweb.asm.Type type, Signature sig, boolean isInterface)
private void
emit_type(int opcode, org.objectweb.asm.Type type)
void
end_method()
ClassEmitter
getClassEmitter()
void
getfield(java.lang.String name)
void
getfield(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
MethodInfo
getMethodInfo()
org.objectweb.asm.Type
getReturnType()
Signature
getSignature()
void
getstatic(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
void
goTo(org.objectweb.asm.Label label)
void
if_cmp(org.objectweb.asm.Type type, int mode, org.objectweb.asm.Label label)
void
if_icmp(int mode, org.objectweb.asm.Label label)
void
if_jump(int mode, org.objectweb.asm.Label label)
void
ifnonnull(org.objectweb.asm.Label label)
void
ifnull(org.objectweb.asm.Label label)
void
iinc(Local local, int amount)
void
instance_of(org.objectweb.asm.Type type)
void
instance_of_this()
void
invoke(MethodInfo method)
void
invoke(MethodInfo method, org.objectweb.asm.Type virtualType)
void
invoke_constructor(org.objectweb.asm.Type type)
void
invoke_constructor(org.objectweb.asm.Type type, Signature sig)
void
invoke_constructor_this()
void
invoke_constructor_this(Signature sig)
void
invoke_interface(org.objectweb.asm.Type owner, Signature sig)
void
invoke_static(org.objectweb.asm.Type owner, Signature sig)
Deprecated.void
invoke_static(org.objectweb.asm.Type owner, Signature sig, boolean isInterface)
void
invoke_static_this(Signature sig)
void
invoke_virtual(org.objectweb.asm.Type owner, Signature sig)
void
invoke_virtual_this(Signature sig)
private static boolean
isSorted(int[] keys)
boolean
isStaticHook()
void
load_arg(int index)
Pushes the specified argument of the current method onto the stack.void
load_args()
Pushes all of the arguments of the current method onto the stack.void
load_args(int fromArg, int count)
void
load_local(Local local)
private void
load_local(org.objectweb.asm.Type t, int pos)
void
load_this()
org.objectweb.asm.Label
make_label()
Local
make_local()
Local
make_local(org.objectweb.asm.Type type)
(package private) org.objectweb.asm.Label
mark()
void
mark(org.objectweb.asm.Label label)
void
math(int op, org.objectweb.asm.Type type)
void
monitorenter()
void
monitorexit()
void
new_instance(org.objectweb.asm.Type type)
void
new_instance_this()
void
newarray()
void
newarray(org.objectweb.asm.Type type)
void
not()
Toggles the integer on the top of the stack from 1 to 0 or vice versavoid
pop()
void
pop2()
void
process_switch(int[] keys, ProcessSwitchCallback callback)
void
process_switch(int[] keys, ProcessSwitchCallback callback, boolean useTable)
void
push(boolean value)
void
push(double value)
void
push(float value)
void
push(int i)
void
push(long value)
void
push(java.lang.String value)
void
putfield(java.lang.String name)
void
putfield(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
void
putstatic(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
void
return_value()
private int
skipArgs(int numArgs)
void
store_local(Local local)
private void
store_local(org.objectweb.asm.Type t, int pos)
void
super_getfield(java.lang.String name, org.objectweb.asm.Type type)
void
super_getstatic(java.lang.String name, org.objectweb.asm.Type type)
void
super_invoke()
void
super_invoke(Signature sig)
void
super_invoke_constructor()
void
super_invoke_constructor(Signature sig)
void
super_putfield(java.lang.String name, org.objectweb.asm.Type type)
void
super_putstatic(java.lang.String name, org.objectweb.asm.Type type)
void
swap()
void
swap(org.objectweb.asm.Type prev, org.objectweb.asm.Type type)
void
throw_exception(org.objectweb.asm.Type type, java.lang.String msg)
void
unbox(org.objectweb.asm.Type type)
If the argument is a primitive class, replaces the object on the top of the stack with the unwrapped (primitive) equivalent.void
unbox_or_zero(org.objectweb.asm.Type type)
Unboxes the object on the top of the stack.void
visitMaxs(int maxStack, int maxLocals)
void
zero_or_null(org.objectweb.asm.Type type)
Pushes a zero onto the stack if the argument is a primitive class, or a null otherwise.-
Methods inherited from class net.sf.cglib.core.LocalVariablesSorter
newLocal, visitIincInsn, visitLocalVariable, visitVarInsn
-
Methods inherited from class org.objectweb.asm.MethodVisitor
visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitFieldInsn, visitFrame, visitInsn, visitInsnAnnotation, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariableAnnotation, visitLookupSwitchInsn, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitParameter, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation, visitTypeInsn
-
-
-
-
Field Detail
-
BOOLEAN_VALUE
private static final Signature BOOLEAN_VALUE
-
CHAR_VALUE
private static final Signature CHAR_VALUE
-
LONG_VALUE
private static final Signature LONG_VALUE
-
DOUBLE_VALUE
private static final Signature DOUBLE_VALUE
-
FLOAT_VALUE
private static final Signature FLOAT_VALUE
-
INT_VALUE
private static final Signature INT_VALUE
-
CSTRUCT_NULL
private static final Signature CSTRUCT_NULL
-
CSTRUCT_STRING
private static final Signature CSTRUCT_STRING
-
ADD
public static final int ADD
- See Also:
- Constant Field Values
-
MUL
public static final int MUL
- See Also:
- Constant Field Values
-
XOR
public static final int XOR
- See Also:
- Constant Field Values
-
USHR
public static final int USHR
- See Also:
- Constant Field Values
-
SUB
public static final int SUB
- See Also:
- Constant Field Values
-
DIV
public static final int DIV
- See Also:
- Constant Field Values
-
NEG
public static final int NEG
- See Also:
- Constant Field Values
-
REM
public static final int REM
- See Also:
- Constant Field Values
-
AND
public static final int AND
- See Also:
- Constant Field Values
-
OR
public static final int OR
- See Also:
- Constant Field Values
-
GT
public static final int GT
- See Also:
- Constant Field Values
-
LT
public static final int LT
- See Also:
- Constant Field Values
-
GE
public static final int GE
- See Also:
- Constant Field Values
-
LE
public static final int LE
- See Also:
- Constant Field Values
-
NE
public static final int NE
- See Also:
- Constant Field Values
-
EQ
public static final int EQ
- See Also:
- Constant Field Values
-
ce
private ClassEmitter ce
-
state
private CodeEmitter.State state
-
-
Constructor Detail
-
CodeEmitter
CodeEmitter(ClassEmitter ce, org.objectweb.asm.MethodVisitor mv, int access, Signature sig, org.objectweb.asm.Type[] exceptionTypes)
-
CodeEmitter
public CodeEmitter(CodeEmitter wrap)
-
-
Method Detail
-
isStaticHook
public boolean isStaticHook()
-
getSignature
public Signature getSignature()
-
getReturnType
public org.objectweb.asm.Type getReturnType()
-
getMethodInfo
public MethodInfo getMethodInfo()
-
getClassEmitter
public ClassEmitter getClassEmitter()
-
end_method
public void end_method()
-
begin_block
public Block begin_block()
-
catch_exception
public void catch_exception(Block block, org.objectweb.asm.Type exception)
-
goTo
public void goTo(org.objectweb.asm.Label label)
-
ifnull
public void ifnull(org.objectweb.asm.Label label)
-
ifnonnull
public void ifnonnull(org.objectweb.asm.Label label)
-
if_jump
public void if_jump(int mode, org.objectweb.asm.Label label)
-
if_icmp
public void if_icmp(int mode, org.objectweb.asm.Label label)
-
if_cmp
public void if_cmp(org.objectweb.asm.Type type, int mode, org.objectweb.asm.Label label)
-
pop
public void pop()
-
pop2
public void pop2()
-
dup
public void dup()
-
dup2
public void dup2()
-
dup_x1
public void dup_x1()
-
dup_x2
public void dup_x2()
-
dup2_x1
public void dup2_x1()
-
dup2_x2
public void dup2_x2()
-
swap
public void swap()
-
aconst_null
public void aconst_null()
-
swap
public void swap(org.objectweb.asm.Type prev, org.objectweb.asm.Type type)
-
monitorenter
public void monitorenter()
-
monitorexit
public void monitorexit()
-
math
public void math(int op, org.objectweb.asm.Type type)
-
array_load
public void array_load(org.objectweb.asm.Type type)
-
array_store
public void array_store(org.objectweb.asm.Type type)
-
cast_numeric
public void cast_numeric(org.objectweb.asm.Type from, org.objectweb.asm.Type to)
Casts from one primitive numeric type to another
-
push
public void push(int i)
-
push
public void push(long value)
-
push
public void push(float value)
-
push
public void push(double value)
-
push
public void push(java.lang.String value)
-
newarray
public void newarray()
-
newarray
public void newarray(org.objectweb.asm.Type type)
-
arraylength
public void arraylength()
-
load_this
public void load_this()
-
load_args
public void load_args()
Pushes all of the arguments of the current method onto the stack.
-
load_arg
public void load_arg(int index)
Pushes the specified argument of the current method onto the stack.- Parameters:
index
- the zero-based index into the argument list
-
load_args
public void load_args(int fromArg, int count)
-
skipArgs
private int skipArgs(int numArgs)
-
load_local
private void load_local(org.objectweb.asm.Type t, int pos)
-
store_local
private void store_local(org.objectweb.asm.Type t, int pos)
-
iinc
public void iinc(Local local, int amount)
-
store_local
public void store_local(Local local)
-
load_local
public void load_local(Local local)
-
return_value
public void return_value()
-
getfield
public void getfield(java.lang.String name)
-
putfield
public void putfield(java.lang.String name)
-
super_getfield
public void super_getfield(java.lang.String name, org.objectweb.asm.Type type)
-
super_putfield
public void super_putfield(java.lang.String name, org.objectweb.asm.Type type)
-
super_getstatic
public void super_getstatic(java.lang.String name, org.objectweb.asm.Type type)
-
super_putstatic
public void super_putstatic(java.lang.String name, org.objectweb.asm.Type type)
-
getfield
public void getfield(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
-
putfield
public void putfield(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
-
getstatic
public void getstatic(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
-
putstatic
public void putstatic(org.objectweb.asm.Type owner, java.lang.String name, org.objectweb.asm.Type type)
-
emit_field
void emit_field(int opcode, org.objectweb.asm.Type ctype, java.lang.String name, org.objectweb.asm.Type ftype)
-
super_invoke
public void super_invoke()
-
super_invoke
public void super_invoke(Signature sig)
-
invoke_constructor
public void invoke_constructor(org.objectweb.asm.Type type)
-
super_invoke_constructor
public void super_invoke_constructor()
-
invoke_constructor_this
public void invoke_constructor_this()
-
emit_invoke
private void emit_invoke(int opcode, org.objectweb.asm.Type type, Signature sig, boolean isInterface)
-
invoke_interface
public void invoke_interface(org.objectweb.asm.Type owner, Signature sig)
-
invoke_virtual
public void invoke_virtual(org.objectweb.asm.Type owner, Signature sig)
-
invoke_static
@Deprecated public void invoke_static(org.objectweb.asm.Type owner, Signature sig)
Deprecated.
-
invoke_static
public void invoke_static(org.objectweb.asm.Type owner, Signature sig, boolean isInterface)
-
invoke_virtual_this
public void invoke_virtual_this(Signature sig)
-
invoke_static_this
public void invoke_static_this(Signature sig)
-
invoke_constructor
public void invoke_constructor(org.objectweb.asm.Type type, Signature sig)
-
invoke_constructor_this
public void invoke_constructor_this(Signature sig)
-
super_invoke_constructor
public void super_invoke_constructor(Signature sig)
-
new_instance_this
public void new_instance_this()
-
new_instance
public void new_instance(org.objectweb.asm.Type type)
-
emit_type
private void emit_type(int opcode, org.objectweb.asm.Type type)
-
aaload
public void aaload(int index)
-
aaload
public void aaload()
-
aastore
public void aastore()
-
athrow
public void athrow()
-
make_label
public org.objectweb.asm.Label make_label()
-
make_local
public Local make_local()
-
make_local
public Local make_local(org.objectweb.asm.Type type)
-
checkcast_this
public void checkcast_this()
-
checkcast
public void checkcast(org.objectweb.asm.Type type)
-
instance_of
public void instance_of(org.objectweb.asm.Type type)
-
instance_of_this
public void instance_of_this()
-
process_switch
public void process_switch(int[] keys, ProcessSwitchCallback callback)
-
process_switch
public void process_switch(int[] keys, ProcessSwitchCallback callback, boolean useTable)
-
isSorted
private static boolean isSorted(int[] keys)
-
mark
public void mark(org.objectweb.asm.Label label)
-
mark
org.objectweb.asm.Label mark()
-
push
public void push(boolean value)
-
not
public void not()
Toggles the integer on the top of the stack from 1 to 0 or vice versa
-
throw_exception
public void throw_exception(org.objectweb.asm.Type type, java.lang.String msg)
-
box
public void box(org.objectweb.asm.Type type)
If the argument is a primitive class, replaces the primitive value on the top of the stack with the wrapped (Object) equivalent. For example, char -> Character. If the class is Void, a null is pushed onto the stack instead.- Parameters:
type
- the class indicating the current type of the top stack value
-
unbox
public void unbox(org.objectweb.asm.Type type)
If the argument is a primitive class, replaces the object on the top of the stack with the unwrapped (primitive) equivalent. For example, Character -> char.- Parameters:
type
- the class indicating the desired type of the top stack value
-
create_arg_array
public void create_arg_array()
Allocates and fills an Object[] array with the arguments to the current method. Primitive values are inserted as their boxed (Object) equivalents.
-
zero_or_null
public void zero_or_null(org.objectweb.asm.Type type)
Pushes a zero onto the stack if the argument is a primitive class, or a null otherwise.
-
unbox_or_zero
public void unbox_or_zero(org.objectweb.asm.Type type)
Unboxes the object on the top of the stack. If the object is null, the unboxed primitive value becomes zero.
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals)
- Overrides:
visitMaxs
in classLocalVariablesSorter
-
invoke
public void invoke(MethodInfo method, org.objectweb.asm.Type virtualType)
-
invoke
public void invoke(MethodInfo method)
-
-