proguard.optimize.peephole
Class InstructionSequenceReplacer
java.lang.Object
proguard.classfile.util.SimplifiedVisitor
proguard.optimize.peephole.InstructionSequenceReplacer
- All Implemented Interfaces:
- ConstantVisitor, InstructionVisitor
public class InstructionSequenceReplacer
- extends SimplifiedVisitor
- implements InstructionVisitor, ConstantVisitor
This InstructionVisitor replaces a given pattern instruction sequence by
another given replacement instruction sequence. The arguments of the
instruction sequences can be wildcards that are matched and replaced.
- See Also:
InstructionSequenceMatcher
| Methods inherited from class proguard.classfile.util.SimplifiedVisitor |
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationDefaultAttribute, visitAnnotationElementValue, visitAnyAnnotationsAttribute, visitAnyAttribute, visitAnyClass, visitAnyConstant, visitAnyElementValue, visitAnyMember, visitAnyMethodrefConstant, visitAnyParameterAnnotationsAttribute, visitAnyRefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitBranchInstruction, visitClassConstant, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantInstruction, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFieldrefConstant, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryField, visitLibraryMember, visitLibraryMethod, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramClass, visitProgramField, visitProgramMember, visitProgramMethod, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSameOneFrame, visitSameZeroFrame, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSimpleInstruction, visitSourceDirAttribute, visitSourceFileAttribute, visitStackDoubleType, visitStackFloatType, visitStackIntegerType, visitStackLongType, visitStackMapAttribute, visitStackMapTableAttribute, visitStackNullType, visitStackObjectType, visitStackTopType, visitStackUninitializedThisType, visitStackUninitializedType, visitStringConstant, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitTableSwitchInstruction, visitTopType, visitUninitializedThisType, visitUninitializedType, visitUnknownAttribute, visitUtf8Constant, visitVariableInstruction, visitVariablesDoubleType, visitVariablesFloatType, visitVariablesIntegerType, visitVariablesLongType, visitVariablesNullType, visitVariablesObjectType, visitVariablesTopType, visitVariablesUninitializedThisType, visitVariablesUninitializedType |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface proguard.classfile.constant.visitor.ConstantVisitor |
visitClassConstant, visitDoubleConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodrefConstant, visitNameAndTypeConstant, visitStringConstant, visitUtf8Constant |
InstructionSequenceReplacer
public InstructionSequenceReplacer(Constant[] patternConstants,
Instruction[] patternInstructions,
Instruction[] replacementInstructions,
BranchTargetFinder branchTargetFinder,
CodeAttributeEditor codeAttributeEditor)
- Creates a new InstructionSequenceReplacer.
- Parameters:
patternConstants - any constants referenced by the pattern
instruction.patternInstructions - the pattern instruction sequence.replacementInstructions - the replacement instruction 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.
InstructionSequenceReplacer
public InstructionSequenceReplacer(Constant[] patternConstants,
Instruction[] patternInstructions,
Instruction[] replacementInstructions,
BranchTargetFinder branchTargetFinder,
CodeAttributeEditor codeAttributeEditor,
InstructionVisitor extraInstructionVisitor)
- Creates a new InstructionSequenceReplacer.
- Parameters:
patternConstants - any constants referenced by the pattern
instruction.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.
visitAnyInstruction
public void visitAnyInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
Instruction instruction)
- Description copied from class:
SimplifiedVisitor
- Visits any type of Instruction.
- Overrides:
visitAnyInstruction in class SimplifiedVisitor