public class NATIVERETURN extends JVMReturnInstruction
Modifier and Type | Field and Description |
---|---|
static int |
OPCODE |
returnFrame
attr, insnIndex, mi, position
Constructor and Description |
---|
NATIVERETURN() |
Modifier and Type | Method and Description |
---|---|
void |
accept(JVMInstructionVisitor insVisitor) |
void |
cleanupTransients()
this is important since keeping the StackFrame alive would be a major
memory leak
|
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.
|
protected void |
getAndSaveReturnValue(StackFrame frame) |
int |
getByteCode() |
java.lang.Object |
getReturnAttr(ThreadInfo ti)
this returns all of them - use either if you know there will be only
one attribute at a time, or check/process result with ObjectList
obviously, this only makes sense from an instructionExecuted(), since
the value is pushed during the enter().
|
protected java.lang.Object |
getReturnedOperandAttr(StackFrame frame) |
int |
getReturnTypeSize() |
java.lang.Object |
getReturnValue(ThreadInfo ti) |
boolean |
isExtendedInstruction()
is this one of our own, artificial insns?
|
protected void |
pushReturnValue(StackFrame fr) |
java.lang.String |
toString() |
addReturnAttr, getNextReturnAttr, getReturnAttr, getReturnFrame, hasReturnAttr, hasReturnAttr, returnAttrIterator, returnAttrIterator, setReturnAttr, setReturnFrame, toPostExecString
addAttr, asInstruction, attrIterator, attrIterator, getAttr, getAttr, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getNextAttr, getPosition, getPrev, getSourceLine, getSourceLocation, getSourceOrLocation, hasAttr, hasAttr, init, isBackJump, isCompleted, isFirstInstruction, isMonitorEnterPrologue, isSchedulingRelevant, removeAttr, replaceAttr, requiresClinitExecution, setAttr, setContext, setLocation, setMethodInfo, typeSafeClone
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
asInstruction, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getPosition, getPrev, getSourceLine, getSourceLocation, isBackJump, isCompleted, isFirstInstruction
addAttr, attrIterator, attrIterator, getAttr, getAttr, getNextAttr, hasAttr, hasAttr, removeAttr, replaceAttr, setAttr
public static final int OPCODE
public Instruction execute(ThreadInfo ti)
Instruction
execute
in interface InstructionInterface
execute
in class JVMReturnInstruction
public void cleanupTransients()
JVMReturnInstruction
cleanupTransients
in class JVMReturnInstruction
public boolean isExtendedInstruction()
Instruction
isExtendedInstruction
in interface InstructionInterface
isExtendedInstruction
in class Instruction
public int getByteCode()
public void accept(JVMInstructionVisitor insVisitor)
accept
in interface JVMInstruction
accept
in class JVMReturnInstruction
protected void getAndSaveReturnValue(StackFrame frame)
getAndSaveReturnValue
in class JVMReturnInstruction
public int getReturnTypeSize()
getReturnTypeSize
in class JVMReturnInstruction
protected java.lang.Object getReturnedOperandAttr(StackFrame frame)
getReturnedOperandAttr
in class JVMReturnInstruction
protected void pushReturnValue(StackFrame fr)
pushReturnValue
in class JVMReturnInstruction
public java.lang.Object getReturnAttr(ThreadInfo ti)
JVMReturnInstruction
getReturnAttr
in class JVMReturnInstruction
public java.lang.Object getReturnValue(ThreadInfo ti)
getReturnValue
in class JVMReturnInstruction
public java.lang.String toString()
toString
in class Instruction