Package de.fub.bytecode.generic

This package contains the "generic" part of the Byte Code Engineering Library, i.e., classes to dynamically modify class objects and byte code instructions.

See:
          Description

Interface Summary
AllocationInstruction Denote family of instructions that allocates space in the heap.
ClassObserver Implement this interface if you're interested in changes to a ClassGen object and register yourself with addObserver().
CodeConstraint Code patterns found with the FindPattern class may receive an additional CodeConstraint argument that checks the found piece of code for user-defined constraints.
CompoundInstruction Wrapper class for `compound' operations, virtual instructions that don't exist as byte code, but give a useful meaning.
ConstantPushInstruction Denotes a push instruction that produces a literal on the stack such as SIPUSH, BIPUSH, ICONST, etc.
ExceptionThrower Denote an instruction that may throw a run-time or a linking exception (or both) during execution.
FieldObserver Imnplement this interface if you're interested in changes to a FieldGen object and register yourself with addObserver().
IndexedInstruction Denote entity that refers to an index, e.g.
InstructionConstants This interface contains shareable instruction objects.
InstructionListObserver Implement this interface if you're interested in changes to an InstructionList object and register yourself with addObserver().
InstructionTargeter Denote that a class targets InstructionHandles within an InstructionList.
LoadClass Denotes that an instruction may start the process of loading and resolving the referenced class in the Virtual Machine.
MethodObserver Implement this interface if you're interested in changes to a MethodGen object and register yourself with addObserver().
NamedAndTyped Denote entity that has both name and type.
PopInstruction Denotes an unparameterized instruction to pop a value on top from the stack, such as ISTORE, POP, PUTSTATIC.
PushInstruction Denotes an unparameterized instruction to produce a value on top of the stack, such as ILOAD, LDC, SIPUSH, DUP, ICONST, etc.
StackConsumer Denote an instruction that may consume a value from the stack.
StackProducer Denote an instruction that may produce a value on top of the stack (this excludes DUP_X1, e.g.)
TypedInstruction Get the type associated with an instruction, int for ILOAD, or the type of the field of a PUTFIELD instruction, e.g..
UnconditionalBranch Denotes an instruction to perform an unconditional branch, i.e., GOTO, JSR.
VariableLengthInstruction Denotes an instruction to be a variable length instruction, such as GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.
Visitor Interface to make use of the Visitor pattern programming style.
 

Class Summary
AALOAD AALOAD - Load reference from array
AASTORE AASTORE - Store into reference array
ACONST_NULL ACONST_NULL - Push null reference
ALOAD ALOAD - Load reference from local variable
ANEWARRAY ANEWARRAY - Create new array of references
ARETURN ARETURN - Return reference from method
ArithmeticInstruction Super class for the family of arithmetic instructions.
ArrayInstruction Super class for instructions dealing with array access such as IALOAD.
ARRAYLENGTH ARRAYLENGTH - Get length of array
ArrayType Denotes array type, such as int[][]
ASTORE ASTORE - Store reference into local variable
ATHROW ATHROW - Throw exception
BALOAD BALOAD - Load byte or boolean from array
BasicType Denotes basic type such as int.
BASTORE BASTORE - Store into byte or boolean array
BIPUSH BIPUSH - Push byte on stack
BranchHandle BranchHandle is returned by specialized InstructionList.append() whenever a BranchInstruction is appended.
BranchInstruction Abstract super class for branching instructions like GOTO, IFEQ, etc..
BREAKPOINT BREAKPOINT
CALOAD CALOAD - Load char from array
CASTORE CASTORE - Store into char array
CHECKCAST CHECKCAST - Check whether object is of given type
ClassGen Template class for building up a java class.
CodeExceptionGen This class represents an exception handler, i.e., specifies the region where a handler is active and an instruction where the actual handling is done.
ConstantPoolGen This class is used to build up a constant pool.
ConversionInstruction Super class for the x2y family of instructions.
CPInstruction Abstract super class for instructions that use an index into the constant pool such as LDC, INVOKEVIRTUAL, etc.
D2F D2F - Convert double to float
D2I D2I - Convert double to int
D2L D2L - Convert double to long
DADD DADD - Add doubles
DALOAD DALOAD - Load double from array
DASTORE DASTORE - Store into double array
DCMPG DCMPG - Compare doubles: value1 > value2
DCMPL DCMPL - Compare doubles: value1 < value2
DCONST DCONST - Push 0.0 or 1.0, other values cause an exception
DDIV DDIV - Divide doubles
DefaultVisitor Deprecated. Use EmptyVisitor instead.
DLOAD DLOAD - Load double from local variable
DMUL DMUL - Multiply doubles
DNEG DNEG - Negate double
DREM DREM - Remainder of doubles
DRETURN DRETURN - Return double from method
DSTORE DSTORE - Store double into local variable
DSUB DSUB - Substract doubles
DUP DUP - Duplicate top operand stack word
DUP_X1 DUP_X1 - Duplicate top operand stack word and put two down
DUP_X2 DUP_X2 - Duplicate top operand stack word and put three down
DUP2 DUP2 - Duplicate two top operand stack words
DUP2_X1 DUP2_X1 - Duplicate two top operand stack words and put three down
DUP2_X2 DUP2_X2 - Duplicate two top operand stack words and put four down
EmptyVisitor Supplies empty method bodies to be overridden by subclasses.
F2D F2D - Convert float to double
F2I F2I - Convert float to int
F2L F2L - Convert float to long
FADD FADD - Add floats
FALOAD FALOAD - Load float from array
FASTORE FASTORE - Store into float array
FCMPG FCMPG - Compare floats: value1 > value2
FCMPL FCMPL - Compare floats: value1 < value2
FCONST FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
FDIV FDIV - Divide floats
FieldGen Template class for building up a field.
FieldGenOrMethodGen Super class for FieldGen and MethodGen objects, since they have some methods in common!
FieldInstruction Super class for the GET/PUTxxx family of instructions.
FieldOrMethod Super class for InvokeInstruction and FieldInstruction, since they have some methods in common!
FindPattern This class is an utility to search for given patterns, i.e., regular expressions in an instruction list.
FLOAD FLOAD - Load float from local variable
FMUL FMUL - Multiply floats
FNEG FNEG - Negate float
FREM FREM - Remainder of floats
FRETURN FRETURN - Return float from method
FSTORE FSTORE - Store float into local variable
FSUB FSUB - Substract floats
GETFIELD GETFIELD - Fetch field from object
GETSTATIC GETSTATIC - Fetch static field from class
GOTO GOTO - Branch always (to relative offset, not absolute address)
GOTO_W GOTO_W - Branch always (to relative offset, not absolute address)
GotoInstruction Super class for GOTO
I2B I2B - Convert int to byte
I2C I2C - Convert int to char
I2D I2D - Convert int to double
I2F I2F - Convert int to float
I2L I2L - Convert int to long
I2S I2S - Convert int to short
IADD IADD - Add ints
IALOAD IALOAD - Load int from array
IAND IAND - Bitwise AND int
IASTORE IASTORE - Store into int array
ICONST ICONST - Push value between -1, ..., 5, other values cause an exception
IDIV IDIV - Divide ints
IF_ACMPEQ IF_ACMPEQ - Branch if reference comparison succeeds
IF_ACMPNE IF_ACMPNE - Branch if reference comparison doesn't succeed
IF_ICMPEQ IF_ICMPEQ - Branch if int comparison succeeds
IF_ICMPGE IF_ICMPGE - Branch if int comparison succeeds
IF_ICMPGT IF_ICMPGT - Branch if int comparison succeeds
IF_ICMPLE IF_ICMPLE - Branch if int comparison succeeds
IF_ICMPLT IF_ICMPLT - Branch if int comparison succeeds
IF_ICMPNE IF_ICMPNE - Branch if int comparison doesn't succeed
IFEQ IFEQ - Branch if int comparison with zero succeeds
IFGE IFGE - Branch if int comparison with zero succeeds
IFGT IFGT - Branch if int comparison with zero succeeds
IfInstruction Super class for the IFxxx family of instructions.
IFLE IFLE - Branch if int comparison with zero succeeds
IFLT IFLT - Branch if int comparison with zero succeeds
IFNE IFNE - Branch if int comparison with zero succeeds
IFNONNULL IFNONNULL - Branch if reference is not null
IFNULL IFNULL - Branch if reference is not null
IINC IINC - Increment local variable by constant
ILOAD ILOAD - Load int from local variable onto stack
IMPDEP1 IMPDEP1 - Implementation dependent
IMPDEP2 IMPDEP2 - Implementation dependent
IMUL IMUL - Multiply ints
INEG INEG - Negate int
INSTANCEOF INSTANCEOF - Determine if object is of given type
Instruction Abstract super class for all Java byte codes.
InstructionConstants.Clinit  
InstructionFactory Instances of this class may be used, e.g., to generate typed versions of instructions.
InstructionHandle Instances of this class give users a handle to the instructions contained in an InstructionList.
InstructionList This class is a container for a list of Instruction objects.
InvokeInstruction Super class for the INVOKExxx family of instructions.
INVOKEINTERFACE INVOKEINTERFACE - Invoke interface method
INVOKESPECIAL INVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method invocations
INVOKESTATIC INVOKESTATIC - Invoke a class (static) method
INVOKEVIRTUAL INVOKEVIRTUAL - Invoke instance method; dispatch based on class
IOR IOR - Bitwise OR int
IREM IREM - Remainder of int
IRETURN IRETURN - Return int from method
ISHL ISHL - Arithmetic shift left int
ISHR ISHR - Arithmetic shift right int
ISTORE ISTORE - Store int from stack into local variable
ISUB ISUB - Substract ints
IUSHR IUSHR - Logical shift right int
IXOR IXOR - Bitwise XOR int
JSR JSR - Jump to subroutine
JSR_W JSR_W - Jump to subroutine
JsrInstruction Super class for JSR - Jump to subroutine
L2D L2D - Convert long to double
L2F L2F - Convert long to float
L2I L2I - Convert long to int
LADD LADD - Add longs
LALOAD LALOAD - Load long from array
LAND LAND - Bitwise AND longs
LASTORE LASTORE - Store into long array
LCMP LCMP - Compare longs:
LCONST LCONST - Push 0 or 1, other values cause an exception
LDC LDC - Push item from constant pool.
LDC_W LDC_W - Push item from constant pool (wide index)
LDC2_W LDC2_W - Push long or double from constant pool
LDIV LDIV - Divide longs
LineNumberGen This class represents a line number within a method, i.e., give an instruction a line number corresponding to the source code line.
LLOAD LLOAD - Load long from local variable
LMUL LMUL - Multiply longs
LNEG LNEG - Negate long
LoadInstruction Denotes an unparameterized instruction to load a value from a local variable, e.g.
LocalVariableGen This class represents a local variable within a method.
LocalVariableInstruction Abstract super class for instructions dealing with local variables.
LOOKUPSWITCH LOOKUPSWITCH - Switch with unordered set of values
LOR LOR - Bitwise OR long
LREM LREM - Remainder of long
LRETURN LRETURN - Return long from method
LSHL LSHL - Arithmetic shift left long
LSHR LSHR - Arithmetic shift right long
LSTORE LSTORE - Store long into local variable
LSUB LSUB - Substract longs
LUSHR LUSHR - Logical shift right long
LXOR LXOR - Bitwise XOR long
MethodGen Template class for building up a method.
MONITORENTER MONITORENTER - Enter monitor for object
MONITOREXIT MONITOREXIT - Exit monitor for object
MULTIANEWARRAY MULTIANEWARRAY - Create new mutidimensional array of references
NEW NEW - Create new object
NEWARRAY NEWARRAY - Create new array of basic type (int, short, ...)
NOP NOP - Do nothing
ObjectType Denotes reference such as java.lang.String.
POP POP - Pop top operand stack word
POP2 POP2 - Pop two top operand stack words
PUSH Wrapper class for push operations, which are implemented either as BIPUSH, LDC or xCONST_n instructions.
PUTFIELD PUTFIELD - Put field in object
PUTSTATIC PUTSTATIC - Put static field in class
ReferenceType Super class for objects and arrays.
RET RET - Return from subroutine
RETURN RETURN - Return from void method
ReturnaddressType Returnaddress, the type JSR or JSR_W instructions push upon the stack.
ReturnInstruction Super class for the xRETURN family of instructions.
SALOAD SALOAD - Load short from array
SASTORE SASTORE - Store into short array
Select Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
SIPUSH SIPUSH - Push short
StackInstruction Super class for stack operations like DUP and POP.
StoreInstruction Denotes an unparameterized instruction to store a value into a local variable, e.g.
SWAP SWAP - Swa top operand stack word
SWITCH SWITCH - Branch depending on int value, generates either LOOKUPSWITCH or TABLESWITCH instruction, depending on whether the match values (int[]) can be sorted with no gaps between the numbers.
TABLESWITCH TABLESWITCH - Switch within given range of values, i.e., low..high
Type Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.
 

Exception Summary
ClassGenException Thrown on internal errors.
TargetLostException Thrown by InstructionList.remove() when one or multiple disposed instruction are still being referenced by a InstructionTargeter object.
 

Package de.fub.bytecode.generic Description

This package contains the "generic" part of the Byte Code Engineering Library, i.e., classes to dynamically modify class objects and byte code instructions.