public class NATIVERETURN extends ReturnInstruction
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(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, setReturnFrame
addAttr, 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, typeSafeClone
public static final int OPCODE
public Instruction execute(ThreadInfo ti)
Instruction
execute
in class ReturnInstruction
public void cleanupTransients()
ReturnInstruction
cleanupTransients
in class ReturnInstruction
public boolean isExtendedInstruction()
Instruction
isExtendedInstruction
in class Instruction
public int getByteCode()
getByteCode
in class Instruction
public void accept(InstructionVisitor insVisitor)
accept
in interface InstructionVisitorAcceptor
accept
in class ReturnInstruction
protected void getAndSaveReturnValue(StackFrame frame)
getAndSaveReturnValue
in class ReturnInstruction
public int getReturnTypeSize()
getReturnTypeSize
in class ReturnInstruction
protected Object getReturnedOperandAttr(StackFrame frame)
getReturnedOperandAttr
in class ReturnInstruction
protected void pushReturnValue(StackFrame fr)
pushReturnValue
in class ReturnInstruction
public Object getReturnAttr(ThreadInfo ti)
ReturnInstruction
getReturnAttr
in class ReturnInstruction
public Object getReturnValue(ThreadInfo ti)
getReturnValue
in class ReturnInstruction
public String toString()
toString
in class Instruction