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

Author:
  Juozas Baliuka, Chris Nokleberg

### Field Summary

Fields
`static int` `ADD`
`static int` `AND`
`static int` `DIV`
`static int` `EQ`
`static int` `GE`
`static int` `GT`
`static int` `LE`
`static int` `LT`
`static int` `MUL`
`static int` `NE`
`static int` `NEG`
`static int` `OR`
`static int` `REM`
`static int` `SUB`
`static int` `USHR`
`static int` `XOR`

### Fields inherited from class net.sf.cglib.core.LocalVariablesSorter

`firstLocal`

### Fields inherited from class org.objectweb.asm.MethodVisitor

`api, mv`

### Constructor Summary

Constructors
`CodeEmitter​(CodeEmitter wrap)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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 another
`void` `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()`
`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)`
`void` `invoke_static_this​(Signature sig)`
`void` `invoke_virtual​(org.objectweb.asm.Type owner, Signature sig)`
`void` `invoke_virtual_this​(Signature sig)`
`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)`
`void` `load_this()`
`org.objectweb.asm.Label` `make_label()`
`Local` `make_local()`
`Local` `make_local​(org.objectweb.asm.Type type)`
`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 versa
`void` `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()`
`void` `store_local​(Local local)`
`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`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### 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

### Constructor Detail

#### 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)

#### 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)

#### 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()

#### 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

    public void invoke_static​(org.objectweb.asm.Type owner,
                              Signature sig)

#### 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)

#### 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)

#### mark

    public void mark​(org.objectweb.asm.Label label)

#### 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 class `LocalVariablesSorter`

#### invoke

    public void invoke​(MethodInfo method,
                       org.objectweb.asm.Type virtualType)

#### invoke

    public void invoke​(MethodInfo method)