Package org.apache.bcel.generic
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.
-
ClassDescriptionAALOAD - Load reference from arrayAASTORE - Store into reference arrayACONST_NULL - Push null referenceDenote family of instructions that allocates space in the heap.ALOAD - Load reference from local variableANEWARRAY - Create new array of referencesARETURN - Return reference from methodSuper class for the family of arithmetic instructions.Super class for instructions dealing with array access such as IALOAD.ARRAYLENGTH - Get length of arrayDenotes array type, such as int[][]ASTORE - Store reference into local variableATHROW - Throw exceptionBALOAD - Load byte or boolean from arrayDenotes basic type such as int.BASTORE - Store into byte or boolean arrayBIPUSH - Push byte on stackBranchHandle is returned by specialized InstructionList.append() whenever a BranchInstruction is appended.Abstract super class for branching instructions like GOTO, IFEQ, etc..BREAKPOINT, JVM dependent, ignored by defaultCALOAD - Load char from arrayCASTORE - Store into char arrayCHECKCAST - Check whether object is of given typeTemplate class for building up a java class.Thrown on internal errors.Implement this interface if you're interested in changes to a ClassGen object and register yourself with addObserver().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.Wrapper class for `compound' operations, virtual instructions that don't exist as byte code, but give a useful meaning.This class is used to build up a constant pool.Denotes a push instruction that produces a literal on the stack such as SIPUSH, BIPUSH, ICONST, etc.Super class for the x2y family of instructions.Abstract super class for instructions that use an index into the constant pool such as LDC, INVOKEVIRTUAL, etc.D2F - Convert double to floatD2I - Convert double to intD2L - Convert double to longDADD - Add doublesDALOAD - Load double from arrayDASTORE - Store into double arrayDCMPG - Compare doubles: value1 > value2DCMPL - Compare doubles: value1 < value2DCONST - Push 0.0 or 1.0, other values cause an exceptionDDIV - Divide doublesDLOAD - Load double from local variableDMUL - Multiply doublesDNEG - Negate doubleDREM - Remainder of doublesDRETURN - Return double from methodDSTORE - Store double into local variableDSUB - Substract doublesDUP - Duplicate top operand stack wordDUP_X1 - Duplicate top operand stack word and put two downDUP_X2 - Duplicate top operand stack word and put three downDUP2 - Duplicate two top operand stack wordsDUP2_X1 - Duplicate two top operand stack words and put three downDUP2_X2 - Duplicate two top operand stack words and put four downSupplies empty method bodies to be overridden by subclasses.Denote an instruction that may throw a run-time or a linking exception (or both) during execution.F2D - Convert float to doubleF2I - Convert float to intF2L - Convert float to longFADD - Add floatsFALOAD - Load float from arrayFASTORE - Store into float arrayFCMPG - Compare floats: value1 > value2FCMPL - Compare floats: value1 < value2FCONST - Push 0.0, 1.0 or 2.0, other values cause an exceptionFDIV - Divide floatsTemplate class for building up a field.Super class for FieldGen and MethodGen objects, since they have some methods in common!Super class for the GET/PUTxxx family of instructions.Imnplement this interface if you're interested in changes to a FieldGen object and register yourself with addObserver().Super class for InvokeInstruction and FieldInstruction, since they have some methods in common!FLOAD - Load float from local variableFMUL - Multiply floatsFNEG - Negate floatFREM - Remainder of floatsFRETURN - Return float from methodFSTORE - Store float into local variableFSUB - Substract floatsGETFIELD - Fetch field from objectGETSTATIC - Fetch static field from classGOTO - Branch always (to relative offset, not absolute address)GOTO_W - Branch always (to relative offset, not absolute address)Super class for GOTOI2B - Convert int to byteI2C - Convert int to charI2D - Convert int to doubleI2F - Convert int to floatI2L - Convert int to longI2S - Convert int to shortIADD - Add intsIALOAD - Load int from arrayIAND - Bitwise AND intIASTORE - Store into int arrayICONST - Push value between -1, ..., 5, other values cause an exceptionIDIV - Divide intsIF_ACMPEQ - Branch if reference comparison succeedsIF_ACMPNE - Branch if reference comparison doesn't succeedIF_ICMPEQ - Branch if int comparison succeedsIF_ICMPGE - Branch if int comparison succeedsIF_ICMPGT - Branch if int comparison succeedsIF_ICMPLE - Branch if int comparison succeedsIF_ICMPLT - Branch if int comparison succeedsIF_ICMPNE - Branch if int comparison doesn't succeedIFEQ - Branch if int comparison with zero succeedsIFGE - Branch if int comparison with zero succeedsIFGT - Branch if int comparison with zero succeedsSuper class for the IFxxx family of instructions.IFLE - Branch if int comparison with zero succeedsIFLT - Branch if int comparison with zero succeedsIFNE - Branch if int comparison with zero succeedsIFNONNULL - Branch if reference is not nullIFNULL - Branch if reference is not nullIINC - Increment local variable by constantILOAD - Load int from local variable onto stackIMPDEP1 - Implementation dependentIMPDEP2 - Implementation dependentIMUL - Multiply intsDenote entity that refers to an index, e.g.INEG - Negate intINSTANCEOF - Determine if object is of given typeAbstract super class for all Java byte codes.Equality of instructions isn't clearly to be defined.This interface contains shareable instruction objects.Deprecated.(since 6.0) Do not use.Instances of this class may be used, e.g., to generate typed versions of instructions.Instances of this class give users a handle to the instructions contained in an InstructionList.This class is a container for a list of Instruction objects.Implement this interface if you're interested in changes to an InstructionList object and register yourself with addObserver().Denote that a class targets InstructionHandles within an InstructionList.Class for INVOKEDYNAMIC.Super class for the INVOKExxx family of instructions.INVOKEINTERFACE - Invoke interface methodINVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method invocationsINVOKESTATIC - Invoke a class (static) methodINVOKEVIRTUAL - Invoke instance method; dispatch based on classIOR - Bitwise OR intIREM - Remainder of intIRETURN - Return int from methodISHL - Arithmetic shift left intISHR - Arithmetic shift right intISTORE - Store int from stack into local variableISUB - Substract intsIUSHR - Logical shift right intIXOR - Bitwise XOR intJSR - Jump to subroutineJSR_W - Jump to subroutineSuper class for JSR - Jump to subroutineL2D - Convert long to doubleL2F - Convert long to floatL2I - Convert long to intLADD - Add longsLALOAD - Load long from arrayLAND - Bitwise AND longsLASTORE - Store into long arrayLCMP - Compare longs:LCONST - Push 0 or 1, other values cause an exceptionLDC - Push item from constant pool.LDC_W - Push item from constant pool (wide index)LDC2_W - Push long or double from constant poolLDIV - Divide longsThis class represents a line number within a method, i.e., give an instruction a line number corresponding to the source code line.LLOAD - Load long from local variableLMUL - Multiply longsLNEG - Negate longDenotes that an instruction may start the process of loading and resolving the referenced class in the Virtual Machine.Denotes an unparameterized instruction to load a value from a local variable, e.g.Represents a local variable within a method.Abstract super class for instructions dealing with local variables.LOOKUPSWITCH - Switch with unordered set of valuesLOR - Bitwise OR longLREM - Remainder of longLRETURN - Return long from methodLSHL - Arithmetic shift left longLSHR - Arithmetic shift right longLSTORE - Store long into local variableLSUB - Substract longsLUSHR - Logical shift right longLXOR - Bitwise XOR longTemplate class for building up a method.Implement this interface if you're interested in changes to a MethodGen object and register yourself with addObserver().MONITORENTER - Enter monitor for objectMONITOREXIT - Exit monitor for objectMULTIANEWARRAY - Create new mutidimensional array of referencesDenote entity that has both name and type.Super class for FieldOrMethod and INVOKEDYNAMIC, since they both have names and signaturesNEW - Create new objectNEWARRAY - Create new array of basic type (int, short, ...)NOP - Do nothingDenotes reference such as java.lang.String.POP - Pop top operand stack wordPOP2 - Pop two top operand stack wordsDenotes an unparameterized instruction to pop a value on top from the stack, such as ISTORE, POP, PUTSTATIC.Wrapper class for push operations, which are implemented either as BIPUSH, LDC or xCONST_n instructions.Denotes an unparameterized instruction to produce a value on top of the stack, such as ILOAD, LDC, SIPUSH, DUP, ICONST, etc.PUTFIELD - Put field in objectPUTSTATIC - Put static field in classSuper class for object and array types.RET - Return from subroutineRETURN - Return from void methodReturnaddress, the type JSR or JSR_W instructions push upon the stack.Super class for the xRETURN family of instructions.SALOAD - Load short from arraySASTORE - Store into short arraySelect - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.SIPUSH - Push shortDenote an instruction that may consume a value from the stack.Super class for stack operations like DUP and POP.Denote an instruction that may produce a value on top of the stack (this excludes DUP_X1, e.g.)Denotes an unparameterized instruction to store a value into a local variable, e.g.SWAP - Swa top operand stack wordSWITCH - 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 - Switch within given range of values, i.e., low..highThrown by InstructionList.remove() when one or multiple disposed instructions are still being referenced by an InstructionTargeter object.Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.Get the type associated with an instruction, int for ILOAD, or the type of the field of a PUTFIELD instruction, e.g..Denotes an instruction to perform an unconditional branch, i.e., GOTO, JSR.Denotes an instruction to be a variable length instruction, such as GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.Interface implementing the Visitor pattern programming style.