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(). |
| 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. local variable instructions, RET, CPInstruction, etc. |
| InstructionComparator | Equality of instructions isn't clearly to be defined. |
| 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 implementing the Visitor pattern programming style. |
| Class Summary | |
|---|---|
| AALOAD |
AALOAD - Load reference from array
Stack: ..., arrayref, index -> value |
| AASTORE |
AASTORE - Store into reference array
Stack: ..., arrayref, index, value -> ... |
| ACONST_NULL |
ACONST_NULL - Push null reference
Stack: ... |
| ALOAD |
ALOAD - Load reference from local variable
Stack: ... |
| ANEWARRAY |
ANEWARRAY - Create new array of references
Stack: ..., count -> ..., arrayref |
| ArithmeticInstruction | Super class for the family of arithmetic instructions. |
| ArrayInstruction | Super class for instructions dealing with array access such as IALOAD. |
| ArrayType | Denotes array type, such as int[][] |
| ARETURN |
ARETURN - Return reference from method
Stack: ..., objectref -> <empty> |
| ARRAYLENGTH |
ARRAYLENGTH - Get length of array
Stack: ..., arrayref -> ..., length |
| ASTORE |
ASTORE - Store reference into local variable
Stack ..., objectref -> ... |
| ATHROW |
ATHROW - Throw exception
Stack: ..., objectref -> objectref |
| BALOAD |
BALOAD - Load byte or boolean from array
Stack: ..., arrayref, index -> ..., value |
| BASTORE |
BASTORE - Store into byte or boolean array
Stack: ..., arrayref, index, value -> ... |
| BasicType | Denotes basic type such as int. |
| BIPUSH |
BIPUSH - Push byte on stack
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, JVM dependent, ignored by default |
| CALOAD |
CALOAD - Load char from array
Stack: ..., arrayref, index -> ..., value |
| CASTORE |
CASTORE - Store into char array
Stack: ..., arrayref, index, value -> ... |
| CHECKCAST |
CHECKCAST - Check whether object is of given type
Stack: ..., objectref -> ..., objectref |
| ClassGen | Template class for building up a java class. |
| ClassGenException | Thrown on internal errors. |
| 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. pool as parameters. |
| ConstantPoolGen | This class is used to build up a constant pool. |
| ConstantPoolGen.Index | |
| 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
Stack: ..., value.word1, value.word2 -> ..., result |
| D2I |
D2I - Convert double to int
Stack: ..., value.word1, value.word2 -> ..., result |
| D2L |
D2L - Convert double to long
Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2 |
| DADD |
DADD - Add doubles
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result1.word2 |
| DALOAD |
DALOAD - Load double from array
Stack: ..., arrayref, index -> ..., result.word1, result.word2 |
| DASTORE |
DASTORE - Store into double array
Stack: ..., arrayref, index, value.word1, value.word2 -> ... |
| DCMPG |
DCMPG - Compare doubles: value1 > value2
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result |
| DCMPL |
DCMPL - Compare doubles: value1 < value2
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result |
| DCONST |
DCONST - Push 0.0 or 1.0, other values cause an exception
Stack: ... |
| DDIV |
DDIV - Divide doubles
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| DLOAD |
DLOAD - Load double from local variable
Stack ... |
| DMUL |
DMUL - Multiply doubles
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| DNEG |
DNEG - Negate double
Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2 |
| DREM |
DREM - Remainder of doubles
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| DRETURN |
DRETURN - Return double from method
Stack: ..., value.word1, value.word2 -> <empty> |
| DSTORE |
DSTORE - Store double into local variable
Stack: ..., value.word1, value.word2 -> ... |
| DSUB |
DSUB - Substract doubles
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| DUP |
DUP - Duplicate top operand stack word
Stack: ..., word -> ..., word, word |
| DUP2 |
DUP2 - Duplicate two top operand stack words
Stack: ..., word2, word1 -> ..., word2, word1, word2, word1 |
| DUP2_X1 |
DUP2_X1 - Duplicate two top operand stack words and put three down
Stack: ..., word3, word2, word1 -> ..., word2, word1, word3, word2, word1 |
| DUP2_X2 |
DUP2_X2 - Duplicate two top operand stack words and put four down
Stack: ..., word4, word3, word2, word1 -> ..., word2, word1, word4, word3, word2, word1 |
| DUP_X1 |
DUP_X1 - Duplicate top operand stack word and put two down
Stack: ..., word2, word1 -> ..., word1, word2, word1 |
| DUP_X2 |
DUP_X2 - Duplicate top operand stack word and put three down
Stack: ..., word3, word2, word1 -> ..., word1, word3, word2, word1 |
| EmptyVisitor | Supplies empty method bodies to be overridden by subclasses. |
| F2D |
F2D - Convert float to double
Stack: ..., value -> ..., result.word1, result.word2 |
| F2I |
F2I - Convert float to int
Stack: ..., value -> ..., result |
| F2L |
F2L - Convert float to long
Stack: ..., value -> ..., result.word1, result.word2 |
| FADD |
FADD - Add floats
Stack: ..., value1, value2 -> result |
| FALOAD |
FALOAD - Load float from array
Stack: ..., arrayref, index -> ..., value |
| FASTORE |
FASTORE - Store into float array
Stack: ..., arrayref, index, value -> ... |
| FCMPG |
FCMPG - Compare floats: value1 > value2
Stack: ..., value1, value2 -> ..., result |
| FCMPL |
FCMPL - Compare floats: value1 < value2
Stack: ..., value1, value2 -> ..., result |
| FCONST |
FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
Stack: ... |
| FDIV |
FDIV - Divide floats
Stack: ..., value1, value2 -> result |
| 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! |
| FLOAD |
FLOAD - Load float from local variable
Stack ... |
| FMUL |
FMUL - Multiply floats
Stack: ..., value1, value2 -> result |
| FNEG |
FNEG - Negate float
Stack: ..., value -> ..., result |
| FREM |
FREM - Remainder of floats
Stack: ..., value1, value2 -> result |
| FRETURN |
FRETURN - Return float from method
Stack: ..., value -> <empty> |
| FSTORE |
FSTORE - Store float into local variable
Stack: ..., value -> ... |
| FSUB |
FSUB - Substract floats
Stack: ..., value1, value2 -> result |
| GETFIELD |
GETFIELD - Fetch field from object
Stack: ..., objectref -> ..., valueOR Stack: ..., objectref -> ..., value.word1, value.word2 |
| GETSTATIC |
GETSTATIC - Fetch static field from class
Stack: ..., -> ..., valueOR Stack: ..., -> ..., value.word1, value.word2 |
| GotoInstruction | Super class for GOTO |
| GOTO | GOTO - Branch always (to relative offset, not absolute address) |
| GOTO_W | GOTO_W - Branch always (to relative offset, not absolute address) |
| I2B |
I2B - Convert int to byte
Stack: ..., value -> ..., result |
| I2C |
I2C - Convert int to char
Stack: ..., value -> ..., result |
| I2D |
I2D - Convert int to double
Stack: ..., value -> ..., result.word1, result.word2 |
| I2F |
I2F - Convert int to float
Stack: ..., value -> ..., result |
| I2L |
I2L - Convert int to long
Stack: ..., value -> ..., result.word1, result.word2 |
| I2S |
I2S - Convert int to short
Stack: ..., value -> ..., result |
| IADD |
IADD - Add ints
Stack: ..., value1, value2 -> result |
| IALOAD |
IALOAD - Load int from array
Stack: ..., arrayref, index -> ..., value |
| IAND |
IAND - Bitwise AND int
Stack: ..., value1, value2 -> ..., result |
| IASTORE |
IASTORE - Store into int array
Stack: ..., arrayref, index, value -> ... |
| ICONST |
ICONST - Push value between -1, ..., 5, other values cause an exception
Stack: ... |
| IDIV |
IDIV - Divide ints
Stack: ..., value1, value2 -> result |
| IfInstruction | Super class for the IFxxx family of instructions. |
| IFEQ |
IFEQ - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFGE |
IFGE - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFGT |
IFGT - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFLE |
IFLE - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFLT |
IFLT - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFNE |
IFNE - Branch if int comparison with zero succeeds
Stack: ..., value -> ... |
| IFNONNULL |
IFNONNULL - Branch if reference is not null
Stack: ..., reference -> ... |
| IFNULL |
IFNULL - Branch if reference is not null
Stack: ..., reference -> ... |
| IF_ACMPEQ |
IF_ACMPEQ - Branch if reference comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ACMPNE |
IF_ACMPNE - Branch if reference comparison doesn't succeed
Stack: ..., value1, value2 -> ... |
| IF_ICMPEQ |
IF_ICMPEQ - Branch if int comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ICMPGE |
IF_ICMPGE - Branch if int comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ICMPGT |
IF_ICMPGT - Branch if int comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ICMPLE |
IF_ICMPLE - Branch if int comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ICMPLT |
IF_ICMPLT - Branch if int comparison succeeds
Stack: ..., value1, value2 -> ... |
| IF_ICMPNE |
IF_ICMPNE - Branch if int comparison doesn't succeed
Stack: ..., value1, value2 -> ... |
| IINC | IINC - Increment local variable by constant |
| ILOAD |
ILOAD - Load int from local variable onto stack
Stack: ... |
| IMPDEP1 | IMPDEP1 - Implementation dependent |
| IMPDEP2 | IMPDEP2 - Implementation dependent |
| IMUL |
IMUL - Multiply ints
Stack: ..., value1, value2 -> result |
| 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. |
| InstructionFactory.MethodObject | |
| 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. |
| INEG |
INEG - Negate int
Stack: ..., value -> ..., result |
| INSTANCEOF |
INSTANCEOF - Determine if object is of given type
Stack: ..., objectref -> ..., result |
| INVOKEINTERFACE |
INVOKEINTERFACE - Invoke interface method
Stack: ..., objectref, [arg1, [arg2 ...]] |
| INVOKESPECIAL |
INVOKESPECIAL - Invoke instance method; special handling for superclass, private
and instance initialization method invocations
Stack: ..., objectref, [arg1, [arg2 ...]] |
| INVOKESTATIC |
INVOKESTATIC - Invoke a class (static) method
Stack: ..., [arg1, [arg2 ...]] |
| INVOKEVIRTUAL |
INVOKEVIRTUAL - Invoke instance method; dispatch based on class
Stack: ..., objectref, [arg1, [arg2 ...]] |
| IOR |
IOR - Bitwise OR int
Stack: ..., value1, value2 -> ..., result |
| IREM |
IREM - Remainder of int
Stack: ..., value1, value2 -> result |
| IRETURN |
IRETURN - Return int from method
Stack: ..., value -> <empty> |
| ISHL |
ISHL - Arithmetic shift left int
Stack: ..., value1, value2 -> ..., result |
| ISHR |
ISHR - Arithmetic shift right int
Stack: ..., value1, value2 -> ..., result |
| ISTORE |
ISTORE - Store int from stack into local variable
Stack: ..., value -> ... |
| ISUB |
ISUB - Substract ints
Stack: ..., value1, value2 -> result |
| IUSHR |
IUSHR - Logical shift right int
Stack: ..., value1, value2 -> ..., result |
| IXOR |
IXOR - Bitwise XOR int
Stack: ..., value1, value2 -> ..., result |
| JsrInstruction | Super class for JSR - Jump to subroutine |
| JSR | JSR - Jump to subroutine |
| JSR_W | JSR_W - Jump to subroutine |
| L2D |
L2D - Convert long to double
Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2 |
| L2F |
L2F - Convert long to float
Stack: ..., value.word1, value.word2 -> ..., result |
| L2I |
L2I - Convert long to int
Stack: ..., value.word1, value.word2 -> ..., result |
| LADD |
LADD - Add longs
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| LALOAD |
LALOAD - Load long from array
Stack: ..., arrayref, index -> ..., value1, value2 |
| LAND |
LAND - Bitwise AND longs
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| LASTORE |
LASTORE - Store into long array
Stack: ..., arrayref, index, value.word1, value.word2 -> ... |
| LCMP |
LCMP - Compare longs:
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result <= -1, 0, 1> |
| LCONST |
LCONST - Push 0 or 1, other values cause an exception
Stack: ... |
| LDC | LDC - Push item from constant pool. |
| LDC2_W |
LDC2_W - Push long or double from constant pool
Stack: ... |
| LDC_W |
LDC_W - Push item from constant pool (wide index)
Stack: ... |
| LDIV |
LDIV - Divide longs
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| 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
Stack ... |
| LMUL |
LMUL - Multiply longs
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| LNEG |
LNEG - Negate long
Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2 |
| 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
Stack: ..., value1, value2 -> ..., result |
| LREM |
LREM - Remainder of long
Stack: ..., value1, value2 -> result |
| LRETURN |
LRETURN - Return long from method
Stack: ..., value.word1, value.word2 -> <empty> |
| LSHL |
LSHL - Arithmetic shift left long
Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2 |
| LSHR |
LSHR - Arithmetic shift right long
Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2 |
| LSTORE |
LSTORE - Store long into local variable
Stack: ..., value.word1, value.word2 -> ... |
| LSUB |
LSUB - Substract longs
Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->..., result.word1, result.word2 |
| LUSHR |
LUSHR - Logical shift right long
Stack: ..., value1, value2 -> ..., result |
| LXOR |
LXOR - Bitwise XOR long
Stack: ..., value1, value2 -> ..., result |
| MethodGen | Template class for building up a method. |
| MethodGen.BranchStack | |
| MethodGen.BranchTarget | |
| MONITORENTER |
MONITORENTER - Enter monitor for object
Stack: ..., objectref -> ... |
| MONITOREXIT |
MONITOREXIT - Exit monitor for object
Stack: ..., objectref -> ... |
| MULTIANEWARRAY |
MULTIANEWARRAY - Create new mutidimensional array of references
Stack: ..., count1, [count2, ...] |
| NEW |
NEW - Create new object
Stack: ... |
| 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
Stack: ..., word -> ... |
| POP2 |
POP2 - Pop two top operand stack words
Stack: ..., word2, word1 -> ... |
| PUSH | Wrapper class for push operations, which are implemented either as BIPUSH, LDC or xCONST_n instructions. |
| PUTFIELD |
PUTFIELD - Put field in object
Stack: ..., objectref, value -> ...OR Stack: ..., objectref, value.word1, value.word2 -> ... |
| PUTSTATIC |
PUTSTATIC - Put static field in class
Stack: ..., value -> ...OR Stack: ..., value.word1, value.word2 -> ... |
| ReferenceType | Super class for object and array types. |
| ReturnaddressType | Returnaddress, the type JSR or JSR_W instructions push upon the stack. see vmspec2 '3.3.3 |
| ReturnInstruction | Super class for the xRETURN family of instructions. |
| RET |
RET - Return from subroutine
Stack: ... |
| RETURN |
RETURN - Return from void method
Stack: ... |
| SALOAD |
SALOAD - Load short from array
Stack: ..., arrayref, index -> ..., value |
| SASTORE |
SASTORE - Store into short array
Stack: ..., arrayref, index, value -> ... |
| Select | Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions. |
| SIPUSH |
SIPUSH - Push short
Stack: ... |
| 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
Stack: ..., word2, word1 -> ..., word1, word2 |
| 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 |
| TargetLostException | Thrown by InstructionList.remove() when one or multiple disposed instruction are still being referenced by a InstructionTargeter object. |
| Type | Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g. int[] |
This package contains the "generic" part of the Byte Code Engineering Library, i.e., classes to dynamically modify class objects and byte code instructions.