Package org.apache.bcel.generic
Class BranchInstruction
- java.lang.Object
-
- org.apache.bcel.generic.Instruction
-
- org.apache.bcel.generic.BranchInstruction
-
- All Implemented Interfaces:
Cloneable
,InstructionTargeter
- Direct Known Subclasses:
GotoInstruction
,IfInstruction
,JsrInstruction
,Select
public abstract class BranchInstruction extends Instruction implements InstructionTargeter
Abstract super class for branching instructions like GOTO, IFEQ, etc.. Branch instructions may have a variable length, namely GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.- See Also:
InstructionList
-
-
Field Summary
Fields Modifier and Type Field Description protected int
index
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected int
position
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected InstructionHandle
target
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter-
Fields inherited from class org.apache.bcel.generic.Instruction
length, opcode
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BranchInstruction(short opcode, InstructionHandle target)
Common super constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
containsTarget(InstructionHandle ih)
Checks whether this targeter targets the specified instruction handle.void
dump(DataOutputStream out)
Dump instruction as byte code to stream out.int
getIndex()
protected int
getPosition()
InstructionHandle
getTarget()
protected int
getTargetOffset()
protected int
getTargetOffset(InstructionHandle _target)
protected void
initFromFile(ByteSequence bytes, boolean wide)
Read needed data (e.g.protected void
setIndex(int index)
protected void
setPosition(int position)
void
setTarget(InstructionHandle target)
Set branch targetString
toString(boolean verbose)
Long output format: <position in byte code> <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"<target instruction>">" "@"<branch target offset>protected int
updatePosition(int offset, int max_offset)
Called by InstructionList.setPositions when setting the position for every instruction.void
updateTarget(InstructionHandle old_ih, InstructionHandle new_ih)
Replaces the target of this targeter from this old handle to the new handle.-
Methods inherited from class org.apache.bcel.generic.Instruction
accept, consumeStack, copy, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, produceStack, readInstruction, setComparator, toString, toString
-
-
-
-
Field Detail
-
index
@Deprecated protected int index
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
target
@Deprecated protected InstructionHandle target
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
position
@Deprecated protected int position
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
-
Constructor Detail
-
BranchInstruction
protected BranchInstruction(short opcode, InstructionHandle target)
Common super constructor- Parameters:
opcode
- Instruction opcodetarget
- instruction to branch to
-
-
Method Detail
-
dump
public void dump(DataOutputStream out) throws IOException
Dump instruction as byte code to stream out.- Overrides:
dump
in classInstruction
- Parameters:
out
- Output stream- Throws:
IOException
-
getTargetOffset
protected int getTargetOffset(InstructionHandle _target)
- Parameters:
_target
- branch target- Returns:
- the offset to `target' relative to this instruction
-
getTargetOffset
protected int getTargetOffset()
- Returns:
- the offset to this instruction's target
-
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.- Parameters:
offset
- additional offset caused by preceding (variable length) instructionsmax_offset
- the maximum offset that may be caused by these instructions- Returns:
- additional offset caused by possible change of this instruction's length
-
toString
public String toString(boolean verbose)
Long output format: <position in byte code> <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"<target instruction>">" "@"<branch target offset>- Overrides:
toString
in classInstruction
- Parameters:
verbose
- long/short format switch- Returns:
- mnemonic for instruction
-
initFromFile
protected void initFromFile(ByteSequence bytes, boolean wide) throws IOException
Read needed data (e.g. index) from file. Conversion to a InstructionHandle is done in InstructionList(byte[]).- Overrides:
initFromFile
in classInstruction
- Parameters:
bytes
- input streamwide
- wide prefix?- Throws:
IOException
- may be thrown if the implementation needs to read data from the file- See Also:
InstructionList
-
getIndex
public final int getIndex()
- Returns:
- target offset in byte code
-
getTarget
public InstructionHandle getTarget()
- Returns:
- target of branch instruction
-
setTarget
public void setTarget(InstructionHandle target)
Set branch target- Parameters:
target
- branch target
-
updateTarget
public void updateTarget(InstructionHandle old_ih, InstructionHandle new_ih)
Description copied from interface:InstructionTargeter
Replaces the target of this targeter from this old handle to the new handle.- Specified by:
updateTarget
in interfaceInstructionTargeter
- Parameters:
old_ih
- old targetnew_ih
- new target
-
containsTarget
public boolean containsTarget(InstructionHandle ih)
Description copied from interface:InstructionTargeter
Checks whether this targeter targets the specified instruction handle.- Specified by:
containsTarget
in interfaceInstructionTargeter
- Returns:
- true, if ih is target of this instruction
-
getPosition
protected int getPosition()
- Returns:
- the position
- Since:
- 6.0
-
setPosition
protected void setPosition(int position)
- Parameters:
position
- the position to set- Since:
- 6.0
-
setIndex
protected void setIndex(int index)
- Parameters:
index
- the index to set- Since:
- 6.0
-
-