类 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.ParameterVisitor
    This 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).
    另请参阅:
    SideEffectClassChecker, SideEffectClassMarker
    • 构造器概要

      构造器 
      构造器 说明
      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 long getEscapingParameters​(proguard.classfile.Method method)
      Returns which parameters are escaping from the given method.
      static long getModifiedParameters​(proguard.classfile.Method method)
      Returns which parameters are modified by the given method.
      static long getReturnedParameters​(proguard.classfile.Method method)
      Returns which parameters are returned from the given method.
      static boolean isParameterEscaping​(proguard.classfile.Method method, int parameterIndex)
      Returns whether the given parameter is escaping from the given method.
      static boolean isParameterModified​(proguard.classfile.Method method, int parameterIndex)
      Returns whether the given parameter is modified by the given method.
      static boolean isParameterReturned​(proguard.classfile.Method method, int parameterIndex)
      Returns whether the given parameter is returned from the given method.
      static boolean modifiesAnything​(proguard.classfile.Method method)
      Returns whether anything may be modified by the given method.
      static boolean returnsExternalValues​(proguard.classfile.Method method)
      Returns whether the given method returns external reference values (not parameter or new instance).
      static boolean returnsNewInstances​(proguard.classfile.Method method)
      Returns whether the given method returns new instances (created inside the method).
      void visitAnyAttribute​(proguard.classfile.Clazz clazz, proguard.classfile.attribute.Attribute attribute)  
      void visitAnyConstant​(proguard.classfile.Clazz clazz, proguard.classfile.constant.Constant constant)  
      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 visitClassConstant​(proguard.classfile.Clazz clazz, proguard.classfile.constant.ClassConstant classConstant)  
      void visitCodeAttribute​(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)  
      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 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)  
      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 visitStringConstant​(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
      • 从接口继承的方法 proguard.classfile.instruction.visitor.InstructionVisitor

        visitAnySwitchInstruction, visitBranchInstruction, visitLookUpSwitchInstruction, visitTableSwitchInstruction, visitVariableInstruction
      • 从接口继承的方法 proguard.classfile.visitor.MemberVisitor

        visitAnyMember, visitLibraryField, visitLibraryMember, visitLibraryMethod, visitProgramField, visitProgramMember
    • 构造器详细资料

      • 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).
        另请参阅:
        SideEffectClassChecker.mayHaveSideEffects(Clazz, Clazz, Member)