proguard.optimize.info
Class SideEffectInstructionChecker
java.lang.Object
proguard.classfile.util.SimplifiedVisitor
proguard.optimize.info.SideEffectInstructionChecker
- All Implemented Interfaces:
- ConstantVisitor, InstructionVisitor, MemberVisitor
public class SideEffectInstructionChecker
- extends SimplifiedVisitor
- implements InstructionVisitor, ConstantVisitor, MemberVisitor
This class can tell whether an instruction has any side effects. Return
instructions can be included or not.
- See Also:
ReadWriteFieldMarker,
NoSideEffectMethodMarker,
SideEffectMethodMarker
|
Method Summary |
boolean |
hasSideEffects(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
Instruction instruction)
|
void |
visitAnyInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
Instruction instruction)
Visits any type of Instruction. |
void |
visitAnyMethodrefConstant(Clazz clazz,
RefConstant refConstant)
Visits any type of method RefConstant of the given class. |
void |
visitBranchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
BranchInstruction branchInstruction)
|
void |
visitConstantInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
ConstantInstruction constantInstruction)
|
void |
visitFieldrefConstant(Clazz clazz,
FieldrefConstant fieldrefConstant)
|
void |
visitLibraryField(LibraryClass libraryClass,
LibraryField libraryField)
|
void |
visitLibraryMethod(LibraryClass libraryClass,
LibraryMethod libraryMethod)
|
void |
visitProgramField(ProgramClass programClass,
ProgramField programField)
|
void |
visitProgramMethod(ProgramClass programClass,
ProgramMethod programMethod)
|
void |
visitSimpleInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
SimpleInstruction simpleInstruction)
|
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, visitAnyMember, visitAnyParameterAnnotationsAttribute, visitAnyRefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitClassConstant, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryMember, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramClass, visitProgramMember, 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, visitStringConstant, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitTableSwitchInstruction, visitTopType, visitUninitializedThisType, visitUninitializedType, visitUnknownAttribute, visitUtf8Constant, 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 |
SideEffectInstructionChecker
public SideEffectInstructionChecker(boolean includeReturnInstructions)
hasSideEffects
public boolean hasSideEffects(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
Instruction instruction)
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
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
visitFieldrefConstant
public void visitFieldrefConstant(Clazz clazz,
FieldrefConstant fieldrefConstant)
- Specified by:
visitFieldrefConstant in interface ConstantVisitor- Overrides:
visitFieldrefConstant in class SimplifiedVisitor
visitAnyMethodrefConstant
public void visitAnyMethodrefConstant(Clazz clazz,
RefConstant refConstant)
- Description copied from class:
SimplifiedVisitor
- Visits any type of method RefConstant of the given class.
- Overrides:
visitAnyMethodrefConstant in class SimplifiedVisitor
visitProgramField
public void visitProgramField(ProgramClass programClass,
ProgramField programField)
- Specified by:
visitProgramField in interface MemberVisitor- Overrides:
visitProgramField in class SimplifiedVisitor
visitProgramMethod
public void visitProgramMethod(ProgramClass programClass,
ProgramMethod programMethod)
- Specified by:
visitProgramMethod in interface MemberVisitor- Overrides:
visitProgramMethod in class SimplifiedVisitor
visitLibraryField
public void visitLibraryField(LibraryClass libraryClass,
LibraryField libraryField)
- Specified by:
visitLibraryField in interface MemberVisitor- Overrides:
visitLibraryField in class SimplifiedVisitor
visitLibraryMethod
public void visitLibraryMethod(LibraryClass libraryClass,
LibraryMethod libraryMethod)
- Specified by:
visitLibraryMethod in interface MemberVisitor- Overrides:
visitLibraryMethod in class SimplifiedVisitor