Top Inners Fields Constructors Methods
org.jboss.classfilewriter.code

public Class CodeAttribute

extends Attribute
Class Inheritance
Annotations
@SuppressWarnings:unused
Imports
java.io.ByteArrayOutputStream, .DataOutputStream, .IOException, java.lang.reflect.Constructor, .Method, .Modifier, java.util.ArrayList, .Arrays, .Collections, .HashMap, .HashSet, .LinkedHashMap, .List, .Map, .Map.Entry, .Set, org.jboss.classfilewriter.ClassMethod, .InvalidBytecodeException, org.jboss.classfilewriter.attributes.Attribute, .StackMapTableAttribute, org.jboss.classfilewriter.constpool.ConstPool, org.jboss.classfilewriter.util.ByteArrayDataOutputStream, .DescriptorUtils, .LazySize

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static interface
CodeAttribute.StackFrameTypeResolver

Interface that can be used to override the type merging process when merging stack frames

Field Summary

Modifier and TypeField and Description
private final List<Attribute>
private final ConstPool
private StackFrame
private int
private final DataOutputStream
private final List<ExceptionHandler>
private final ByteArrayOutputStream
private final Map<Integer, Integer>
jumpLocations

maps bytecode offsets to jump locations.

private final Map<Integer, Integer>
jumpLocations32

maps bytecode offsets to jump locations.

private int
private int
private final ClassMethod
public static final String
private final LinkedHashMap<Integer, StackFrame>
private CodeAttribute.StackFrameTypeResolver
private final StackMapTableAttribute

Constructor Summary

AccessConstructor and Description
public
CodeAttribute(ClassMethod method, ConstPool constPool)

Method Summary

Modifier and TypeMethod and Description
public void
public void
public void
private void
addIf(CodeLocation location, int opcode, String name)

private BranchEnd
addIf(int opcode, String name)

private void
addIfIcmp(CodeLocation location, int opcode, String name)

private BranchEnd
addIfIcmp(int opcode, String name)

private void
addNullComparison(CodeLocation location, int opcode, String name)

private BranchEnd
addNullComparison(int opcode, String name)

private void
public void
aload(int no)

public void
anewarray(String arrayType)

public void
public void
assertNotWideOnStack(int position, String message)

public void
public void
assertTypeOnStack(int position, StackEntryType type, String message)

public void
public void
astore(int no)

public void
public void
public void
public void
bipush(byte value)

public void
branchEnd(BranchEnd end)

marks the end of a branch.

public void
public void
public void
checkcast(String className)

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

public void
checkcast(Class<?> clazz)

public void
d2f()

public void
d2i()

public void
d2l()

public void
dadd()

public void
public void
public void
public void
public void
dconst(double value)

Adds the appropriate dconst instruction.

public void
ddiv()

public void
dload(int no)

public void
dmul()

public void
dneg()

public void
drem()

public void
dstore(int no)

public void
dsub()

public void
dup()

public void
dup2()

public void
public void
private void
duplicateFrame()

Adds a duplicate of the current frame to the current position.

public void
public void
public void
exceptionBlockEnd(ExceptionHandler handler)

Mark the end of an exception handler block.

public ExceptionHandler
exceptionBlockStart(String exceptionType)

Begin writing an exception handler block.

public void
exceptionHandlerStart(ExceptionHandler handler)

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

public void
f2d()

public void
f2i()

public void
f2l()

public void
fadd()

public void
public void
public void
public void
public void
fconst(float value)

Adds the appropriate fconst instruction.

public void
fdiv()

private String
public void
fload(int no)

public void
fmul()

public void
fneg()

public void
frem()

public void
fstore(int no)

public void
fsub()

private Set<Class<?>>
public ConstPool
public void
getfield(String className, String field, Class<?> fieldType)

public void
getfield(String className, String field, String descriptor)

private LocalVariableState
private StackState
public LinkedHashMap<Integer, StackFrame>
public CodeAttribute.StackFrameTypeResolver
public void
getstatic(String className, String field, Class<?> fieldType)

public void
getstatic(String className, String field, String descriptor)

public void
gotoInstruction(CodeLocation location)

writes a goto instruction.

public BranchEnd
gotoInstruction()

writes a goto instruction.

public void
i2b()

public void
i2c()

public void
i2d()

public void
i2f()

public void
i2l()

public void
i2s()

public void
iadd()

public void
public void
iand()

public void
public void
iconst(int value)

Adds the appropriate iconst instruction.

public void
idiv()

public void
public BranchEnd
public void
public BranchEnd
public void
ifEq(CodeLocation location)

