Class StackSizeComputer
- java.lang.Object
-
- proguard.classfile.attribute.visitor.StackSizeComputer
-
- All Implemented Interfaces:
AttributeVisitor
public class StackSizeComputer extends java.lang.Object implements AttributeVisitor
ThisAttributeVisitor
computes the stack sizes at all instruction offsets of the code attributes that it visits.If only the maximum stack size is required, then prefer
MaxStackSizeComputer
since this class uses more memory because it stores the sizes for each offset.
-
-
Constructor Summary
Constructors Constructor Description StackSizeComputer()
Construct aStackSizeComputer
that keeps track of sizes at each offset.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getMaxStackSize()
Returns the maximum stack size of the most recently visited code attribute.int
getStackSizeAfter(int instructionOffset)
Returns the stack size after the given instruction offset of the most recently visited code attribute.int
getStackSizeBefore(int instructionOffset)
Returns the stack size before the given instruction offset of the most recently visited code attribute.boolean
isReachable(int instructionOffset)
Returns whether the instruction at the given offset is reachable in the most recently visited code attribute.void
visitAnyAttribute(Clazz clazz, Attribute attribute)
Visits any Attribute instance.void
visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods 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, visitUnknownAttribute
-
-
-
-
Constructor Detail
-
StackSizeComputer
public StackSizeComputer()
Construct aStackSizeComputer
that keeps track of sizes at each offset.
-
-
Method Detail
-
isReachable
public boolean isReachable(int instructionOffset)
Returns whether the instruction at the given offset is reachable in the most recently visited code attribute.
-
getStackSizeBefore
public int getStackSizeBefore(int instructionOffset)
Returns the stack size before the given instruction offset of the most recently visited code attribute.
-
getStackSizeAfter
public int getStackSizeAfter(int instructionOffset)
Returns the stack size after the given instruction offset of the most recently visited code attribute.
-
getMaxStackSize
public int getMaxStackSize()
Returns the maximum stack size of the most recently visited code attribute.
-
visitAnyAttribute
public void visitAnyAttribute(Clazz clazz, Attribute attribute)
Description copied from interface:AttributeVisitor
Visits any Attribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyAttribute
in interfaceAttributeVisitor
-
visitCodeAttribute
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
- Specified by:
visitCodeAttribute
in interfaceAttributeVisitor
-
-