Class JvmIntraproceduralCfaFillerAllInstructionVisitor
- java.lang.Object
-
- proguard.analysis.cpa.jvm.cfa.visitors.JvmIntraproceduralCfaFillerAllInstructionVisitor
-
- All Implemented Interfaces:
AttributeVisitor
public class JvmIntraproceduralCfaFillerAllInstructionVisitor extends java.lang.Object implements AttributeVisitor
ThisAttributeVisitor
visits theCodeAttribute
of aMethod
and performs two different tasks:- for each exception handler (i.e. the beginning of a catch or finally block that can handle several
ExceptionInfo
) in the attribute exception table creates aJvmCatchCfaNode
. Consecutive nodes may be linked with a falseJvmAssumeExceptionCfaEdge
(that indicates that the exception was not caught by a catch statement and is then passed to the following one) if the following catch block covers at least all the instruction offsets of the previous one (this includes also nested try/catch). If the exception is not caught by the last block of a chain an additional a falseJvmAssumeExceptionCfaEdge
to the exception exit block is added. This is not necessary for finally blocks (i.e. with exception type = 0) since they always re-throw the original exception once they're done, which will then be added as an edge to the first catch block that handles its offset byJvmIntraproceduralCfaFillerAllInstructionVisitor.JvmIntraproceduralCfaFillerVisitor
.- sets the parameters for the current method for a
JvmIntraproceduralCfaFillerAllInstructionVisitor.JvmIntraproceduralCfaFillerVisitor
and then acts similarly to anAllInstructionVisitor
. The visitor visits all the instructions of theCodeAttribute
and creates the CFA for the current method.
-
-
Constructor Summary
Constructors Constructor Description JvmIntraproceduralCfaFillerAllInstructionVisitor(JvmCfa cfa)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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
-
JvmIntraproceduralCfaFillerAllInstructionVisitor
public JvmIntraproceduralCfaFillerAllInstructionVisitor(JvmCfa cfa)
-
-
Method Detail
-
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
-
-