Interface | Description |
---|---|
InstructionVisitor | |
InstructionVisitorAcceptor | |
StoreInstruction |
abstraction for various store instructions
|
VariableAccessor |
abstraction for instrauctions that access local variables
|
Class | Description |
---|---|
AALOAD |
Load reference from array
..., arrayref, index => ..., value
|
AASTORE |
Store into reference array
..., arrayref, index, value => ...
|
ACONST_NULL |
Push null
...
|
ALOAD |
Load reference from local variable
...
|
ANEWARRAY |
Create new array of reference
..., count => ..., arrayref
|
ARETURN |
Return reference from method
..., objectref => [empty]
|
ArrayElementInstruction |
abstract class for operations that access elements of arrays
|
ArrayInstruction |
abstraction for all array instructions
|
ARRAYLENGTH |
Get length of array
..., arrayref => ..., length
|
ArrayLoadInstruction |
abstraction for all array load instructions
..., array, index => ..., value
|
ArrayStoreInstruction |
abstraction for all array store instructions
...
|
ASTORE |
Store reference into local variable
..., objref => ...
|
ATHROW |
Throw exception or error
..., objectref => objectref
|
BALOAD |
Load byte or boolean from array
..., arrayref, index => ..., value
|
BASTORE |
Store into byte or boolean array
..., arrayref, index, value => ...
|
BIPUSH |
Push byte
...
|
CALOAD |
Load char from array
..., arrayref, index => ..., value
|
CASTORE |
Store into char array
..., arrayref, index, value => ...
|
CHECKCAST |
Check whether object is of given type
..., objectref => ..., objectref
|
D2F |
Convert double to float
..., value => ..., result
|
D2I |
Convert double to int
..., value => ..., result
|
D2L |
Convert double to long
..., value => ..., result
|
DADD |
Add double
..., value1, value2 => ..., result
|
DALOAD |
Load double from array
..., arrayref, index => ..., value
|
DASTORE |
Store into double array
..., arrayref, index, value => ...
|
DCMPG |
Compare double
..., value1, value2 => ..., result
|
DCMPL |
Compare double
..., value1, value2 => ..., result
|
DCONST |
Push double
...
|
DDIV |
Divide double
..., value1, value2 => ..., result
|
DIRECTCALLRETURN |
this is used to return from a DirectCallStackFrame
Note that it is NOT a ReturnInstruction, in case listeners monitor these
and expect corresponding InvokeInstructions.
|
DLOAD |
Load double from local variable
...
|
DMUL |
Multiply double
..., value1, value2 => ..., result
|
DNEG |
Negate double
..., value => ..., result
|
DoubleCompareInstruction |
base class for double double compare instructions
|
DREM |
Remainder double
..., value1, value2 => ..., result
|
DRETURN |
Return double from method
..., value => [empty]
|
DSTORE |
Store double into local variable
..., value => ...
|
DSUB |
Subtract double
..., value1, value2 => ..., result
|
DUP |
duplicate topmost stack entry
.., value -> .., value, value
|
DUP_X1 |
Duplicate the top operand stack value and insert two values down
..., value2, value1 => ..., value1, value2, value1
|
DUP_X2 |
DOCUMENT ME!
|
DUP2 |
Duplicate the top one or two operand stack values
..., value2, value1 => ..., value2, value1, value2, value1
|
DUP2_X1 |
DOCUMENT ME!
|
DUP2_X2 |
Duplicate the top operand stack value and insert two or three values down
...
|
EXECUTENATIVE |
this is a synthetic instruction to (re-)execute native methods
Note that StackFrame and lock handling has to occur from within
the corresponding NativeMethodInfo
|
F2D |
Convert float to double
..., value => ..., result
|
F2I |
Convert float to int
..., value => ..., result
|
F2L |
Convert float to long
..., value => ..., result
|
FADD |
Add float
..., value1, value2 => ..., result
|
FALOAD |
Load float from array
..., arrayref, index => ..., value
|
FASTORE |
Store into float array
..., arrayref, index, value => ...
|
FCMPG |
Compare float
..., value1, value2 => ..., result
|
FCMPL |
Compare float
..., value1, value2 => ..., result
|
FCONST |
Push float
...
|
FDIV |
divide float
..., value1, value2 => ..., result
|
FieldInstruction |
parent class for PUT/GET FIELD/STATIC insns
<2do> there is a inheritance level missing to deal with instance/static
fields - w/o the instance/static helper methods we would have to duplicate
code in the getters/setters
|
FLOAD |
Load float from local variable
...
|
FMUL |
Multiply float
..., value1, value2 => ..., result
|
FNEG |
Negate float
..., value => ..., result
|
FREM |
Remainder float
..., value1, value2 => ..., result
|
FRETURN |
Return float from method
..., value => [empty]
|
FSTORE |
Store float into local variable
..., value => ...
|
FSUB |
Subtract float
..., value1, value2 => ..., result
|
GETFIELD |
Fetch field from object
..., objectref => ..., value
|
GETSTATIC |
Get static fieldInfo from class
..., => ..., value
|
GOTO |
Branch always
No change
<2do> store this as code insnIndex, not as bytecode position
|
GOTO_W | |
I2B |
Convert int to byte
..., value => ..., result
|
I2C |
Convert int to char
..., value => ..., result
|
I2D |
Convert int to double
..., value => ..., result
|
I2F |
Convert int to float
..., value =>..., result
|
I2L |
Convert int to long
..., value => ..., result
|
I2S |
Convert int to short
..., value => ..., result
|
IADD |
Add int
..., value1, value2 =>..., result
|
IALOAD |
Load int from array
..., arrayref, index => ..., value
|
IAND |
Boolean AND int
..., value1, value2 => ..., result
|
IASTORE |
Store into int array
..., arrayref, index, value => ...
|
ICONST |
Push int constant
...
|
IDIV |
Divide int
..., value1, value2 =>..., result
|
IF_ACMPEQ |
Branch if reference comparison succeeds
..., value1, value2 => ...
|
IF_ACMPNE |
Branch if reference comparison does not succeed
..., value1, value2 => ...
|
IF_ICMPEQ |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IF_ICMPGE |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IF_ICMPGT |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IF_ICMPLE |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IF_ICMPLT |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IF_ICMPNE |
Branch if int comparison succeeds
..., value1, value2 => ...
|
IFEQ |
Branch if int comparison with zero succeeds
..., value => ...
|
IFGE |
Branch if int comparison with zero succeeds
..., value => ...
|
IFGT |
Branch if int comparison with zero succeeds
..., value => ...
|
IfInstruction |
abstraction for all comparison instructions
|
IFLE |
Branch if int comparison with zero succeeds
..., value => ...
|
IFLT |
Branch if int comparison with zero succeeds
..., value => ...
|
IFNE |
Branch if int comparison with zero succeeds
..., value => ...
|
IFNONNULL |
Branch if reference not null
..., value => ..., result
|
IFNULL |
DOCUMENT ME!
|
IINC |
Increment local variable by constant
No change
|
ILOAD |
Load int from local variable
...
|
IMUL |
Multiply int
..., value1, value2 => ..., result
|
INEG |
Negate int
..., value => ..., result
|
InstanceFieldInstruction |
class abstracting instructions that access instance fields
|
InstanceInvocation |
base class for INVOKEVIRTUAL, INVOKESPECIAL and INVOLEINTERFACE
|
INSTANCEOF |
Determine if object is of given type
..., objectref => ..., result
|
InstructionFactory |
this is the new JVMInstructionFactory
|
InstructionVisitorAdapter | |
INVOKECG |
a sytnthetic INVOKE instruction that gets it's parameters from an
InvocationCG.
|
INVOKECLINIT |
this is an artificial bytecode that we use to deal with the particularities of
|
InvokeInstruction |
abstraction for all invoke instructions
|
INVOKEINTERFACE |
Invoke interface method
..., objectref, [arg1, [arg2 ...]] => ...
|
INVOKESPECIAL |
Invoke instance method; special handling for superclass, private,
and instance initialization method invocations
..., objectref, [arg1, [arg2 ...]] => ...
|
INVOKESTATIC |
Invoke a class (static) method
..., [arg1, [arg2 ...]] => ...
|
INVOKEVIRTUAL |
Invoke instance method; dispatch based on class
..., objectref, [arg1, [arg2 ...]] => ...
|
IOR |
Boolean OR int
..., value1, value2 => ..., result
|
IREM |
Remainder int
..., value1, value2 => ..., result
|
IRETURN |
Return int from method
..., value => [empty]
|
ISHL |
Shift left int
..., value1, value2 => ..., result
|
ISHR |
Arithmetic shift right int
..., value1, value2 => ..., result
|
ISTORE |
Store int into local variable
..., value => ...
|
ISUB |
Subtract int
..., value1, value2 => ..., result
|
IUSHR |
Logical shift right int
..., value1, value2 => ..., result
|
IXOR |
Boolean XOR int
..., value1, value2 => ..., result
|
JSR |
Jump subroutine
...
|
JSR_W |
Jump subroutine (wide insnIndex)
...
|
L2D |
Convert long to double
..., value => ..., result
|
L2F |
Convert long to float
..., value => ..., result
|
L2I |
Convert long to int
..., value => ..., result
|
LADD |
Add long
..., value1, value2 => ..., result
|
LALOAD |
Load long from array
..., arrayref, index => ..., value
|
LAND |
Boolean AND long
..., value1, value2 => ..., result
|
LASTORE |
Store into long array
..., arrayref, index, value => ...
|
LCMP |
Compare long
..., value1, value2 => ..., result
|
LCONST |
Push long constant
...
|
LDC |
Push item from runtime constant pool
...
|
LDC_W |
Push item from runtime constant pool (wide index)
...
|
LDC2_W |
Push long or double from runtime constant pool (wide index)
...
|
LDIV |
Divide long
..., value1, value2 => ..., result
|
LLOAD |
Load long from local variable
...
|
LMUL |
Multiply long
..., value1, value2 => ..., result
|
LNEG |
Negate long
..., value => ..., result
|
LocalVariableInstruction |
class abstracting instructions that access local variables, to keep
track of slot/varname mapping
|
LockInstruction |
common root for MONITORENTER/EXIT
|
LongArrayLoadInstruction |
abstraction for long array loads
|
LongArrayStoreInstruction |
absraction for long array stores
...
|
LongReturn |
common base for DRETURN and LRETURN
|
LOOKUPSWITCH |
Access jump table by key match and jump
..., key => ...
|
LOR |
Boolean OR long
..., value1, value2 => ..., result
|
LREM |
Remainder long
..., value1, value2 => ..., result
|
LRETURN |
Return long from method
..., value => [empty]
|
LSHL |
Shift left
..., value1, value2 =>..., result
|
LSHR |
Arithmetic shift right long
..., value1, value2 =>..., result
|
LSTORE |
Store long into local variable
..., value => ...
|
LSUB |
Subtract long
..., value1, value2 => ..., result
|
LUSHR |
Logical shift right long
..., value1, value2 =>..., result
|
LXOR |
Boolean XOR long
..., value1, value2 => ..., result
|
MONITORENTER |
Enter monitor for object
..., objectref => ...
|
MONITOREXIT |
Exit monitor for object
..., objectref => ...
|
MULTIANEWARRAY |
Create new multidimensional array
..., count1, [count2, ...] => ..., arrayref
|
NATIVERETURN |
synthetic return instruction for native method invocations, so that
we don't have to do special provisions to copy the caller args in case
a post exec listener wants them.
|
NEW |
Create new object
...
|
NEWARRAY |
Create new array
..., count => ..., arrayref
|
NewArrayInstruction | |
NOP |
Do nothing
No change
|
POP |
Pop the top operand stack value
..., value => ...
|
POP2 |
Pop the top two operand slots
..., value2, value1 => ...
|
PUTFIELD |
Set field in object
..., objectref, value => ...
|
PUTSTATIC |
Set static field in class
..., value => ...
|
RET |
Return from subroutine
No change
|
RETURN |
Return void from method
...
|
ReturnInstruction |
abstraction for the various return instructions
|
RUNSTART |
this is an artificial instruction that is automatically prepended to
a run()/main() method call.
|
SALOAD |
Load short from array
..., arrayref, index => ..., value
|
SASTORE |
Store into short array
..., array, index, value => ...
|
SIPUSH |
Push short
...
|
StaticFieldInstruction |
class to abstract instructions accessing static fields
|
SWAP |
Swap the top two operand stack values
..., value2, value1 => ..., value1, value2
|
SwitchInstruction |
common root class for LOOKUPSWITCH and TABLESWITCH insns
<2do> this is inefficient.
|
TABLESWITCH |
Access jump table by index and jump
..., index => ...
|
VirtualInvocation |
a base class for virtual call instructions
|
WIDE |
modifies following insn, no stack manipulation
NOTE: transparently handled by BCEL, we should never receive this
(1):
|
Enum | Description |
---|---|
LDC.Type | |
LDC2_W.Type |