类 MethodInliner
- java.lang.Object
-
- proguard.optimize.peephole.MethodInliner
-
- 所有已实现的接口:
proguard.classfile.attribute.visitor.AttributeVisitor,proguard.classfile.attribute.visitor.ExceptionInfoVisitor,proguard.classfile.attribute.visitor.LineNumberInfoVisitor,proguard.classfile.constant.visitor.ConstantVisitor,proguard.classfile.instruction.visitor.InstructionVisitor,proguard.classfile.visitor.MemberVisitor
public abstract class MethodInliner extends java.lang.Object implements proguard.classfile.attribute.visitor.AttributeVisitor, proguard.classfile.instruction.visitor.InstructionVisitor, proguard.classfile.constant.visitor.ConstantVisitor, proguard.classfile.visitor.MemberVisitor, proguard.classfile.attribute.visitor.ExceptionInfoVisitor, proguard.classfile.attribute.visitor.LineNumberInfoVisitorThis AttributeVisitor is an abstract class representing a visitor considering to inline each method that it visits in its usage sites. The behavior of whether a class is considered for inlining is controlled by overriding the shouldInline method. There are some additional technical constraints imposed on whether the method is actually inlined (see visitProgramMethod).
-
-
字段概要
字段 修饰符和类型 字段 说明 protected booleanallowAccessModificationprotected booleanandroidprotected proguard.classfile.instruction.visitor.InstructionVisitorextraInlinedInvocationVisitorstatic intINLINED_METHOD_END_LINE_NUMBERstatic intINLINED_METHOD_START_LINE_NUMBERprotected static intMAXIMUM_INLINED_CODE_LENGTH_androidprotected static intMAXIMUM_INLINED_CODE_LENGTH_JVMprotected static intMAXIMUM_RESULTING_CODE_LENGTH_JMEprotected static intMAXIMUM_RESULTING_CODE_LENGTH_JSEprotected static intMAXIMUM_RESULTING_CODE_LENGTH_JVMprotected intmaxResultingCodeLengthprotected booleanmicroEditionprotected booleanusesOptimizationInfo
-
构造器概要
构造器 构造器 说明 MethodInliner(boolean microEdition, boolean android, boolean allowAccessModification)Creates a new MethodInliner.MethodInliner(boolean microEdition, boolean android, boolean allowAccessModification, proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)Creates a new MethodInliner.MethodInliner(boolean microEdition, boolean android, int maxResultingCodeLength, boolean allowAccessModification, boolean usesOptimizationInfo, proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)Creates a new MethodInliner.
-
方法概要
所有方法 实例方法 抽象方法 具体方法 修饰符和类型 方法 说明 protected abstract booleanshouldInline(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)Indicates whether this method should be inlined.voidvisitAnyAttribute(proguard.classfile.Clazz clazz, proguard.classfile.attribute.Attribute attribute)voidvisitAnyInstruction(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, int offset, proguard.classfile.instruction.Instruction instruction)voidvisitAnyMember(proguard.classfile.Clazz Clazz, proguard.classfile.Member member)voidvisitAnyMethodrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)voidvisitCodeAttribute(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)voidvisitCodeAttribute0(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)voidvisitExceptionInfo(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.ExceptionInfo exceptionInfo)voidvisitLibraryMethod(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryMethod libraryMethod)voidvisitLineNumberInfo(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.LineNumberInfo lineNumberInfo)voidvisitLineNumberTableAttribute(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.LineNumberTableAttribute lineNumberTableAttribute)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.attribute.visitor.AttributeVisitor
visitAnnotationDefaultAttribute, visitAnyAnnotationsAttribute, visitAnyParameterAnnotationsAttribute, visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, 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
visitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitInvokeDynamicConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constant
-
-
-
-
字段详细资料
-
MAXIMUM_INLINED_CODE_LENGTH_JVM
protected static final int MAXIMUM_INLINED_CODE_LENGTH_JVM
-
MAXIMUM_INLINED_CODE_LENGTH_android
protected static final int MAXIMUM_INLINED_CODE_LENGTH_android
-
MAXIMUM_RESULTING_CODE_LENGTH_JSE
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JSE
-
MAXIMUM_RESULTING_CODE_LENGTH_JME
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JME
-
MAXIMUM_RESULTING_CODE_LENGTH_JVM
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JVM
- 另请参阅:
- 常量字段值
-
INLINED_METHOD_END_LINE_NUMBER
public static final int INLINED_METHOD_END_LINE_NUMBER
- 另请参阅:
- 常量字段值
-
INLINED_METHOD_START_LINE_NUMBER
public static final int INLINED_METHOD_START_LINE_NUMBER
- 另请参阅:
- 常量字段值
-
microEdition
protected final boolean microEdition
-
android
protected final boolean android
-
maxResultingCodeLength
protected final int maxResultingCodeLength
-
allowAccessModification
protected final boolean allowAccessModification
-
usesOptimizationInfo
protected final boolean usesOptimizationInfo
-
extraInlinedInvocationVisitor
protected final proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor
-
-
构造器详细资料
-
MethodInliner
public MethodInliner(boolean microEdition, boolean android, boolean allowAccessModification)Creates a new MethodInliner.- 参数:
microEdition- Indicates whether the resulting code is targeted at Java Micro Edition.android- Indicates whether the resulting code is targeted at the Dalvik VM.allowAccessModification- Indicates whether the access modifiers of classes and class members can be changed in order to inline methods.
-
MethodInliner
public MethodInliner(boolean microEdition, boolean android, boolean allowAccessModification, proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)Creates a new MethodInliner.- 参数:
microEdition- Indicates whether the resulting code is targeted at Java Micro Edition.android- Indicates whether the resulting code is targeted at the Dalvik VM.allowAccessModification- Indicates whether the access modifiers of classes and class members can be changed in order to inline methods.extraInlinedInvocationVisitor- An optional extra visitor for all inlined invocation instructions.
-
MethodInliner
public MethodInliner(boolean microEdition, boolean android, int maxResultingCodeLength, boolean allowAccessModification, boolean usesOptimizationInfo, proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)Creates a new MethodInliner.- 参数:
microEdition- Indicates whether the resulting code is targeted at Java Micro Edition.android- Indicates whether the resulting code is targeted at the Dalvik VM.maxResultingCodeLength- Configures the inliner with a max resulting code length.allowAccessModification- Indicates whether the access modifiers of classes and class members can be changed in order to inline methods.usesOptimizationInfo- Indicates whether this inliner needs to perform checks that require optimization info.extraInlinedInvocationVisitor- An optional extra visitor for all inlined invocation instructions.
-
-
方法详细资料
-
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
-
visitCodeAttribute0
public void visitCodeAttribute0(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)
-
visitLineNumberTableAttribute
public void visitLineNumberTableAttribute(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.LineNumberTableAttribute lineNumberTableAttribute)- 指定者:
visitLineNumberTableAttribute在接口中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
-
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
-
visitAnyMethodrefConstant
public void visitAnyMethodrefConstant(proguard.classfile.Clazz clazz, proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)- 指定者:
visitAnyMethodrefConstant在接口中proguard.classfile.constant.visitor.ConstantVisitor
-
visitAnyMember
public void visitAnyMember(proguard.classfile.Clazz Clazz, proguard.classfile.Member member)- 指定者:
visitAnyMember在接口中proguard.classfile.visitor.MemberVisitor
-
visitProgramMethod
public void visitProgramMethod(proguard.classfile.ProgramClass programClass, proguard.classfile.ProgramMethod programMethod)- 指定者:
visitProgramMethod在接口中proguard.classfile.visitor.MemberVisitor
-
visitLibraryMethod
public void visitLibraryMethod(proguard.classfile.LibraryClass libraryClass, proguard.classfile.LibraryMethod libraryMethod)- 指定者:
visitLibraryMethod在接口中proguard.classfile.visitor.MemberVisitor
-
visitLineNumberInfo
public void visitLineNumberInfo(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.LineNumberInfo lineNumberInfo)- 指定者:
visitLineNumberInfo在接口中proguard.classfile.attribute.visitor.LineNumberInfoVisitor
-
visitExceptionInfo
public void visitExceptionInfo(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute, proguard.classfile.attribute.ExceptionInfo exceptionInfo)- 指定者:
visitExceptionInfo在接口中proguard.classfile.attribute.visitor.ExceptionInfoVisitor
-
shouldInline
protected abstract boolean shouldInline(proguard.classfile.Clazz clazz, proguard.classfile.Method method, proguard.classfile.attribute.CodeAttribute codeAttribute)Indicates whether this method should be inlined. Subclasses can overwrite this method to change which methods are inlined. Note that the method will always still first be tested on whether they can technically be inlined (see `visitProgramMethod`) and only then will this method be called to decide whether to actually inline or not.- 参数:
method- The method that is eligible for inlining.
-
-