类 ParameterEscapeMarker
- java.lang.Object
-
- proguard.optimize.info.ParameterEscapeMarker
-
- 所有已实现的接口:
proguard.classfile.attribute.visitor.AttributeVisitor,proguard.classfile.constant.visitor.ConstantVisitor,proguard.classfile.instruction.visitor.InstructionVisitor,proguard.classfile.visitor.MemberVisitor,proguard.classfile.visitor.ParameterVisitor
public class ParameterEscapeMarker extends java.lang.Object implements proguard.classfile.visitor.MemberVisitor, proguard.classfile.attribute.visitor.AttributeVisitor, proguard.classfile.instruction.visitor.InstructionVisitor, proguard.classfile.constant.visitor.ConstantVisitor, proguard.classfile.visitor.ParameterVisitorThis MemberVisitor, AttributeVisitor, and InstructionVisitor marks the reference parameters that are escaping, that are modified, or that are returned. It also marks methods that may modify anything on the heap. The class must be called as a MemberVisitor on all members (to mark the parameters of native methods, without code attributes), then as an AttributeVisitor on their code attributes (so it can run its PartialEvaluator and ReferenceEscapeChecker), and finally as an InstructionVisitor on its instructions (to actually mark the parameters).
-
-
构造器概要
构造器 构造器 说明 ParameterEscapeMarker()Creates a new ParameterEscapeMarker.ParameterEscapeMarker(proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.ParameterEscapeMarker(proguard.evaluation.PartialEvaluator partialEvaluator, boolean runPartialEvaluator, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.ParameterEscapeMarker(proguard.evaluation.PartialEvaluator partialEvaluator, boolean runPartialEvaluator, ReferenceEscapeChecker referenceEscapeChecker, boolean runReferenceEscapeChecker, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.ParameterEscapeMarker(proguard.evaluation.ReferenceTracingValueFactory tracingValueFactory, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.ParameterEscapeMarker(proguard.evaluation.value.ValueFactory valueFactory, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.
-
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 static longgetEscapingParameters(proguard.classfile.Method method)Returns which parameters are escaping from the given method.static longgetModifiedParameters(proguard.classfile.Method method)Returns which parameters are modified by the given method.static longgetReturnedParameters(proguard.classfile.Method method)Returns which parameters are returned from the given method.static booleanisParameterEscaping(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is escaping from the given method.static booleanisParameterModified(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is modified by the given method.static booleanisParameterReturned(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is returned from the given method.static booleanmodifiesAnything(proguard.classfile.Method method)Returns whether anything may be modified by the given method.static booleanreturnsExternalValues(proguard.classfile.Method method)Returns whether the given method returns external reference values (not parameter or new instance).static booleanreturnsNewInstances(proguard.classfile.Method method)Returns whether the given method returns new instances (created inside the method).voidvisitAnyAttribute(proguard.classfile.Clazz clazz, proguard.classfile.attribute.Attribute attribute)voidvisitAnyConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.Constant constant)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)voidvisitClassConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.ClassConstant classConstant)voidvisitCodeAttribute(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)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)voidvisitParameter(proguard.classfile.Clazz clazz, proguard.classfile.Member member, int parameterIndex, int parameterCount, int parameterOffset, int parameterSize, java.lang.String parameterType, proguard.classfile.Clazz referencedClass)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)voidvisitStringConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.StringConstant stringConstant)-
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
从接口继承的方法 proguard.classfile.attribute.visitor.AttributeVisitor
visitAnnotationDefaultAttribute, visitAnyAnnotationsAttribute, visitAnyParameterAnnotationsAttribute, visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitMethodParametersAttribute, visitModuleAttribute, visitModuleMainClassAttribute, visitModulePackagesAttribute, visitNestHostAttribute, visitNestMembersAttribute, visitPermittedSubclassesAttribute, visitRecordAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDebugExtensionAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttribute
-
从接口继承的方法 proguard.classfile.constant.visitor.ConstantVisitor
visitAnyRefConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitUtf8Constant
-
-
-
-
构造器详细资料
-
ParameterEscapeMarker
public ParameterEscapeMarker()
Creates a new ParameterEscapeMarker.
-
ParameterEscapeMarker
public ParameterEscapeMarker(proguard.classfile.visitor.MemberVisitor extraMemberVisitor)
Creates a new ParameterEscapeMarker.
-
ParameterEscapeMarker
public ParameterEscapeMarker(proguard.evaluation.value.ValueFactory valueFactory, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.
-
ParameterEscapeMarker
public ParameterEscapeMarker(proguard.evaluation.ReferenceTracingValueFactory tracingValueFactory, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.
-
ParameterEscapeMarker
public ParameterEscapeMarker(proguard.evaluation.PartialEvaluator partialEvaluator, boolean runPartialEvaluator, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.
-
ParameterEscapeMarker
public ParameterEscapeMarker(proguard.evaluation.PartialEvaluator partialEvaluator, boolean runPartialEvaluator, ReferenceEscapeChecker referenceEscapeChecker, boolean runReferenceEscapeChecker, proguard.classfile.visitor.MemberVisitor extraMemberVisitor)Creates a new ParameterEscapeMarker.
-
-
方法详细资料
-
visitProgramMethod
public void visitProgramMethod(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramMethod programMethod)- 指定者:
visitProgramMethod在接口中proguard.classfile.visitor.MemberVisitor
-
visitAnyAttribute
public void visitAnyAttribute(proguard.classfile.Clazz clazz, proguard.classfile.attribute.Attribute attribute)- 指定者:
visitAnyAttribute在接口中proguard.classfile.attribute.visitor.AttributeVisitor
-
visitCodeAttribute
public void visitCodeAttribute(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)- 指定者:
visitCodeAttribute在接口中proguard.classfile.attribute.visitor.AttributeVisitor
-
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
-
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
-
visitAnyConstant
public void visitAnyConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.Constant constant)- 指定者:
visitAnyConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitStringConstant
public void visitStringConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.StringConstant stringConstant)- 指定者:
visitStringConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitClassConstant
public void visitClassConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.ClassConstant classConstant)- 指定者:
visitClassConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
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
-
visitParameter
public void visitParameter(proguard.classfile.Clazz clazz, proguard.classfile.Member member, int parameterIndex, int parameterCount, int parameterOffset, int parameterSize, java.lang.String parameterType, proguard.classfile.Clazz referencedClass)- 指定者:
visitParameter在接口中proguard.classfile.visitor.ParameterVisitor
-
isParameterEscaping
public static boolean isParameterEscaping(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is escaping from the given method.
-
getEscapingParameters
public static long getEscapingParameters(proguard.classfile.Method method)
Returns which parameters are escaping from the given method.
-
isParameterReturned
public static boolean isParameterReturned(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is returned from the given method.
-
getReturnedParameters
public static long getReturnedParameters(proguard.classfile.Method method)
Returns which parameters are returned from the given method.
-
returnsNewInstances
public static boolean returnsNewInstances(proguard.classfile.Method method)
Returns whether the given method returns new instances (created inside the method).
-
returnsExternalValues
public static boolean returnsExternalValues(proguard.classfile.Method method)
Returns whether the given method returns external reference values (not parameter or new instance).
-
isParameterModified
public static boolean isParameterModified(proguard.classfile.Method method, int parameterIndex)Returns whether the given parameter is modified by the given method.
-
getModifiedParameters
public static long getModifiedParameters(proguard.classfile.Method method)
Returns which parameters are modified by the given method.
-
modifiesAnything
public static boolean modifiesAnything(proguard.classfile.Method method)
Returns whether anything may be modified by the given method. This takes into account the side effects of static initializers, except the static initializer of the invoked method (because it is better checked explicitly as a function of the referencing class).
-
-