public BranchEnd
ifeq()

public void
ifge(CodeLocation location)

public BranchEnd
ifge()

public void
ifgt(CodeLocation location)

public BranchEnd
ifgt()

public void
public BranchEnd
public void
public BranchEnd
public void
public BranchEnd
public void
public BranchEnd
public void
public BranchEnd
public void
public BranchEnd
public void
ifle(CodeLocation location)

public BranchEnd
ifle()

public void
iflt(CodeLocation location)

public BranchEnd
iflt()

public void
ifne(CodeLocation location)

public BranchEnd
ifne()

public void
public BranchEnd
public void
ifnull(CodeLocation location)

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

public BranchEnd
ifnull()

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

public void
iinc(int local, int amount)

public void
iload(int no)

public void
imul()

public void
ineg()

public void
public void
invokeinterface(String className, String methodName, String descriptor)

public void
invokeinterface(String className, String methodName, String returnType, String[] parameterTypes)

public void
private void
invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes)

public void
invokespecial(String className, String methodName, String descriptor)

public void
invokespecial(String className, String methodName, String returnType, String[] parameterTypes)

public void
invokespecial(Constructor<?> constructor)

public void
private void
invokespecial(String className, String methodName, String descriptor, String returnType, String[] parameterTypes)

public void
invokestatic(String className, String methodName, String descriptor)

public void
invokestatic(String className, String methodName, String returnType, String[] parameterTypes)

public void
private void
invokestatic(String className, String methodName, String descriptor, String returnType, String[] parameterTypes)

public void
invokevirtual(String className, String methodName, String descriptor)

public void
invokevirtual(String className, String methodName, String returnType, String[] parameterTypes)

public void
private void
invokevirtual(String className, String methodName, String descriptor, String returnType, String[] parameterTypes)

public void
ior()

public void
irem()

public void
ishl()

public void
ishr()

public void
istore(int no)

public void
isub()

public void
public void
ixor()

public void
l2d()

public void
l2f()

public void
l2i()

public void
ladd()

public void
public void
land()

public void
public void
lcmp()

public void
lconst(long value)

Adds the appropriate lconst instruction.

public void
ldc(int
The value to load
value
)

Adds an ldc instruction for an int.

public void
ldc(float value)

Adds an ldc instruction for float

public void
ldc(String value)

Adds an ldc instruction for a String

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

public void
ldc2(double value)

Adds an ldc2_w instruction for double

public void
ldc2(long value)

Adds an ldc2_w instruction for long

private void
ldcInternal(int index)

Adds an ldc instruction for an int.

public void
ldiv()

private void
public void
lload(int no)

public void
lmul()

public void
lneg()

public void
load(Class<?>
The type of variable
type
,
int
local variable number
no
)

Generates the apprpriate load instruction for the given type

public void
load(String
The descriptor of the variable
descriptor
,
int
local variable number
no
)

Generates the apprpriate load instruction for the given type

public void
loadClass(String className)

public void
loadMethodParameters()

loads all parameters onto the stack.

public void
loadType(String descriptor)

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

public void
lookupswitch(final LookupSwitchBuilder lookupSwitchBuilder)

Adds a lookup switch statement

public void
lor()

public void
lrem()

public void
lshl()

public void
lshr()

public void
lstore(int no)

public void
lsub()

public void
public void
lxor()

public CodeLocation
mark()

Gets the location object for the current location in the bytecode.

private void
mergeStackFrames(StackFrame stackFrame)

Merge the stack frames.

public void
public void
public void
multianewarray(String arrayType, int dimensions)

public void
newarray(Class<?> arrayType)

arrayType must be a Class object that represents a primitive type

public void
public void
public void
nop()

private void
overwriteInt(byte[] bytecode, int offset, int value)

overwrites a 32 bit value in the already written bytecode data

private void
overwriteShort(byte[] bytecode, int offset, int value)

overwrites a 16 bit value in the already written bytecode data

public void
pop()

public void
pop2()

public void
putfield(String className, String field, Class<?> fieldType)

public void
putfield(String className, String field, String descriptor)

public void
putstatic(String className, String field, Class<?> fieldType)

public void
putstatic(String className, String field, String descriptor)

public void
returnInstruction()

Adds the appropriate return instruction for the methods return type.

public void
public void
public void
public void
setupFrame(String... types)

public void
sipush(short value)

public void
swap()

public void
private void
private void
writeByte(int n)

public void
private void
writeInt(int n)

private void
writeShort(int n)

Inherited from org.jboss.classfilewriter.attributes.Attribute:
getNamewrite