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()
|
boolean |
isMatchingAnyWildcards()
|
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()
isMatchingAnyWildcards
public boolean isMatchingAnyWildcards()
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