Package proguard.classfile.editor
Class InstructionSequencesReplacer
java.lang.Object
proguard.classfile.instruction.visitor.MultiInstructionVisitor
proguard.classfile.editor.InstructionSequencesReplacer
- All Implemented Interfaces:
InstructionVisitor
public class InstructionSequencesReplacer
extends MultiInstructionVisitor
implements InstructionVisitor
This
InstructionVisitor replaces multiple instruction sequences at once.
The replacement sequences are optional, defaulting to the empty sequence, to delete the matched pattern sequences.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionInstructionSequencesReplacer(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. -
Method Summary
Methods inherited from class proguard.classfile.instruction.visitor.MultiInstructionVisitor
addInstructionVisitor, visitBranchInstruction, visitConstantInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction, visitVariableInstructionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface proguard.classfile.instruction.visitor.InstructionVisitor
visitAnyInstruction, visitAnySwitchInstruction, visitBranchInstruction, visitConstantInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction, visitVariableInstruction
-
Constructor Details
-
InstructionSequencesReplacer
public InstructionSequencesReplacer(Constant[] constants, Instruction[][][] instructionSequences, BranchTargetFinder branchTargetFinder, CodeAttributeEditor codeAttributeEditor) Creates a new InstructionSequencesReplacer.- Parameters:
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.
-
InstructionSequencesReplacer
public InstructionSequencesReplacer(Constant[] constants, Instruction[][][] instructionSequences, BranchTargetFinder branchTargetFinder, CodeAttributeEditor codeAttributeEditor, InstructionVisitor extraInstructionVisitor) Creates a new InstructionSequenceReplacer.- Parameters:
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.
-