public class PUTFIELD extends JVMInstanceFieldInstruction implements WriteInstruction
lastThis
className, fi, fname, ftype, isReferenceField, lastValue, size, varId
attr, insnIndex, mi, position
Constructor and Description |
---|
PUTFIELD(java.lang.String fieldName,
java.lang.String clsDescriptor,
java.lang.String fieldDescriptor) |
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.
|
int |
getByteCode() |
ElementInfo |
getElementInfo(ThreadInfo ti)
where do we write to?
NOTE: this should only be used from a executeInstruction()/instructionExecuted() context
|
int |
getLength()
return the length in bytes of this instruction.
|
int |
getObjectSlot(StackFrame frame) |
int |
getValueSlot(StackFrame frame)
where do we get the value from?
NOTE: only makes sense in a executeInstruction() context
|
boolean |
isRead() |
ElementInfo |
peekElementInfo(ThreadInfo ti) |
protected void |
popOperands(StackFrame frame) |
getFieldDescriptor, getFieldInfo, getLastElementInfo, getLastThis, toPostExecString
getClassName, getFieldName, getFieldSize, getId, getLastValue, getVariableId, isMonitorEnterPrologue, isReferenceField, setField, toString
addAttr, asInstruction, attrIterator, attrIterator, cleanupTransients, getAttr, getAttr, getFileLocation, getFilePos, getInstructionIndex, 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, typeSafeClone
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getFieldInfo
asInstruction, getFileLocation, getFilePos, getInstructionIndex, getLineNumber, getMethodInfo, getMnemonic, getNext, getNext, getPosition, getPrev, getSourceLine, getSourceLocation, isBackJump, isCompleted, isExtendedInstruction, isFirstInstruction, toPostExecString
addAttr, attrIterator, attrIterator, getAttr, getAttr, getNextAttr, hasAttr, hasAttr, removeAttr, replaceAttr, setAttr
getFieldInfo, getFieldName, getLastValue, isReferenceField
public PUTFIELD(java.lang.String fieldName, java.lang.String clsDescriptor, java.lang.String fieldDescriptor)
public int getObjectSlot(StackFrame frame)
getObjectSlot
in class InstanceFieldInstruction
public int getValueSlot(StackFrame frame)
getValueSlot
in interface WriteInstruction
public ElementInfo getElementInfo(ThreadInfo ti)
getElementInfo
in interface ReadOrWriteInstruction
getElementInfo
in class InstanceFieldInstruction
public Instruction execute(ThreadInfo ti)
Instruction
execute
in interface InstructionInterface
execute
in class Instruction
protected void popOperands(StackFrame frame)
public ElementInfo peekElementInfo(ThreadInfo ti)
peekElementInfo
in interface JVMFieldInstruction
peekElementInfo
in class FieldInstruction
public int getLength()
Instruction
getLength
in interface InstructionInterface
getLength
in class Instruction
public int getByteCode()
getByteCode
in interface InstructionInterface
public boolean isRead()
isRead
in interface ReadOrWriteInstruction
isRead
in class FieldInstruction
public void accept(JVMInstructionVisitor insVisitor)
accept
in interface JVMInstruction
accept
in class JVMInstanceFieldInstruction