public abstract class VirtualInvocation extends InstanceInvocation
argSize, arguments, cname, invokedMethod, lastObj, mname, signatureattr, insnIndex, mi, position| Modifier | Constructor and Description |
|---|---|
protected |
VirtualInvocation() |
protected |
VirtualInvocation(java.lang.String clsDescriptor,
java.lang.String methodName,
java.lang.String signature) |
| 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.
|
java.lang.Object |
getFieldValue(java.lang.String id,
ThreadInfo ti) |
MethodInfo |
getInvokedMethod(ThreadInfo ti) |
MethodInfo |
getInvokedMethod(ThreadInfo ti,
int objRef) |
protected boolean |
isLastUnlock(ElementInfo ei)
If the object will still be owned, then the current thread can go on.
|
protected boolean |
isLockOwner(ThreadInfo ti,
ElementInfo ei)
If the current thread already owns the lock, then the current thread can go on.
|
java.lang.String |
toPostExecString()
this can contain additional info that was gathered/cached during execution
|
Instruction |
typeSafeClone(MethodInfo clonedMethod)
this is overridden by any Instruction that use a cache for class or
method to provide a type safe cloning
|
getArgSize, getCalleeThis, getObjectSlot, getThisElementInfogetArgumentAttrs, getArgumentValue, getArgumentValues, getFieldOrArgumentValue, getInvokedMethod, getInvokedMethodClassName, getInvokedMethodName, getInvokedMethodSignature, getLastObjRef, getLength, getReturnType, getReturnTypeName, hasArgumentAttr, hasArgumentObjectAttr, isCompleted, isReferenceReturnType, setInvokedMethod, setupCalleereschedulesLockAcquisitionaddAttr, asInstruction, attrIterator, attrIterator, cleanupTransients, getAttr, getAttr, getFileLocation, getFilePos, getInstructionIndex, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getNextAttr, getPosition, getPrev, getSourceLine, getSourceLocation, getSourceOrLocation, hasAttr, hasAttr, init, isBackJump, isExtendedInstruction, isFirstInstruction, isMonitorEnterPrologue, isSchedulingRelevant, removeAttr, replaceAttr, requiresClinitExecution, setAttr, setContext, setLocation, setMethodInfo, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetInvokedMethodasInstruction, getByteCode, getFileLocation, getFilePos, getInstructionIndex, getLength, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getPosition, getPrev, getSourceLine, getSourceLocation, isBackJump, isCompleted, isExtendedInstruction, isFirstInstructionaddAttr, attrIterator, attrIterator, getAttr, getAttr, getNextAttr, hasAttr, hasAttr, removeAttr, replaceAttr, setAttrprotected VirtualInvocation()
protected VirtualInvocation(java.lang.String clsDescriptor,
java.lang.String methodName,
java.lang.String signature)
public java.lang.String toPostExecString()
InstructiontoPostExecString in interface InstructionInterfacetoPostExecString in class Instructionpublic Instruction execute(ThreadInfo ti)
Instructionexecute in interface InstructionInterfaceexecute in class Instructionprotected boolean isLockOwner(ThreadInfo ti, ElementInfo ei)
protected boolean isLastUnlock(ElementInfo ei)
public MethodInfo getInvokedMethod(ThreadInfo ti)
getInvokedMethod in class JVMInvokeInstructionpublic MethodInfo getInvokedMethod(ThreadInfo ti, int objRef)
public java.lang.Object getFieldValue(java.lang.String id,
ThreadInfo ti)
getFieldValue in class JVMInvokeInstructionpublic void accept(JVMInstructionVisitor insVisitor)
accept in interface JVMInstructionaccept in class InstanceInvocationpublic Instruction typeSafeClone(MethodInfo clonedMethod)
InstructiontypeSafeClone in class JVMInvokeInstruction