proguard.classfile.util
Class InstructionSequenceMatcher
java.lang.Object
proguard.classfile.util.SimplifiedVisitor
proguard.classfile.util.InstructionSequenceMatcher
- All Implemented Interfaces:
- ConstantVisitor, InstructionVisitor
public class InstructionSequenceMatcher
- extends SimplifiedVisitor
- implements InstructionVisitor, ConstantVisitor
This InstructionVisitor checks whether a given pattern instruction sequence
occurs in the instructions that are visited. The arguments of the
instruction sequence can be wildcards that are matched.
|
Field Summary |
static int |
A
|
static int |
B
|
static int |
C
|
static int |
D
|
static int |
X
|
static int |
Y
|
static int |
Z
|
|
Method Summary |
int |
instructionCount()
|
boolean |
isMatching()
|
int |
matchedArgument(int argument)
|
int[] |
matchedArguments(int[] arguments)
|
int |
matchedBranchOffset(int offset,
int branchOffset)
|
int |
matchedConstantIndex(int constantIndex)
|
int |
matchedInstructionOffset(int index)
|
int[] |
matchedJumpOffsets(int offset,
int[] jumpOffsets)
|
void |
reset()
Starts matching from the first instruction again next time. |
void |
visitAnyRefConstant(Clazz clazz,
RefConstant refConstant)
Visits any type of RefConstant of the given class. |
void |
visitBranchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
BranchInstruction branchInstruction)
|
void |
visitClassConstant(Clazz clazz,
ClassConstant classConstant)
|
void |
visitConstantInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
ConstantInstruction constantInstruction)
|
void |
visitDoubleConstant(Clazz clazz,
DoubleConstant doubleConstant)
|
void |
visitFloatConstant(Clazz clazz,
FloatConstant floatConstant)
|
void |
visitIntegerConstant(Clazz clazz,
IntegerConstant integerConstant)
|
void |
visitLongConstant(Clazz clazz,
LongConstant longConstant)
|
void |
visitLookUpSwitchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
LookUpSwitchInstruction lookUpSwitchInstruction)
|
void |
visitNameAndTypeConstant(Clazz clazz,
NameAndTypeConstant nameAndTypeConstant)
|
void |
visitSimpleInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
SimpleInstruction simpleInstruction)
|
void |
visitStringConstant(Clazz clazz,
StringConstant stringConstant)
|
void |
visitTableSwitchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
TableSwitchInstruction tableSwitchInstruction)
|
void |
visitUtf8Constant(Clazz clazz,
Utf8Constant utf8Constant)
|
void |
visitVariableInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
VariableInstruction variableInstruction)
|
| Methods inherited from class proguard.classfile.util.SimplifiedVisitor |
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationDefaultAttribute, visitAnnotationElementValue, visitAnyAnnotationsAttribute, visitAnyAttribute, visitAnyClass, visitAnyConstant, visitAnyElementValue, visitAnyInstruction, visitAnyMember, visitAnyMethodrefConstant, visitAnyParameterAnnotationsAttribute, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFieldrefConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryField, visitLibraryMember, visitLibraryMethod, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongType, visitMethodrefConstant, visitMoreZeroFrame, visitNullType, visitObjectType, visitProgramClass, visitProgramField, visitProgramMember, visitProgramMethod, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSameOneFrame, visitSameZeroFrame, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackDoubleType, visitStackFloatType, visitStackIntegerType, visitStackLongType, visitStackMapAttribute, visitStackMapTableAttribute, visitStackNullType, visitStackObjectType, visitStackTopType, visitStackUninitializedThisType, visitStackUninitializedType, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitTopType, visitUninitializedThisType, visitUninitializedType, visitUnknownAttribute, 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 |
X
public static final int X
- See Also:
- Constant Field Values
Y
public static final int Y
- See Also:
- Constant Field Values
Z
public static final int Z
- See Also:
- Constant Field Values
A
public static final int A
- See Also:
- Constant Field Values
B
public static final int B
- See Also:
- Constant Field Values
C
public static final int C
- See Also:
- Constant Field Values
D
public static final int D
- See Also:
- Constant Field Values
InstructionSequenceMatcher
public InstructionSequenceMatcher(Constant[] patternConstants,
Instruction[] patternInstructions)
- Creates a new InstructionSequenceMatcher.
- Parameters:
patternConstants - any constants referenced by the pattern
instruction.patternInstructions - the pattern instruction sequence.
reset
public void reset()
- Starts matching from the first instruction again next time.
isMatching
public boolean isMatching()
instructionCount
public int instructionCount()
matchedInstructionOffset
public int matchedInstructionOffset(int index)
matchedArgument
public int matchedArgument(int argument)
matchedArguments
public int[] matchedArguments(int[] arguments)
matchedConstantIndex
public int matchedConstantIndex(int constantIndex)
matchedBranchOffset
public int matchedBranchOffset(int offset,
int branchOffset)
matchedJumpOffsets
public int[] matchedJumpOffsets(int offset,
int[] jumpOffsets)
visitSimpleInstruction
public void visitSimpleInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
SimpleInstruction simpleInstruction)
- Specified by:
visitSimpleInstruction in interface InstructionVisitor- Overrides:
visitSimpleInstruction in class SimplifiedVisitor
visitVariableInstruction
public void visitVariableInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
VariableInstruction variableInstruction)
- Specified by:
visitVariableInstruction in interface InstructionVisitor- Overrides:
visitVariableInstruction in class SimplifiedVisitor
visitConstantInstruction
public void visitConstantInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
ConstantInstruction constantInstruction)
- Specified by:
visitConstantInstruction in interface InstructionVisitor- Overrides:
visitConstantInstruction in class SimplifiedVisitor
visitBranchInstruction
public void visitBranchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
BranchInstruction branchInstruction)
- Specified by:
visitBranchInstruction in interface InstructionVisitor- Overrides:
visitBranchInstruction in class SimplifiedVisitor
visitTableSwitchInstruction
public void visitTableSwitchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
TableSwitchInstruction tableSwitchInstruction)
- Specified by:
visitTableSwitchInstruction in interface InstructionVisitor- Overrides:
visitTableSwitchInstruction in class SimplifiedVisitor
visitLookUpSwitchInstruction
public void visitLookUpSwitchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
LookUpSwitchInstruction lookUpSwitchInstruction)
- Specified by:
visitLookUpSwitchInstruction in interface InstructionVisitor- Overrides:
visitLookUpSwitchInstruction in class SimplifiedVisitor
visitIntegerConstant
public void visitIntegerConstant(Clazz clazz,
IntegerConstant integerConstant)
- Specified by:
visitIntegerConstant in interface ConstantVisitor- Overrides:
visitIntegerConstant in class SimplifiedVisitor
visitLongConstant
public void visitLongConstant(Clazz clazz,
LongConstant longConstant)
- Specified by:
visitLongConstant in interface ConstantVisitor- Overrides:
visitLongConstant in class SimplifiedVisitor
visitFloatConstant
public void visitFloatConstant(Clazz clazz,
FloatConstant floatConstant)
- Specified by:
visitFloatConstant in interface ConstantVisitor- Overrides:
visitFloatConstant in class SimplifiedVisitor
visitDoubleConstant
public void visitDoubleConstant(Clazz clazz,
DoubleConstant doubleConstant)
- Specified by:
visitDoubleConstant in interface ConstantVisitor- Overrides:
visitDoubleConstant in class SimplifiedVisitor
visitStringConstant
public void visitStringConstant(Clazz clazz,
StringConstant stringConstant)
- Specified by:
visitStringConstant in interface ConstantVisitor- Overrides:
visitStringConstant in class SimplifiedVisitor
visitUtf8Constant
public void visitUtf8Constant(Clazz clazz,
Utf8Constant utf8Constant)
- Specified by:
visitUtf8Constant in interface ConstantVisitor- Overrides:
visitUtf8Constant in class SimplifiedVisitor
visitAnyRefConstant
public void visitAnyRefConstant(Clazz clazz,
RefConstant refConstant)
- Description copied from class:
SimplifiedVisitor
- Visits any type of RefConstant of the given class.
- Overrides:
visitAnyRefConstant in class SimplifiedVisitor
visitClassConstant
public void visitClassConstant(Clazz clazz,
ClassConstant classConstant)
- Specified by:
visitClassConstant in interface ConstantVisitor- Overrides:
visitClassConstant in class SimplifiedVisitor
visitNameAndTypeConstant
public void visitNameAndTypeConstant(Clazz clazz,
NameAndTypeConstant nameAndTypeConstant)
- Specified by:
visitNameAndTypeConstant in interface ConstantVisitor- Overrides:
visitNameAndTypeConstant in class SimplifiedVisitor