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.LineNumberInfoVisitor
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
allowAccessModification |
protected boolean |
android |
protected proguard.classfile.instruction.visitor.InstructionVisitor |
extraInlinedInvocationVisitor |
protected static int |
MAXIMUM_INLINED_CODE_LENGTH_android |
protected static int |
MAXIMUM_INLINED_CODE_LENGTH_JVM |
protected static int |
MAXIMUM_RESULTING_CODE_LENGTH_JME |
protected static int |
MAXIMUM_RESULTING_CODE_LENGTH_JSE |
protected static int |
MAXIMUM_RESULTING_CODE_LENGTH_JVM |
protected int |
maxResultingCodeLength |
protected boolean |
microEdition |
protected boolean |
usesOptimizationInfo |
| Constructor and Description |
|---|
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.
|
| Modifier and Type | Method and Description |
|---|---|
protected abstract boolean |
shouldInline(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute)
Indicates whether this method should be inlined.
|
void |
visitAnyAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.Attribute attribute) |
void |
visitAnyInstruction(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
int offset,
proguard.classfile.instruction.Instruction instruction) |
void |
visitAnyMember(proguard.classfile.Clazz Clazz,
proguard.classfile.Member member) |
void |
visitAnyMethodrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant) |
void |
visitCodeAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute) |
void |
visitCodeAttribute0(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 |
visitExceptionInfo(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.ExceptionInfo exceptionInfo) |
void |
visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod) |
void |
visitLineNumberInfo(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.LineNumberInfo lineNumberInfo) |
void |
visitLineNumberTableAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.LineNumberTableAttribute lineNumberTableAttribute) |
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, waitvisitAnnotationDefaultAttribute, 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, visitUnknownAttributevisitAnySwitchInstruction, visitBranchInstruction, visitLookUpSwitchInstruction, visitTableSwitchInstructionvisitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitInvokeDynamicConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constantprotected static final int MAXIMUM_INLINED_CODE_LENGTH_JVM
protected static final int MAXIMUM_INLINED_CODE_LENGTH_android
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JSE
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JME
protected static final int MAXIMUM_RESULTING_CODE_LENGTH_JVM
protected final boolean microEdition
protected final boolean android
protected final int maxResultingCodeLength
protected final boolean allowAccessModification
protected final boolean usesOptimizationInfo
protected final proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor
public MethodInliner(boolean microEdition,
boolean android,
boolean allowAccessModification)
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.public MethodInliner(boolean microEdition,
boolean android,
boolean allowAccessModification,
proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)
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.public MethodInliner(boolean microEdition,
boolean android,
int maxResultingCodeLength,
boolean allowAccessModification,
boolean usesOptimizationInfo,
proguard.classfile.instruction.visitor.InstructionVisitor extraInlinedInvocationVisitor)
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.public void visitAnyAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.Attribute attribute)
visitAnyAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic void visitCodeAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute)
visitCodeAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic void visitCodeAttribute0(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute)
public void visitLineNumberTableAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.LineNumberTableAttribute lineNumberTableAttribute)
visitLineNumberTableAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic 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 visitAnyMethodrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)
visitAnyMethodrefConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitAnyMember(proguard.classfile.Clazz Clazz,
proguard.classfile.Member member)
visitAnyMember in interface proguard.classfile.visitor.MemberVisitorpublic void visitProgramMethod(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramMethod programMethod)
visitProgramMethod in interface proguard.classfile.visitor.MemberVisitorpublic void visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod)
visitLibraryMethod in interface proguard.classfile.visitor.MemberVisitorpublic void visitLineNumberInfo(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.LineNumberInfo lineNumberInfo)
visitLineNumberInfo in interface proguard.classfile.attribute.visitor.LineNumberInfoVisitorpublic void visitExceptionInfo(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute,
proguard.classfile.attribute.ExceptionInfo exceptionInfo)
visitExceptionInfo in interface proguard.classfile.attribute.visitor.ExceptionInfoVisitorprotected abstract boolean shouldInline(proguard.classfile.Clazz clazz,
proguard.classfile.Method method,
proguard.classfile.attribute.CodeAttribute codeAttribute)
method - The method that is eligible for inlining.