public class InstructionSequencesReplacer extends MultiInstructionVisitor implements InstructionVisitor
InstructionVisitor
replaces multiple instruction sequences at once.
The replacement sequences are optional, defaulting to the empty sequence,
to delete the matched pattern sequences.InstructionSequenceReplacer
Constructor and Description |
---|
InstructionSequencesReplacer(Constant[] constants,
Instruction[][][] instructionSequences,
BranchTargetFinder branchTargetFinder,
CodeAttributeEditor codeAttributeEditor)
Creates a new InstructionSequencesReplacer.
|
InstructionSequencesReplacer(Constant[] constants,
Instruction[][][] instructionSequences,
BranchTargetFinder branchTargetFinder,
CodeAttributeEditor codeAttributeEditor,
InstructionVisitor extraInstructionVisitor)
Creates a new InstructionSequenceReplacer.
|
addInstructionVisitor, visitBranchInstruction, visitConstantInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction, visitVariableInstruction
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
visitAnyInstruction, visitAnySwitchInstruction, visitBranchInstruction, visitConstantInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction, visitVariableInstruction
public InstructionSequencesReplacer(Constant[] constants, Instruction[][][] instructionSequences, BranchTargetFinder branchTargetFinder, CodeAttributeEditor codeAttributeEditor)
constants
- any constants referenced by the pattern
instructions and replacement instructions.instructionSequences
- the instruction sequences to be replaced,
with subsequently the sequence pair index,
the patten/replacement index (0 or 1),
and the instruction index in the sequence.branchTargetFinder
- a branch target finder that has been
initialized to indicate branch targets
in the visited code.codeAttributeEditor
- a code editor that can be used for
accumulating changes to the code.public InstructionSequencesReplacer(Constant[] constants, Instruction[][][] instructionSequences, BranchTargetFinder branchTargetFinder, CodeAttributeEditor codeAttributeEditor, InstructionVisitor extraInstructionVisitor)
constants
- any constants referenced by the pattern
instructions and replacement instructions.instructionSequences
- the instruction sequences to be replaced,
with subsequently the sequence pair index,
the patten/replacement index (0 or 1),
and the instruction index in the sequence.branchTargetFinder
- a branch target finder that has been
initialized to indicate branch targets
in the visited code.codeAttributeEditor
- a code editor that can be used for
accumulating changes to the code.extraInstructionVisitor
- an optional extra visitor for all deleted
load instructions.