public class ExpectedStackTypeFinder
extends java.lang.Object
implements proguard.classfile.attribute.visitor.AttributeVisitor, proguard.classfile.instruction.visitor.InstructionVisitor, proguard.classfile.constant.visitor.ConstantVisitor, proguard.classfile.visitor.MemberVisitor
| Modifier and Type | Field and Description |
|---|---|
protected proguard.evaluation.PartialEvaluator |
partialEvaluator |
| Constructor and Description |
|---|
ExpectedStackTypeFinder()
Creates a new ExpectedStackTypeFinder.
|
ExpectedStackTypeFinder(proguard.evaluation.PartialEvaluator partialEvaluator,
boolean runPartialEvaluator)
Creates a new ParameterModificationMarker.
|
ExpectedStackTypeFinder(proguard.evaluation.value.ValueFactory valueFactory)
Creates a new ExpectedStackTypeFinder.
|
ExpectedStackTypeFinder(proguard.evaluation.value.ValueFactory valueFactory,
proguard.evaluation.ReferenceTracingValueFactory tracingValueFactory)
Creates a new ExpectedStackTypeFinder.
|
| Modifier and Type | Method and Description |
|---|---|
int |
creationOffset(int initializationOffset)
Returns the 'new' instruction offset at which the object instance is
created that is initialized at the given offset.
|
proguard.evaluation.value.ReferenceValue |
getExpectedTypeAfter(int instructionOffset)
Returns the reference type that is expected on the stack from the
specified producing instruction, based on all consuming instructions
in the code attribute that was visited most recently.
|
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 |
visitLibraryField(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryField libraryField) |
void |
visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod) |
void |
visitProgramField(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramField programField) |
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) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitvisitAnnotationDefaultAttribute, 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, visitUnknownAttributevisitAnySwitchInstruction, visitBranchInstruction, visitLookUpSwitchInstruction, visitTableSwitchInstruction, visitVariableInstructionvisitAnyRefConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constantpublic ExpectedStackTypeFinder()
public ExpectedStackTypeFinder(proguard.evaluation.value.ValueFactory valueFactory)
public ExpectedStackTypeFinder(proguard.evaluation.value.ValueFactory valueFactory,
proguard.evaluation.ReferenceTracingValueFactory tracingValueFactory)
public ExpectedStackTypeFinder(proguard.evaluation.PartialEvaluator partialEvaluator,
boolean runPartialEvaluator)
public proguard.evaluation.value.ReferenceValue getExpectedTypeAfter(int instructionOffset)
public int creationOffset(int initializationOffset)
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 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 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 visitAnyConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.Constant constant)
visitAnyConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitInvokeDynamicConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.InvokeDynamicConstant invokeDynamicConstant)
visitInvokeDynamicConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitFieldrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.FieldrefConstant fieldrefConstant)
visitFieldrefConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitAnyMethodrefConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.AnyMethodrefConstant anyMethodrefConstant)
visitAnyMethodrefConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitClassConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.ClassConstant classConstant)
visitClassConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic void visitProgramField(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramField programField)
visitProgramField in interface proguard.classfile.visitor.MemberVisitorpublic void visitProgramMethod(proguard.classfile.ProgramClass programClass,
proguard.classfile.ProgramMethod programMethod)
visitProgramMethod in interface proguard.classfile.visitor.MemberVisitorpublic void visitLibraryField(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryField libraryField)
visitLibraryField in interface proguard.classfile.visitor.MemberVisitorpublic void visitLibraryMethod(proguard.classfile.LibraryClass libraryClass,
proguard.classfile.LibraryMethod libraryMethod)
visitLibraryMethod in interface proguard.classfile.visitor.MemberVisitor