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
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:
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected int
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected InstructionHandle
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setterFields inherited from class org.apache.bcel.generic.Instruction
length, opcode
-
Constructor Summary
ModifierConstructorDescriptionprotected
BranchInstruction
(short opcode, InstructionHandle target) Common super constructor -
Method Summary
Modifier and TypeMethodDescriptionboolean
Tests whether this targeter targets the specified instruction handle.void
dump
(DataOutputStream out) Dump instruction as byte code to stream out.final int
getIndex()
protected int
protected int
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) Sets branch targettoString
(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 maxOffset) Called by InstructionList.setPositions when setting the position for every instruction.void
updateTarget
(InstructionHandle oldIh, InstructionHandle newIh) 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 Details
-
index
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter -
target
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter -
position
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
-
Constructor Details
-
BranchInstruction
Common super constructor- Parameters:
opcode
- Instruction opcodetarget
- instruction to branch to
-
-
Method Details
-
containsTarget
Description copied from interface:InstructionTargeter
Tests whether this targeter targets the specified instruction handle.- Specified by:
containsTarget
in interfaceInstructionTargeter
- Parameters:
ih
- the instruction handle to test.- Returns:
- true, if ih is target of this instruction
-
dump
Dump instruction as byte code to stream out.- Overrides:
dump
in classInstruction
- Parameters:
out
- Output stream- Throws:
IOException
- Thrown when an I/O exception of some sort has occurred.
-
getIndex
- Returns:
- target offset in byte code
-
getPosition
- Returns:
- the position
- Since:
- 6.0
-
getTarget
- Returns:
- target of branch instruction
-
getTargetOffset
- Returns:
- the offset to this instruction's target
-
getTargetOffset
- Parameters:
target
- branch target- Returns:
- the offset to 'target' relative to this instruction
-
initFromFile
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:
-
setIndex
- Parameters:
index
- the index to set- Since:
- 6.0
-
setPosition
- Parameters:
position
- the position to set- Since:
- 6.0
-
setTarget
Sets branch target- Parameters:
target
- branch target
-
toString
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
-
updatePosition
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) instructionsmaxOffset
- the maximum offset that may be caused by these instructions- Returns:
- additional offset caused by possible change of this instruction's length
-
updateTarget
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:
oldIh
- old targetnewIh
- new target
-