public abstract class SwitchInstruction extends Instruction implements JVMInstruction
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT |
protected int |
lastIdx |
protected int[] |
matches |
protected int |
target |
protected int[] |
targets |
attr, insnIndex, mi, position| Modifier | Constructor and Description |
|---|---|
protected |
SwitchInstruction(int defaultTarget,
int numberOfTargets) |
| Modifier and Type | Method and Description |
|---|---|
void |
accept(JVMInstructionVisitor insVisitor) |
Instruction |
execute(ThreadInfo ti)
this is the real workhorse
returns next instruction to enter in this thread
<2do> it's unfortunate we roll every side effect into this method, because
it diminishes the value of the 'executeInstruction' notification: all
insns that require some sort of late binding (InvokeVirtual, GetField, ..)
are not yet fully analyzable (e.g.
|
Instruction |
executeAllBranches(SystemState ss,
KernelState ks,
ThreadInfo ti)
useful for symbolic execution modes
|
protected Instruction |
executeConditional(ThreadInfo ti) |
int |
getLastTargetIndex() |
int |
getMatchConst(int idx) |
int[] |
getMatches() |
int |
getNumberOfEntries() |
int |
getNumberOfTargets() |
int |
getTarget() |
int[] |
getTargets() |
addAttr, asInstruction, attrIterator, attrIterator, cleanupTransients, getAttr, getAttr, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getNextAttr, getPosition, getPrev, getSourceLine, getSourceLocation, getSourceOrLocation, hasAttr, hasAttr, init, isBackJump, isCompleted, isExtendedInstruction, isFirstInstruction, isMonitorEnterPrologue, isSchedulingRelevant, removeAttr, replaceAttr, requiresClinitExecution, setAttr, setContext, setLocation, setMethodInfo, toPostExecString, toString, typeSafeCloneclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitasInstruction, getByteCode, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getPosition, getPrev, getSourceLine, getSourceLocation, isBackJump, isCompleted, isExtendedInstruction, isFirstInstruction, toPostExecStringaddAttr, attrIterator, attrIterator, getAttr, getAttr, getNextAttr, hasAttr, hasAttr, removeAttr, replaceAttr, setAttrpublic static final int DEFAULT
protected int target
protected int[] targets
protected int[] matches
protected int lastIdx
protected SwitchInstruction(int defaultTarget,
int numberOfTargets)
public int getNumberOfEntries()
protected Instruction executeConditional(ThreadInfo ti)
public Instruction execute(ThreadInfo ti)
Instructionexecute in interface InstructionInterfaceexecute in class Instructionpublic Instruction executeAllBranches(SystemState ss, KernelState ks, ThreadInfo ti)
public int getLastTargetIndex()
public int getNumberOfTargets()
public int getMatchConst(int idx)
public void accept(JVMInstructionVisitor insVisitor)
accept in interface JVMInstructionpublic int getTarget()
public int[] getTargets()
public int[] getMatches()