Package org.apache.bcel.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().
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
ARETURN ARETURN - Return reference from method Stack: ..., objectref -> <empty>
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 Stack: ..., arrayref -> ..., length
ArrayType Denotes array type, such as int[][]
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
BasicType Denotes basic type such as int.
BASTORE BASTORE - Store into byte or boolean array Stack: ..., arrayref, index, value -> ...
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.
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 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
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
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
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 -> ..., value OR Stack: ..., objectref -> ..., value.word1, value.word2
GETSTATIC GETSTATIC - Fetch static field from class Stack: ..., -> ..., value OR Stack: ..., -> ..., value.word1, value.word2
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 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
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 -> ...
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 -> ...
IfInstruction Super class for the IFxxx family of instructions.
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 -> ...
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
INEG INEG - Negate int Stack: ..., value -> ..., result
INSTANCEOF INSTANCEOF - Determine if object is of given type Stack: ..., objectref -> ..., 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.
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 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
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 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.
LDC_W LDC_W - Push item from constant pool (wide index) Stack: ...
LDC2_W LDC2_W - Push long or double from constant pool 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.
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 -> ...
PUTSTATIC PUTSTATIC - Put static field in class Stack: ..., value -> ...
ReferenceType Super class for object and array types.
RET RET - Return from subroutine Stack: ..., -> ..., address
RETURN RETURN - Return from void method Stack: ...
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 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
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[]
 

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 org.apache.bcel.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.



Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.