类 SideEffectInstructionChecker
- java.lang.Object
-
- proguard.optimize.info.SideEffectInstructionChecker
-
- 所有已实现的接口:
proguard.classfile.constant.visitor.ConstantVisitor,proguard.classfile.instruction.visitor.InstructionVisitor,proguard.classfile.visitor.MemberVisitor
public class SideEffectInstructionChecker extends java.lang.Object implements proguard.classfile.instruction.visitor.InstructionVisitor, proguard.classfile.constant.visitor.ConstantVisitor, proguard.classfile.visitor.MemberVisitorThis class can tell whether an instruction has any side effects. This includes invoking methods that have side effects, writing to fields that are not write-only, and throwing exceptions. Return instructions and array store instructions can be included or not. With the environment setting "optimize.conservatively", it also accounts for all possible NullPointerExceptions, ArrayIndexOutOfBoundExceptions, etc., which are typically accidental, not intentional.
-
-
构造器概要
构造器 构造器 说明 SideEffectInstructionChecker(boolean includeReturnInstructions, boolean includeArrayStoreInstructions, boolean includeBuiltInExceptions)Creates a new SideEffectInstructionChecker
-
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 booleanhasSideEffects(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.Instruction instruction)voidvisitAnyInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.Instruction instruction)voidvisitAnyMethodrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)voidvisitBranchInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.BranchInstruction branchInstruction)voidvisitConstantInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.ConstantInstruction constantInstruction)voidvisitFieldrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.FieldrefConstant fieldrefConstant)voidvisitInvokeDynamicConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.InvokeDynamicConstant invokeDynamicConstant)voidvisitLibraryField(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryField libraryField)voidvisitLibraryMethod(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryMethod libraryMethod)voidvisitProgramField(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramField programField)voidvisitProgramMethod(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramMethod programMethod)voidvisitSimpleInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.SimpleInstruction simpleInstruction)voidvisitVariableInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.VariableInstruction variableInstruction)-
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
从接口继承的方法 proguard.classfile.constant.visitor.ConstantVisitor
visitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constant
-
-
-
-
构造器详细资料
-
SideEffectInstructionChecker
public SideEffectInstructionChecker(boolean includeReturnInstructions, boolean includeArrayStoreInstructions, boolean includeBuiltInExceptions)Creates a new SideEffectInstructionChecker- 参数:
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)
-
-
方法详细资料
-
hasSideEffects
public boolean hasSideEffects(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.Instruction instruction)
-
visitAnyInstruction
public void visitAnyInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.Instruction instruction)- 指定者:
visitAnyInstruction在接口中proguard.classfile.instruction.visitor.InstructionVisitor
-
visitSimpleInstruction
public void visitSimpleInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.SimpleInstruction simpleInstruction)- 指定者:
visitSimpleInstruction在接口中proguard.classfile.instruction.visitor.InstructionVisitor
-
visitVariableInstruction
public void visitVariableInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.VariableInstruction variableInstruction)- 指定者:
visitVariableInstruction在接口中proguard.classfile.instruction.visitor.InstructionVisitor
-
visitConstantInstruction
public void visitConstantInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.ConstantInstruction constantInstruction)- 指定者:
visitConstantInstruction在接口中proguard.classfile.instruction.visitor.InstructionVisitor
-
visitBranchInstruction
public void visitBranchInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.BranchInstruction branchInstruction)- 指定者:
visitBranchInstruction在接口中proguard.classfile.instruction.visitor.InstructionVisitor
-
visitInvokeDynamicConstant
public void visitInvokeDynamicConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.InvokeDynamicConstant invokeDynamicConstant)- 指定者:
visitInvokeDynamicConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitFieldrefConstant
public void visitFieldrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.FieldrefConstant fieldrefConstant)- 指定者:
visitFieldrefConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitAnyMethodrefConstant
public void visitAnyMethodrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)- 指定者:
visitAnyMethodrefConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitProgramField
public void visitProgramField(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramField programField)- 指定者:
visitProgramField在接口中proguard.classfile.visitor.MemberVisitor
-
visitProgramMethod
public void visitProgramMethod(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramMethod programMethod)- 指定者:
visitProgramMethod在接口中proguard.classfile.visitor.MemberVisitor
-
visitLibraryField
public void visitLibraryField(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryField libraryField)- 指定者:
visitLibraryField在接口中proguard.classfile.visitor.MemberVisitor
-
visitLibraryMethod
public void visitLibraryMethod(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryMethod libraryMethod)- 指定者:
visitLibraryMethod在接口中proguard.classfile.visitor.MemberVisitor
-
-