| java.lang.Object gov.nasa.jpf.jvm.bytecode.Instruction
All known Subclasses: gov.nasa.jpf.jvm.bytecode.DSUB, gov.nasa.jpf.jvm.bytecode.FREM, gov.nasa.jpf.jvm.bytecode.F2I, gov.nasa.jpf.jvm.bytecode.DNEG, gov.nasa.jpf.jvm.bytecode.LocalVariableInstruction, gov.nasa.jpf.jvm.bytecode.LSUB, gov.nasa.jpf.jvm.bytecode.I2L, gov.nasa.jpf.jvm.bytecode.ATHROW, gov.nasa.jpf.jvm.bytecode.LDC2_W, gov.nasa.jpf.jvm.bytecode.ArrayInstruction, gov.nasa.jpf.jvm.bytecode.LOR, gov.nasa.jpf.jvm.bytecode.IfInstruction, gov.nasa.jpf.jvm.bytecode.L2D, gov.nasa.jpf.jvm.bytecode.ISHR, gov.nasa.jpf.jvm.bytecode.SIPUSH, gov.nasa.jpf.jvm.bytecode.ReturnInstruction, gov.nasa.jpf.jvm.bytecode.SWAP, gov.nasa.jpf.jvm.bytecode.ARRAYLENGTH, gov.nasa.jpf.jvm.bytecode.I2D, gov.nasa.jpf.jvm.bytecode.LNEG, gov.nasa.jpf.jvm.bytecode.FSUB, gov.nasa.jpf.jvm.bytecode.JSR_W, gov.nasa.jpf.jvm.bytecode.LCMP, gov.nasa.jpf.jvm.bytecode.DUP_X2, gov.nasa.jpf.jvm.bytecode.DDIV, gov.nasa.jpf.jvm.bytecode.NEWARRAY, gov.nasa.jpf.jvm.bytecode.DCONST, gov.nasa.jpf.jvm.bytecode.DCMPG, gov.nasa.jpf.jvm.bytecode.ACONST_NULL, gov.nasa.jpf.jvm.bytecode.BIPUSH, gov.nasa.jpf.jvm.bytecode.ISUB, gov.nasa.jpf.jvm.bytecode.FDIV, gov.nasa.jpf.jvm.bytecode.LSHL, gov.nasa.jpf.jvm.bytecode.NOP, gov.nasa.jpf.jvm.bytecode.MULTIANEWARRAY, gov.nasa.jpf.jvm.bytecode.DUP2_X1, gov.nasa.jpf.jvm.bytecode.I2C, gov.nasa.jpf.jvm.bytecode.F2L, gov.nasa.jpf.jvm.bytecode.CHECKCAST, gov.nasa.jpf.jvm.bytecode.ISHL, gov.nasa.jpf.jvm.bytecode.LDC_W, gov.nasa.jpf.jvm.bytecode.I2S, gov.nasa.jpf.jvm.bytecode.NEW, gov.nasa.jpf.jvm.bytecode.LAND, gov.nasa.jpf.jvm.bytecode.MONITOREXIT, gov.nasa.jpf.jvm.bytecode.ANEWARRAY, gov.nasa.jpf.jvm.bytecode.IXOR, gov.nasa.jpf.jvm.bytecode.LREM, gov.nasa.jpf.jvm.bytecode.DADD, gov.nasa.jpf.jvm.bytecode.InvokeInstruction, gov.nasa.jpf.jvm.bytecode.LADD, gov.nasa.jpf.jvm.bytecode.IREM, gov.nasa.jpf.jvm.bytecode.INSTANCEOF, gov.nasa.jpf.jvm.bytecode.JSR, gov.nasa.jpf.jvm.bytecode.ICONST, gov.nasa.jpf.jvm.bytecode.I2F, gov.nasa.jpf.jvm.bytecode.FCMPG, gov.nasa.jpf.jvm.bytecode.IINC, gov.nasa.jpf.jvm.bytecode.DUP_X1, gov.nasa.jpf.jvm.bytecode.DUP2_X2, gov.nasa.jpf.jvm.bytecode.LDIV, gov.nasa.jpf.jvm.bytecode.D2L, gov.nasa.jpf.jvm.bytecode.POP2, gov.nasa.jpf.jvm.bytecode.D2F, gov.nasa.jpf.jvm.bytecode.LMUL, gov.nasa.jpf.jvm.bytecode.INEG, gov.nasa.jpf.jvm.bytecode.RET, gov.nasa.jpf.jvm.bytecode.D2I, gov.nasa.jpf.jvm.bytecode.DUP2, gov.nasa.jpf.jvm.bytecode.FCMPL, gov.nasa.jpf.jvm.bytecode.LUSHR, gov.nasa.jpf.jvm.bytecode.IOR, gov.nasa.jpf.jvm.bytecode.L2F, gov.nasa.jpf.jvm.bytecode.F2D, gov.nasa.jpf.jvm.bytecode.POP, gov.nasa.jpf.jvm.bytecode.IMUL, gov.nasa.jpf.jvm.bytecode.LSHR, gov.nasa.jpf.jvm.bytecode.IUSHR, gov.nasa.jpf.jvm.bytecode.IADD, gov.nasa.jpf.jvm.bytecode.FNEG, gov.nasa.jpf.jvm.bytecode.DMUL, gov.nasa.jpf.jvm.bytecode.DREM, gov.nasa.jpf.jvm.bytecode.LOOKUPSWITCH, gov.nasa.jpf.jvm.bytecode.MONITORENTER, gov.nasa.jpf.jvm.bytecode.FADD, gov.nasa.jpf.jvm.bytecode.L2I, gov.nasa.jpf.jvm.bytecode.LDC, gov.nasa.jpf.jvm.bytecode.LXOR, gov.nasa.jpf.jvm.bytecode.I2B, gov.nasa.jpf.jvm.bytecode.IDIV, gov.nasa.jpf.jvm.bytecode.FieldInstruction, gov.nasa.jpf.jvm.bytecode.DCMPL, gov.nasa.jpf.jvm.bytecode.TABLESWITCH, gov.nasa.jpf.jvm.bytecode.GOTO, gov.nasa.jpf.jvm.bytecode.DUP, gov.nasa.jpf.jvm.bytecode.FCONST, gov.nasa.jpf.jvm.bytecode.LCONST, gov.nasa.jpf.jvm.bytecode.FMUL, gov.nasa.jpf.jvm.bytecode.IAND,
Instruction | abstract public class Instruction (Code) | | common root of all JPF bytecode instruction classes
|
Method Summary | |
public boolean | Methodexamine(ThreadInfo th) | public static Instruction | create(InstructionHandle h, int o, MethodInfo m, ConstantPool cp) | public boolean | examine(SystemState ss, KernelState ks, ThreadInfo th) | public boolean | examineAbstraction(SystemState ss, KernelState ks, ThreadInfo th) | abstract public Instruction | execute(SystemState ss, KernelState ks, ThreadInfo th) | abstract public int | getByteCode() | public MethodInfo | getMethod() | public String | getMnemonic() | public Instruction | getNext() | Instruction | getNext(ThreadInfo th) this is returning the next Instruction to execute, to be called after
we executed ourselves.
Be aware of that we might have had exceptions caused by our execution,
i.e. | public int | getOffset() | public int | getPosition() | public Instruction | getPrev() | public String | getSourceLocation() | protected void | init(InstructionHandle h, int o, MethodInfo m, ConstantPool cp) | public boolean | isBackJump() | public boolean | isDeterministic(SystemState ss, KernelState ks, ThreadInfo ti) | public boolean | isExecutable(SystemState ss, KernelState ks, ThreadInfo th) | public boolean | isFirstInstruction() | public boolean | isObservable() | public boolean | isSchedulingRelevant(SystemState ss, KernelState ks, ThreadInfo ti) | public boolean | isVisible(SystemState ss, KernelState ks, ThreadInfo th) | public void | setContext(String className, String methodName, int lineNumber, int offset) | public void | setObservable() | abstract protected void | setPeer(org.apache.bcel.generic.Instruction i, ConstantPool cp) | public String | toString() |
Unimplemented | protected static List Unimplemented(Code) | | |
isObservable | protected boolean isObservable(Code) | | |
mi | protected MethodInfo mi(Code) | | NOTE - this is the method this instruction belongs to!
<2do> pcm - Seems nobody has noticed this gets shadowed all over the place
by local vars with a different meaning (InvokeInstruction)
|
offset | protected int offset(Code) | | |
position | protected int position(Code) | | |
getByteCode | abstract public int getByteCode()(Code) | | |
getNext | Instruction getNext(ThreadInfo th)(Code) | | this is returning the next Instruction to execute, to be called after
we executed ourselves.
Be aware of that we might have had exceptions caused by our execution,
i.e. we can't simply assume it's the next insn following us (we have to
acquire the 'current' insn after our exec from the ThreadInfo).
To make it even more interesting, the ThreadInfo might return null because
we might have run into a System.exit, which purges all stacks.
It's questionable if it's the right way to handle this by just returning
our own successor, and rely on ThreadInfo.executeXXMethod to catch
this, but it seems to be the smallest change
> pcm - this is hackish control in case of System.exit
|
getOffset | public int getOffset()(Code) | | |
getPosition | public int getPosition()(Code) | | |
init | protected void init(InstructionHandle h, int o, MethodInfo m, ConstantPool cp)(Code) | | |
isBackJump | public boolean isBackJump()(Code) | | answer if this is a potential loop closing jump
|
isFirstInstruction | public boolean isFirstInstruction()(Code) | | |
isObservable | public boolean isObservable()(Code) | | |
setContext | public void setContext(String className, String methodName, int lineNumber, int offset)(Code) | | |
setObservable | public void setObservable()(Code) | | |
setPeer | abstract protected void setPeer(org.apache.bcel.generic.Instruction i, ConstantPool cp)(Code) | | |
|
|