Package | Description |
---|---|
gov.nasa.jpf.jvm | |
gov.nasa.jpf.jvm.bytecode | |
gov.nasa.jpf.listener |
Class and Description |
---|
InstructionVisitorAcceptor |
Class and 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
|
FADD
Add float
..., value1, value2 => ..., result
|
FALOAD
Load float from array
..., arrayref, index => ..., value
|
FASTORE
Store into float array
..., arrayref, index, value => ...
|
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
|
InstructionVisitor |
InstructionVisitorAcceptor |
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)
...
|
LDC.Type |
LDC2_W
Push long or double from runtime constant pool (wide index)
...
|
LDC2_W.Type |
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
|
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
|
StoreInstruction
abstraction for various store instructions
|
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 => ...
|
VariableAccessor
abstraction for instrauctions that access local variables
|
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):
|
Class and Description |
---|
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
|
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
|
InvokeInstruction
abstraction for all invoke instructions
|
LockInstruction
common root for MONITORENTER/EXIT
|