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 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.