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
FieldsModifier and TypeFieldDescriptionprotected intDeprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected intDeprecated.(since 6.0) will be made private; do not access directly, use getter/setterprotected InstructionHandleDeprecated.(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
ConstructorsModifierConstructorDescriptionprotectedBranchInstruction(short opcode, InstructionHandle target) Common super constructor -
Method Summary
Modifier and TypeMethodDescriptionbooleanChecks whether this targeter targets the specified instruction handle.voiddump(DataOutputStream out) Dump instruction as byte code to stream out.final intgetIndex()protected intprotected intprotected intgetTargetOffset(InstructionHandle _target) protected voidinitFromFile(ByteSequence bytes, boolean wide) Read needed data (e.g.protected voidsetIndex(int index) protected voidsetPosition(int position) voidsetTarget(InstructionHandle target) Set 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 intupdatePosition(int offset, int max_offset) Called by InstructionList.setPositions when setting the position for every instruction.voidupdateTarget(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 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
-
dump
Dump instruction as byte code to stream out.- Overrides:
dumpin classInstruction- Parameters:
out- Output stream- Throws:
IOException
-
getTargetOffset
- 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
Long output format: <position in byte code> <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"<target instruction>">" "@"<branch target offset>- Overrides:
toStringin classInstruction- Parameters:
verbose- long/short format switch- Returns:
- mnemonic for instruction
-
initFromFile
Read needed data (e.g. index) from file. Conversion to a InstructionHandle is done in InstructionList(byte[]).- Overrides:
initFromFilein classInstruction- Parameters:
bytes- input streamwide- wide prefix?- Throws:
IOException- may be thrown if the implementation needs to read data from the file- See Also:
-
getIndex
public final int getIndex()- Returns:
- target offset in byte code
-
getTarget
- Returns:
- target of branch instruction
-
setTarget
Set branch target- Parameters:
target- branch target
-
updateTarget
Description copied from interface:InstructionTargeterReplaces the target of this targeter from this old handle to the new handle.- Specified by:
updateTargetin interfaceInstructionTargeter- Parameters:
old_ih- old targetnew_ih- new target
-
containsTarget
Description copied from interface:InstructionTargeterChecks whether this targeter targets the specified instruction handle.- Specified by:
containsTargetin 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
-