Package proguard.evaluation
Class LivenessAnalyzer
java.lang.Object
proguard.evaluation.LivenessAnalyzer
- All Implemented Interfaces:
AttributeVisitor,ExceptionInfoVisitor,InstructionVisitor
public class LivenessAnalyzer
extends Object
implements AttributeVisitor, InstructionVisitor, ExceptionInfoVisitor
This
AttributeVisitor analyzes the liveness of the variables in the code attributes that
it visits, based on partial evaluation.-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new LivenessAnalyzer.LivenessAnalyzer(PartialEvaluator partialEvaluator, boolean runPartialEvaluator, InitializationFinder initializationFinder, boolean runInitializationFinder) Creates a new LivenessAnalyzer that will use the given partial evaluator and initialization finder. -
Method Summary
Modifier and TypeMethodDescriptionbooleanisAliveAfter(int instructionOffset, int variableIndex) Returns whether the specified variable is alive after the instruction at the given offset.booleanisAliveBefore(int instructionOffset, int variableIndex) Returns whether the specified variable is alive before the instruction at the given offset.booleanisCategory2(int instructionOffset, int variableIndex) Returns whether the specified variable takes up two entries after the instruction at the given offset.booleanisTraced(int instructionOffset) Returns whether the instruction at the given offset has ever been executed during the partial evaluation.voidsetAliveAfter(int instructionOffset, int variableIndex, boolean alive) Sets whether the specified variable is alive after the instruction at the given offset.voidsetAliveBefore(int instructionOffset, int variableIndex, boolean alive) Sets whether the specified variable is alive before the instruction at the given offset.voidsetCategory2(int instructionOffset, int variableIndex, boolean category2) Sets whether the specified variable takes up two entries after the instruction at the given offset.voidvisitAnyAttribute(Clazz clazz, Attribute attribute) Visits any Attribute instance.voidvisitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) Visits any Instruction instance.voidvisitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) voidvisitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) voidvisitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo) voidvisitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface 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, visitUnknownAttributeMethods inherited from interface proguard.classfile.instruction.visitor.InstructionVisitor
visitAnySwitchInstruction, visitBranchInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction
-
Constructor Details
-
LivenessAnalyzer
public LivenessAnalyzer()Creates a new LivenessAnalyzer. -
LivenessAnalyzer
public LivenessAnalyzer(PartialEvaluator partialEvaluator, boolean runPartialEvaluator, InitializationFinder initializationFinder, boolean runInitializationFinder) Creates a new LivenessAnalyzer that will use the given partial evaluator and initialization finder.- Parameters:
partialEvaluator- the evaluator to be used for the analysis.runPartialEvaluator- specifies whether to run this evaluator on every code attribute that is visited.initializationFinder- the initialization finder to be used for the analysis.runInitializationFinder- specifies whether to run this initialization finder on every code attribute that is visited.
-
-
Method Details
-
isTraced
public boolean isTraced(int instructionOffset) Returns whether the instruction at the given offset has ever been executed during the partial evaluation. -
isAliveBefore
public boolean isAliveBefore(int instructionOffset, int variableIndex) Returns whether the specified variable is alive before the instruction at the given offset. -
setAliveBefore
public void setAliveBefore(int instructionOffset, int variableIndex, boolean alive) Sets whether the specified variable is alive before the instruction at the given offset. -
isAliveAfter
public boolean isAliveAfter(int instructionOffset, int variableIndex) Returns whether the specified variable is alive after the instruction at the given offset. -
setAliveAfter
public void setAliveAfter(int instructionOffset, int variableIndex, boolean alive) Sets whether the specified variable is alive after the instruction at the given offset. -
isCategory2
public boolean isCategory2(int instructionOffset, int variableIndex) Returns whether the specified variable takes up two entries after the instruction at the given offset. -
setCategory2
public void setCategory2(int instructionOffset, int variableIndex, boolean category2) Sets whether the specified variable takes up two entries after the instruction at the given offset. -
visitAnyAttribute
Description copied from interface:AttributeVisitorVisits any Attribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyAttributein interfaceAttributeVisitor
-
visitCodeAttribute
- Specified by:
visitCodeAttributein interfaceAttributeVisitor
-
visitAnyInstruction
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) Description copied from interface:InstructionVisitorVisits any Instruction instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyInstructionin interfaceInstructionVisitor
-
visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction) - Specified by:
visitVariableInstructionin interfaceInstructionVisitor
-
visitConstantInstruction
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) - Specified by:
visitConstantInstructionin interfaceInstructionVisitor
-
visitExceptionInfo
public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo) - Specified by:
visitExceptionInfoin interfaceExceptionInfoVisitor
-