public class SideEffectInstructionChecker
extends java.lang.Object
implements proguard.classfile.instruction.visitor.InstructionVisitor, proguard.classfile.constant.visitor.ConstantVisitor, proguard.classfile.visitor.MemberVisitor
| Constructor and Description |
|---|
SideEffectInstructionChecker(boolean includeReturnInstructions,
boolean includeArrayStoreInstructions,
boolean includeBuiltInExceptions)
Creates a new SideEffectInstructionChecker
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
hasSideEffects(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.Instruction instruction) |
void |
visitAnyInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.Instruction instruction) |
void |
visitAnyMethodrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant) |
void |
visitBranchInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.BranchInstruction branchInstruction) |
void |
visitConstantInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.ConstantInstruction constantInstruction) |
void |
visitFieldrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.FieldrefConstant fieldrefConstant) |
void |
visitInvokeDynamicConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.InvokeDynamicConstant invokeDynamicConstant) |
void |
visitLibraryField(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryField libraryField) |
void |
visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod) |
void |
visitProgramField(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramField programField) |
void |
visitProgramMethod(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramMethod programMethod) |
void |
visitSimpleInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.SimpleInstruction simpleInstruction) |
void |
visitVariableInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.VariableInstruction variableInstruction) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitvisitAnySwitchInstruction, visitLookUpSwitchInstruction, visitTableSwitchInstructionvisitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constantpublic SideEffectInstructionChecker(boolean includeReturnInstructions,
boolean includeArrayStoreInstructions,
boolean includeBuiltInExceptions)
includeReturnInstructions - specifies whether return
instructions count as side
effects.includeArrayStoreInstructions - specifies whether storing values
in arrays counts as side effects.includeBuiltInExceptions - specifies whether built-in exceptions
count as side effects (e.g. calling getfield
on null object reference)public boolean hasSideEffects(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.Instruction instruction)
public void visitAnyInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.Instruction instruction)
visitAnyInstruction in interface proguard.classfile.instruction.visitor.InstructionVisitorpublic void visitSimpleInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.SimpleInstruction simpleInstruction)
visitSimpleInstruction in interface proguard.classfile.instruction.visitor.InstructionVisitorpublic void visitVariableInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.VariableInstruction variableInstruction)
visitVariableInstruction in interface proguard.classfile.instruction.visitor.InstructionVisitorpublic void visitConstantInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.ConstantInstruction constantInstruction)
visitConstantInstruction in interface proguard.classfile.instruction.visitor.InstructionVisitorpublic void visitBranchInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.BranchInstruction branchInstruction)
visitBranchInstruction in interface proguard.classfile.instruction.visitor.InstructionVisitorpublic void visitInvokeDynamicConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.InvokeDynamicConstant invokeDynamicConstant)
visitInvokeDynamicConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitFieldrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.FieldrefConstant fieldrefConstant)
visitFieldrefConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitAnyMethodrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)
visitAnyMethodrefConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitProgramField(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramField programField)
visitProgramField in interface proguard.classfile.visitor.MemberVisitorpublic void visitProgramMethod(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramMethod programMethod)
visitProgramMethod in interface proguard.classfile.visitor.MemberVisitorpublic void visitLibraryField(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryField libraryField)
visitLibraryField in interface proguard.classfile.visitor.MemberVisitorpublic void visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod)
visitLibraryMethod in interface proguard.classfile.visitor.MemberVisitor