org.apache.bcel.generic
Class InstructionHandle
java.lang.Object
org.apache.bcel.generic.InstructionHandle
- java.io.Serializable
public class InstructionHandle
extends java.lang.Object
implements java.io.Serializable
Instances of this class give users a handle to the instructions contained in
an InstructionList. Instruction objects may be used more than once within a
list, this is useful because it saves memory and may be much faster.
Within an InstructionList an InstructionHandle object is wrapped
around all instructions, i.e., it implements a cell in a
doubly-linked list. From the outside only the next and the
previous instruction (handle) are accessible. One
can traverse the list via an Enumeration returned by
InstructionList.elements().
$Id: InstructionHandle.java,v 1.1.1.1 2001/10/29 20:00:19 jvanzyl Exp $
i_position
protected int i_position
InstructionHandle
protected InstructionHandle(Instruction i)
accept
public void accept(Visitor v)
Convenience method, simply calls accept() on the contained instruction.
addAttribute
public void addAttribute(Object key,
Object attr)
Add an attribute to an instruction handle.
key
- the key object to store/retrieve the attributeattr
- the attribute to associate with this handle
addHandle
protected void addHandle()
Overridden in BranchHandle
addTargeter
public void addTargeter(InstructionTargeter t)
Denote this handle is being referenced by t.
getAttribute
public Object getAttribute(Object key)
Get attribute of an instruction handle.
key
- the key object to store/retrieve the attribute
getAttributes
public Collection getAttributes()
- all attributes associated with this handle
getInstruction
public final Instruction getInstruction()
getPosition
public int getPosition()
- the position, i.e., the byte code offset of the contained
instruction. This is accurate only after
InstructionList.setPositions() has been called.
hasTargeters
public boolean hasTargeters()
removeAllTargeters
public void removeAllTargeters()
Remove all targeters, if any.
removeAttribute
public void removeAttribute(Object key)
Delete an attribute of an instruction handle.
key
- the key object to retrieve the attribute
removeTargeter
public void removeTargeter(InstructionTargeter t)
Denote this handle isn't referenced anymore by t.
setInstruction
public void setInstruction(Instruction i)
Replace current instruction contained in this handle.
Old instruction is disposed using Instruction.dispose().
swapInstruction
public Instruction swapInstruction(Instruction i)
Temporarily swap the current instruction, without disturbing
anything. Meant to be used by a debugger, implementing
breakpoints. Current instruction is returned.
toString
public String toString()
- a string representation of the contained instruction.
toString
public String toString(boolean verbose)
- a (verbose) string representation of the contained instruction.
updatePosition
protected int updatePosition(int offset,
int max_offset)
Called by InstructionList.setPositions when setting the position for every
instruction. In the presence of variable length instructions `setPositions()'
performs multiple passes over the instruction list to calculate the
correct (byte) positions and offsets by calling this function.
offset
- additional offset caused by preceding (variable length) instructionsmax_offset
- the maximum offset that may be caused by these instructions
- additional offset caused by possible change of this instruction's length