public class NATIVERETURN extends ReturnInstruction
| Modifier and Type | Field and Description |
|---|---|
static int |
OPCODE |
returnFrameattr, insnIndex, mi, position| Constructor and Description |
|---|
NATIVERETURN() |
| Modifier and Type | Method and Description |
|---|---|
void |
accept(InstructionVisitor 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() |
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 Object |
getReturnedOperandAttr(StackFrame frame) |
int |
getReturnTypeSize() |
Object |
getReturnValue(ThreadInfo ti) |
boolean |
isExtendedInstruction()
is this one of our own, artificial insns?
|
protected void |
pushReturnValue(StackFrame fr) |
String |
toString() |
addReturnAttr, getNextReturnAttr, getReturnAttr, getReturnFrame, hasReturnAttr, hasReturnAttr, returnAttrIterator, returnAttrIterator, setReturnAttr, setReturnFrameaddAttr, 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, isSchedulingRelevant, removeAttr, replaceAttr, requiresClinitExecution, setAttr, setContext, setLocation, setMethodInfo, typeSafeClonepublic static final int OPCODE
public Instruction execute(ThreadInfo ti)
Instructionexecute in class ReturnInstructionpublic void cleanupTransients()
ReturnInstructioncleanupTransients in class ReturnInstructionpublic boolean isExtendedInstruction()
InstructionisExtendedInstruction in class Instructionpublic int getByteCode()
getByteCode in class Instructionpublic void accept(InstructionVisitor insVisitor)
accept in interface InstructionVisitorAcceptoraccept in class ReturnInstructionprotected void getAndSaveReturnValue(StackFrame frame)
getAndSaveReturnValue in class ReturnInstructionpublic int getReturnTypeSize()
getReturnTypeSize in class ReturnInstructionprotected Object getReturnedOperandAttr(StackFrame frame)
getReturnedOperandAttr in class ReturnInstructionprotected void pushReturnValue(StackFrame fr)
pushReturnValue in class ReturnInstructionpublic Object getReturnAttr(ThreadInfo ti)
ReturnInstructiongetReturnAttr in class ReturnInstructionpublic Object getReturnValue(ThreadInfo ti)
getReturnValue in class ReturnInstructionpublic String toString()
toString in class Instruction