public abstract class ArrayLoadInstruction extends JVMArrayElementInstruction implements JVMInstruction
arrayOperandAttr, arrayRef, index, indexOperandAttr
attr, insnIndex, mi, position
Constructor and Description |
---|
ArrayLoadInstruction() |
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.
|
boolean |
isRead() |
protected boolean |
isReference() |
java.lang.Object |
peekArrayAttr(ThreadInfo ti) |
int |
peekArrayRef(ThreadInfo ti)
only makes sense pre-exec
|
int |
peekIndex(ThreadInfo ti) |
java.lang.Object |
peekIndexAttr(ThreadInfo ti) |
protected abstract void |
push(StackFrame frame,
ElementInfo e,
int index) |
getArrayOperandAttr, getArrayRef, getElementInfo, getElementSize, getIndex, getIndexOperandAttr, isReferenceArray, peekArrayElementInfo
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, typeSafeClone
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
asInstruction, getByteCode, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getPosition, getPrev, getSourceLine, getSourceLocation, isBackJump, isCompleted, isExtendedInstruction, isFirstInstruction, toPostExecString
addAttr, attrIterator, attrIterator, getAttr, getAttr, getNextAttr, hasAttr, hasAttr, removeAttr, replaceAttr, setAttr
public Instruction execute(ThreadInfo ti)
Instruction
execute
in interface InstructionInterface
execute
in class Instruction
protected boolean isReference()
public int peekArrayRef(ThreadInfo ti)
peekArrayRef
in class JVMArrayElementInstruction
public java.lang.Object peekArrayAttr(ThreadInfo ti)
peekArrayAttr
in class JVMArrayElementInstruction
public int peekIndex(ThreadInfo ti)
peekIndex
in class JVMArrayElementInstruction
public java.lang.Object peekIndexAttr(ThreadInfo ti)
peekIndexAttr
in class JVMArrayElementInstruction
protected abstract void push(StackFrame frame, ElementInfo e, int index) throws ArrayIndexOutOfBoundsExecutiveException
public boolean isRead()
isRead
in interface ReadOrWriteInstruction
isRead
in class JVMArrayElementInstruction
public void accept(JVMInstructionVisitor insVisitor)
accept
in interface JVMInstruction