Package org.jboss.classfilewriter.code

## Class CodeAttribute

- java.lang.Object
- - org.jboss.classfilewriter.attributes.Attribute
  - - org.jboss.classfilewriter.code.CodeAttribute

All Implemented Interfaces:
  `WritableEntry`

    public class CodeAttribute
    extends Attribute

### Nested Class Summary

Nested Classes
`static interface` `CodeAttribute.StackFrameTypeResolver` Interface that can be used to override the type merging process when merging stack frames

### Field Summary

Fields
`static java.lang.String` `NAME`

### Constructor Summary

Constructors
`CodeAttribute​(ClassMethod method, ConstPool constPool)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `aaload()`
`void` `aastore()`
`void` `aconstNull()`
`void` `aload​(int no)`
`void` `anewarray​(java.lang.String arrayType)`
`void` `arraylength()`
`void` `assertNotWideOnStack​(int position, java.lang.String message)`
`void` `assertNotWideOnStack​(java.lang.String message)`
`void` `assertTypeOnStack​(int position, StackEntryType type, java.lang.String message)`
`void` `assertTypeOnStack​(StackEntryType type, java.lang.String message)`
`void` `astore​(int no)`
`void` `athrow()`
`void` `baload()`
`void` `bastore()`
`void` `bipush​(byte value)`
`void` `branchEnd​(BranchEnd end)` marks the end of a branch.
`void` `caload()`
`void` `castore()`
`void` `checkcast​(java.lang.Class<?> clazz)`
`void` `checkcast​(java.lang.String className)` Do not use Descriptor format (e.g.
`void` `d2f()`
`void` `d2i()`
`void` `d2l()`
`void` `dadd()`
`void` `daload()`
`void` `dastore()`
`void` `dcmpg()`
`void` `dcmpl()`
`void` `dconst​(double value)` Adds the appropriate dconst instruction.
`void` `ddiv()`
`void` `dload​(int no)`
`void` `dmul()`
`void` `dneg()`
`void` `drem()`
`void` `dstore​(int no)`
`void` `dsub()`
`void` `dup()`
`void` `dup2()`
`void` `dup2X1()`
`void` `dup2X2()`
`void` `dupX1()`
`void` `dupX2()`
`void` `exceptionBlockEnd​(ExceptionHandler handler)` Mark the end of an exception handler block.
`ExceptionHandler` `exceptionBlockStart​(java.lang.String exceptionType)` Begin writing an exception handler block.
`void` `exceptionHandlerStart​(ExceptionHandler handler)` Marks the current code location as the exception handler and adds the handler to the exception handler table;
`void` `f2d()`
`void` `f2i()`
`void` `f2l()`
`void` `fadd()`
`void` `faload()`
`void` `fastore()`
`void` `fcmpg()`
`void` `fcmpl()`
`void` `fconst​(float value)` Adds the appropriate fconst instruction.
`void` `fdiv()`
`void` `fload​(int no)`
`void` `fmul()`
`void` `fneg()`
`void` `frem()`
`void` `fstore​(int no)`
`void` `fsub()`
`ConstPool` `getConstPool()`
`void` `getfield​(java.lang.String className, java.lang.String field, java.lang.Class<?> fieldType)`
`void` `getfield​(java.lang.String className, java.lang.String field, java.lang.String descriptor)`
`java.util.LinkedHashMap<java.lang.Integer,​StackFrame>` `getStackFrames()`
`CodeAttribute.StackFrameTypeResolver` `getStackFrameTypeResolver()`
`void` `getstatic​(java.lang.String className, java.lang.String field, java.lang.Class<?> fieldType)`
`void` `getstatic​(java.lang.String className, java.lang.String field, java.lang.String descriptor)`
`BranchEnd` `gotoInstruction()` writes a goto instruction.
`void` `gotoInstruction​(CodeLocation location)` writes a goto instruction.
`void` `i2b()`
`void` `i2c()`
`void` `i2d()`
`void` `i2f()`
`void` `i2l()`
`void` `i2s()`
`void` `iadd()`
`void` `iaload()`
`void` `iand()`
`void` `iastore()`
`void` `iconst​(int value)` Adds the appropriate iconst instruction.
`void` `idiv()`
`BranchEnd` `ifAcmpeq()`
`void` `ifAcmpeq​(CodeLocation location)`
`BranchEnd` `ifAcmpne()`
`void` `ifAcmpne​(CodeLocation location)`
`BranchEnd` `ifeq()`
`void` `ifEq​(CodeLocation location)`
`BranchEnd` `ifge()`
`void` `ifge​(CodeLocation location)`
`BranchEnd` `ifgt()`
`void` `ifgt​(CodeLocation location)`
`BranchEnd` `ifIcmpeq()`
`void` `ifIcmpeq​(CodeLocation location)`
`BranchEnd` `ifIcmpge()`
`void` `ifIcmpge​(CodeLocation location)`
`BranchEnd` `ifIcmpgt()`
`void` `ifIcmpgt​(CodeLocation location)`
`BranchEnd` `ifIcmple()`
`void` `ifIcmple​(CodeLocation location)`
`BranchEnd` `ifIcmplt()`
`void` `ifIcmplt​(CodeLocation location)`
`BranchEnd` `ifIcmpne()`
`void` `ifIcmpne​(CodeLocation location)`
`BranchEnd` `ifle()`
`void` `ifle​(CodeLocation location)`
`BranchEnd` `iflt()`
`void` `iflt​(CodeLocation location)`
`BranchEnd` `ifne()`
`void` `ifne​(CodeLocation location)`
`BranchEnd` `ifnotnull()`
`void` `ifnotnull​(CodeLocation location)`
`BranchEnd` `ifnull()` Jump to the given location if the reference type on the top of the stack is null.
`void` `ifnull​(CodeLocation location)` Jump to the given location if the reference type on the top of the stack is null
`void` `iinc​(int local, int amount)`
`void` `iload​(int no)`
`void` `imul()`
`void` `ineg()`
`void` `instanceofInstruction​(java.lang.String className)`
`void` `invokeinterface​(java.lang.reflect.Method method)`
`void` `invokeinterface​(java.lang.String className, java.lang.String methodName, java.lang.String descriptor)`
`void` `invokeinterface​(java.lang.String className, java.lang.String methodName, java.lang.String returnType, java.lang.String[] parameterTypes)`
`void` `invokespecial​(java.lang.reflect.Constructor<?> constructor)`
`void` `invokespecial​(java.lang.reflect.Method method)`
`void` `invokespecial​(java.lang.String className, java.lang.String methodName, java.lang.String descriptor)`
`void` `invokespecial​(java.lang.String className, java.lang.String methodName, java.lang.String returnType, java.lang.String[] parameterTypes)`
`void` `invokestatic​(java.lang.reflect.Method method)`
`void` `invokestatic​(java.lang.String className, java.lang.String methodName, java.lang.String descriptor)`
`void` `invokestatic​(java.lang.String className, java.lang.String methodName, java.lang.String returnType, java.lang.String[] parameterTypes)`
`void` `invokevirtual​(java.lang.reflect.Method method)`
`void` `invokevirtual​(java.lang.String className, java.lang.String methodName, java.lang.String descriptor)`
`void` `invokevirtual​(java.lang.String className, java.lang.String methodName, java.lang.String returnType, java.lang.String[] parameterTypes)`
`void` `ior()`
`void` `irem()`
`void` `ishl()`
`void` `ishr()`
`void` `istore​(int no)`
`void` `isub()`
`void` `iushr()`
`void` `ixor()`
`void` `l2d()`
`void` `l2f()`
`void` `l2i()`
`void` `ladd()`
`void` `laload()`
`void` `land()`
`void` `lastore()`
`void` `lcmp()`
`void` `lconst​(long value)` Adds the appropriate lconst instruction.
`void` `ldc​(float value)` Adds an ldc instruction for float
`void` `ldc​(int value)` Adds an ldc instruction for an int.
`void` `ldc​(java.lang.String value)` Adds an ldc instruction for a String
`void` `ldc2​(double value)` Adds an ldc2_w instruction for double
`void` `ldc2​(long value)` Adds an ldc2_w instruction for long
`void` `ldiv()`
`void` `lload​(int no)`
`void` `lmul()`
`void` `lneg()`
`void` `load​(java.lang.Class<?> type, int no)` Generates the apprpriate load instruction for the given type
`void` `load​(java.lang.String descriptor, int no)` Generates the apprpriate load instruction for the given type
`void` `loadClass​(java.lang.String className)`
`void` `loadMethodParameters()` loads all parameters onto the stack.
`void` `loadType​(java.lang.String descriptor)` Loads a java.lang.Class for the given descriptor into the stack.
`void` `lookupswitch​(LookupSwitchBuilder lookupSwitchBuilder)` Adds a lookup switch statement
`void` `lor()`
`void` `lrem()`
`void` `lshl()`
`void` `lshr()`
`void` `lstore​(int no)`
`void` `lsub()`
`void` `lushr()`
`void` `lxor()`
`CodeLocation` `mark()` Gets the location object for the current location in the bytecode.
`void` `monitorenter()`
`void` `monitorexit()`
`void` `multianewarray​(java.lang.String arrayType, int dimensions)`
`void` `newarray​(java.lang.Class<?> arrayType)` arrayType must be a `Class` object that represents a primitive type
`void` `newInstruction​(java.lang.Class<?> clazz)`
`void` `newInstruction​(java.lang.String classname)`
`void` `nop()`
`void` `pop()`
`void` `pop2()`
`void` `putfield​(java.lang.String className, java.lang.String field, java.lang.Class<?> fieldType)`
`void` `putfield​(java.lang.String className, java.lang.String field, java.lang.String descriptor)`
`void` `putstatic​(java.lang.String className, java.lang.String field, java.lang.Class<?> fieldType)`
`void` `putstatic​(java.lang.String className, java.lang.String field, java.lang.String descriptor)`
`void` `returnInstruction()` Adds the appropriate return instruction for the methods return type.
`void` `saload()`
`void` `sastore()`
`void` `setStackFrameTypeResolver​(CodeAttribute.StackFrameTypeResolver stackFrameTypeResolver)`
`void` `setupFrame​(java.lang.String... types)`
`void` `sipush​(short value)`
`void` `swap()`
`void` `tableswitch​(TableSwitchBuilder builder)`
`void` `writeData​(ByteArrayDataOutputStream stream)`

### Methods inherited from class org.jboss.classfilewriter.attributes.Attribute

`getName, write`

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

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

### Field Detail

#### NAME

    public static final java.lang.String NAME

See Also:
  Constant Field Values

### Constructor Detail

#### CodeAttribute

    public CodeAttribute​(ClassMethod method,
                         ConstPool constPool)

### Method Detail

#### getStackFrameTypeResolver

    public CodeAttribute.StackFrameTypeResolver getStackFrameTypeResolver()

#### setStackFrameTypeResolver

    public void setStackFrameTypeResolver​(CodeAttribute.StackFrameTypeResolver stackFrameTypeResolver)

#### writeData

    public void writeData​(ByteArrayDataOutputStream stream)
                   throws java.io.IOException

Specified by:
  `writeData` in class `Attribute`
Throws:
  `java.io.IOException`

#### aaload

    public void aaload()

#### aastore

    public void aastore()

#### aconstNull

    public void aconstNull()

#### aload

    public void aload​(int no)

#### anewarray

    public void anewarray​(java.lang.String arrayType)

#### arraylength

    public void arraylength()

#### astore

    public void astore​(int no)

#### athrow

    public void athrow()

#### baload

    public void baload()

#### bastore

    public void bastore()

#### caload

    public void caload()

#### castore

    public void castore()

#### bipush

    public void bipush​(byte value)

#### branchEnd

    public void branchEnd​(BranchEnd end)

marks the end of a branch. The current stack frame is checked for compatibility with the stack frame at the branch start

#### checkcast

    public void checkcast​(java.lang.String className)

Do not use Descriptor format (e.g. Ljava/lang/Object;), the correct form is just java/lang/Object or java.lang.Object

#### checkcast

    public void checkcast​(java.lang.Class<?> clazz)

#### d2f

    public void d2f()

#### d2i

    public void d2i()

#### d2l

    public void d2l()

#### dadd

    public void dadd()

#### daload

    public void daload()

#### dastore

    public void dastore()

#### dcmpg

    public void dcmpg()

#### dcmpl

    public void dcmpl()

#### dconst

    public void dconst​(double value)

Adds the appropriate dconst instruction.

note, if the value is not 0 or 1 then ldc is used instead

#### ddiv

    public void ddiv()

#### dload

    public void dload​(int no)

#### dmul

    public void dmul()

#### dneg

    public void dneg()

#### drem

    public void drem()

#### dstore

    public void dstore​(int no)

#### dsub

    public void dsub()

#### dup

    public void dup()

#### dupX1

    public void dupX1()

#### dupX2

    public void dupX2()

#### dup2

    public void dup2()

#### dup2X1

    public void dup2X1()

#### dup2X2

    public void dup2X2()

#### exceptionBlockStart

    public ExceptionHandler exceptionBlockStart​(java.lang.String exceptionType)

Begin writing an exception handler block. The handler is not actually persisted until exceptionHandler is called.

#### exceptionBlockEnd

    public void exceptionBlockEnd​(ExceptionHandler handler)

Mark the end of an exception handler block. The last instruction that was written will be the last instruction covered by the handler

#### exceptionHandlerStart

    public void exceptionHandlerStart​(ExceptionHandler handler)

Marks the current code location as the exception handler and adds the handler to the exception handler table;

#### f2d

    public void f2d()

#### f2i

    public void f2i()

#### f2l

    public void f2l()

#### fadd

    public void fadd()

#### faload

    public void faload()

#### fastore

    public void fastore()

#### fcmpg

    public void fcmpg()

#### fcmpl

    public void fcmpl()

#### fconst

    public void fconst​(float value)

Adds the appropriate fconst instruction.

note, if the value is not 0, 1, 2 then ldc is used instead

#### fdiv

    public void fdiv()

#### fload

    public void fload​(int no)

#### fmul

    public void fmul()

#### fneg

    public void fneg()

#### frem

    public void frem()

#### fstore

    public void fstore​(int no)

#### fsub

    public void fsub()

#### getfield

    public void getfield​(java.lang.String className,
                         java.lang.String field,
                         java.lang.Class<?> fieldType)

#### getfield

    public void getfield​(java.lang.String className,
                         java.lang.String field,
                         java.lang.String descriptor)

#### getstatic

    public void getstatic​(java.lang.String className,
                          java.lang.String field,
                          java.lang.Class<?> fieldType)

#### getstatic

    public void getstatic​(java.lang.String className,
                          java.lang.String field,
                          java.lang.String descriptor)

#### gotoInstruction

    public void gotoInstruction​(CodeLocation location)

writes a goto instruction.

TODO: implemented goto_w

#### gotoInstruction

    public BranchEnd gotoInstruction()

writes a goto instruction.

TODO: implemented goto_w

#### i2b

    public void i2b()

#### i2c

    public void i2c()

#### i2d

    public void i2d()

#### i2f

    public void i2f()

#### i2l

    public void i2l()

#### i2s

    public void i2s()

#### iadd

    public void iadd()

#### iaload

    public void iaload()

#### iand

    public void iand()

#### iastore

    public void iastore()

#### iconst

    public void iconst​(int value)

Adds the appropriate iconst instruction.

note, if the value is not in the range -1 to 5 ldc is written instead

Parameters:
  `value` -

#### idiv

    public void idiv()

#### ifAcmpeq

    public void ifAcmpeq​(CodeLocation location)

#### ifAcmpeq

    public BranchEnd ifAcmpeq()

#### ifAcmpne

    public void ifAcmpne​(CodeLocation location)

#### ifAcmpne

    public BranchEnd ifAcmpne()

#### ifIcmpeq

    public void ifIcmpeq​(CodeLocation location)

#### ifIcmpeq

    public BranchEnd ifIcmpeq()

#### ifIcmpne

    public void ifIcmpne​(CodeLocation location)

#### ifIcmpne

    public BranchEnd ifIcmpne()

#### ifIcmplt

    public void ifIcmplt​(CodeLocation location)

#### ifIcmplt

    public BranchEnd ifIcmplt()

#### ifIcmple

    public void ifIcmple​(CodeLocation location)

#### ifIcmple

    public BranchEnd ifIcmple()

#### ifIcmpgt

    public void ifIcmpgt​(CodeLocation location)

#### ifIcmpgt

    public BranchEnd ifIcmpgt()

#### ifIcmpge

    public void ifIcmpge​(CodeLocation location)

#### ifIcmpge

    public BranchEnd ifIcmpge()

#### ifEq

    public void ifEq​(CodeLocation location)

#### ifeq

    public BranchEnd ifeq()

#### ifne

    public void ifne​(CodeLocation location)

#### ifne

    public BranchEnd ifne()

#### iflt

    public void iflt​(CodeLocation location)

#### iflt

    public BranchEnd iflt()

#### ifle

    public void ifle​(CodeLocation location)

#### ifle

    public BranchEnd ifle()

#### ifgt

    public void ifgt​(CodeLocation location)

#### ifgt

    public BranchEnd ifgt()

#### ifge

    public void ifge​(CodeLocation location)

#### ifge

    public BranchEnd ifge()

#### ifnotnull

    public void ifnotnull​(CodeLocation location)

#### ifnotnull

    public BranchEnd ifnotnull()

#### ifnull

    public void ifnull​(CodeLocation location)

Jump to the given location if the reference type on the top of the stack is null

#### ifnull

    public BranchEnd ifnull()

Jump to the given location if the reference type on the top of the stack is null.

The `BranchEnd` returned from this method is used to set the end point to a future point in the bytecode stream

#### iinc

    public void iinc​(int local,
                     int amount)

#### iload

    public void iload​(int no)

#### imul

    public void imul()

#### ineg

    public void ineg()

#### instanceofInstruction

    public void instanceofInstruction​(java.lang.String className)

#### invokespecial

    public void invokespecial​(java.lang.String className,
                              java.lang.String methodName,
                              java.lang.String descriptor)

#### invokespecial

    public void invokespecial​(java.lang.String className,
                              java.lang.String methodName,
                              java.lang.String returnType,
                              java.lang.String[] parameterTypes)

#### invokespecial

    public void invokespecial​(java.lang.reflect.Constructor<?> constructor)

#### invokespecial

    public void invokespecial​(java.lang.reflect.Method method)

#### invokestatic

    public void invokestatic​(java.lang.String className,
                             java.lang.String methodName,
                             java.lang.String descriptor)

#### invokestatic

    public void invokestatic​(java.lang.String className,
                             java.lang.String methodName,
                             java.lang.String returnType,
                             java.lang.String[] parameterTypes)

#### invokestatic

    public void invokestatic​(java.lang.reflect.Method method)

#### invokevirtual

    public void invokevirtual​(java.lang.String className,
                              java.lang.String methodName,
                              java.lang.String descriptor)

#### invokevirtual

    public void invokevirtual​(java.lang.String className,
                              java.lang.String methodName,
                              java.lang.String returnType,
                              java.lang.String[] parameterTypes)

#### invokevirtual

    public void invokevirtual​(java.lang.reflect.Method method)

#### invokeinterface

    public void invokeinterface​(java.lang.String className,
                                java.lang.String methodName,
                                java.lang.String descriptor)

#### invokeinterface

    public void invokeinterface​(java.lang.String className,
                                java.lang.String methodName,
                                java.lang.String returnType,
                                java.lang.String[] parameterTypes)

#### invokeinterface

    public void invokeinterface​(java.lang.reflect.Method method)

#### ior

    public void ior()

#### irem

    public void irem()

#### ishl

    public void ishl()

#### ishr

    public void ishr()

#### istore

    public void istore​(int no)

#### isub

    public void isub()

#### iushr

    public void iushr()

#### ixor

    public void ixor()

#### l2d

    public void l2d()

#### l2f

    public void l2f()

#### l2i

    public void l2i()

#### ladd

    public void ladd()

#### laload

    public void laload()

#### land

    public void land()

#### lastore

    public void lastore()

#### lcmp

    public void lcmp()

#### lconst

    public void lconst​(long value)

Adds the appropriate lconst instruction.

note, if the value is not 0 or 1 then ldc is used instead

#### ldc

    public void ldc​(int value)

Adds an ldc instruction for an int.

Parameters:
  `value` - The value to load

#### ldc

    public void ldc​(float value)

Adds an ldc instruction for float

#### ldc

    public void ldc​(java.lang.String value)

Adds an ldc instruction for a String

To load a class literal using ldc use the @{link #loadType(String)} method.

#### ldc2

    public void ldc2​(double value)

Adds an ldc2_w instruction for double

#### ldc2

    public void ldc2​(long value)

Adds an ldc2_w instruction for long

#### ldiv

    public void ldiv()

#### lload

    public void lload​(int no)

#### lmul

    public void lmul()

#### lneg

    public void lneg()

#### load

    public void load​(java.lang.Class<?> type,
                     int no)

Generates the apprpriate load instruction for the given type

Parameters:
  `type` - The type of variable
  `no` - local variable number

#### load

    public void load​(java.lang.String descriptor,
                     int no)

Generates the apprpriate load instruction for the given type

Parameters:
  `descriptor` - The descriptor of the variable
  `no` - local variable number

#### loadClass

    public void loadClass​(java.lang.String className)

#### loadType

    public void loadType​(java.lang.String descriptor)

Loads a java.lang.Class for the given descriptor into the stack.

#### lookupswitch

    public void lookupswitch​(LookupSwitchBuilder lookupSwitchBuilder)

Adds a lookup switch statement

Parameters:
  `lookupSwitchBuilder` -

#### lor

    public void lor()

#### lrem

    public void lrem()

#### lshl

    public void lshl()

#### lshr

    public void lshr()

#### lstore

    public void lstore​(int no)

#### lsub

    public void lsub()

#### lushr

    public void lushr()

#### lxor

    public void lxor()

#### mark

    public CodeLocation mark()

Gets the location object for the current location in the bytecode. Jumps to this location will begin executing the next instruction that is written to the bytecode stream

#### monitorenter

    public void monitorenter()

#### monitorexit

    public void monitorexit()

#### multianewarray

    public void multianewarray​(java.lang.String arrayType,
                               int dimensions)

#### newInstruction

    public void newInstruction​(java.lang.String classname)

#### newInstruction

    public void newInstruction​(java.lang.Class<?> clazz)

#### newarray

    public void newarray​(java.lang.Class<?> arrayType)

arrayType must be a `Class` object that represents a primitive type

#### nop

    public void nop()

#### pop

    public void pop()

#### pop2

    public void pop2()

#### putfield

    public void putfield​(java.lang.String className,
                         java.lang.String field,
                         java.lang.Class<?> fieldType)

#### putfield

    public void putfield​(java.lang.String className,
                         java.lang.String field,
                         java.lang.String descriptor)

#### putstatic

    public void putstatic​(java.lang.String className,
                          java.lang.String field,
                          java.lang.Class<?> fieldType)

#### putstatic

    public void putstatic​(java.lang.String className,
                          java.lang.String field,
                          java.lang.String descriptor)

#### returnInstruction

    public void returnInstruction()

Adds the appropriate return instruction for the methods return type.

#### saload

    public void saload()

#### sastore

    public void sastore()

#### sipush

    public void sipush​(short value)

#### swap

    public void swap()

#### tableswitch

    public void tableswitch​(TableSwitchBuilder builder)

#### loadMethodParameters

    public void loadMethodParameters()

loads all parameters onto the stack.

If this method is non-static then the parameter at location 0 (i.e. this object) is not pushed.

#### getStackFrames

    public java.util.LinkedHashMap<java.lang.Integer,​StackFrame> getStackFrames()

#### setupFrame

    public void setupFrame​(java.lang.String... types)

#### getConstPool

    public ConstPool getConstPool()

#### assertTypeOnStack

    public void assertTypeOnStack​(int position,
                                  StackEntryType type,
                                  java.lang.String message)

#### assertTypeOnStack

    public void assertTypeOnStack​(StackEntryType type,
                                  java.lang.String message)

#### assertNotWideOnStack

    public void assertNotWideOnStack​(int position,
                                     java.lang.String message)

#### assertNotWideOnStack

    public void assertNotWideOnStack​(java.lang.String message)