public abstract class LongReturn extends ReturnInstruction
Modifier and Type | Field and Description |
---|---|
protected long |
ret |
returnFrame
attr, insnIndex, mi, position
Constructor and Description |
---|
LongReturn() |
Modifier and Type | Method and Description |
---|---|
void |
addReturnAttr(ThreadInfo ti,
Object attr) |
protected void |
getAndSaveReturnValue(StackFrame frame) |
<T> T |
getNextReturnAttr(ThreadInfo ti,
Class<T> type,
Object prev) |
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().
|
<T> T |
getReturnAttr(ThreadInfo ti,
Class<T> type)
this only returns the first attr of this type, there can be more
if you don't use client private types or the provided type is too general
|
protected Object |
getReturnedOperandAttr(StackFrame frame) |
int |
getReturnTypeSize() |
boolean |
hasReturnAttr(ThreadInfo ti) |
boolean |
hasReturnAttr(ThreadInfo ti,
Class<?> type) |
protected void |
pushReturnValue(StackFrame frame) |
Iterator |
returnAttrIterator(ThreadInfo ti) |
<T> Iterator<T> |
returnAttrIterator(ThreadInfo ti,
Class<T> type) |
void |
setReturnAttr(ThreadInfo ti,
Object a)
this replaces all of them - use only if you know
- there will be only one attribute at a time
- you obtained the value you set by a previous getXAttr()
- you constructed a multi value list with ObjectList.createList()
we don't clone since pushing a return value already changed the caller frame
|
accept, cleanupTransients, execute, getReturnFrame, getReturnValue, setReturnFrame
addAttr, attrIterator, attrIterator, getAttr, getAttr, getByteCode, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getNextAttr, getPosition, getPrev, getSourceLine, getSourceLocation, getSourceOrLocation, hasAttr, hasAttr, init, isBackJump, isCompleted, isExtendedInstruction, isFirstInstruction, isSchedulingRelevant, removeAttr, replaceAttr, requiresClinitExecution, setAttr, setContext, setLocation, setMethodInfo, toString, typeSafeClone
public int getReturnTypeSize()
getReturnTypeSize
in class ReturnInstruction
protected Object getReturnedOperandAttr(StackFrame frame)
getReturnedOperandAttr
in class ReturnInstruction
protected void getAndSaveReturnValue(StackFrame frame)
getAndSaveReturnValue
in class ReturnInstruction
protected void pushReturnValue(StackFrame frame)
pushReturnValue
in class ReturnInstruction
public boolean hasReturnAttr(ThreadInfo ti)
hasReturnAttr
in class ReturnInstruction
public boolean hasReturnAttr(ThreadInfo ti, Class<?> type)
hasReturnAttr
in class ReturnInstruction
public Object getReturnAttr(ThreadInfo ti)
getReturnAttr
in class ReturnInstruction
public void setReturnAttr(ThreadInfo ti, Object a)
setReturnAttr
in class ReturnInstruction
public <T> T getReturnAttr(ThreadInfo ti, Class<T> type)
getReturnAttr
in class ReturnInstruction
public <T> T getNextReturnAttr(ThreadInfo ti, Class<T> type, Object prev)
getNextReturnAttr
in class ReturnInstruction
public Iterator returnAttrIterator(ThreadInfo ti)
returnAttrIterator
in class ReturnInstruction
public <T> Iterator<T> returnAttrIterator(ThreadInfo ti, Class<T> type)
returnAttrIterator
in class ReturnInstruction
public void addReturnAttr(ThreadInfo ti, Object attr)
addReturnAttr
in class ReturnInstruction