Package org.jacoco.core.internal.flow
Class LabelFlowAnalyzer
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- org.jacoco.core.internal.flow.LabelFlowAnalyzer
-
public final class LabelFlowAnalyzer extends org.objectweb.asm.MethodVisitorMethod visitor to collect flow related information about theLabels within a class. It calculates the properties "multitarget" and "successor" that can afterwards be obtained viaLabelInfo.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) booleanfirsttruefor the very first instruction only.(package private) org.objectweb.asm.LabellineStartLabel instance of the last line start.(package private) booleansuccessortrueif the current instruction is a potential successor of the previous instruction.
-
Constructor Summary
Constructors Constructor Description LabelFlowAnalyzer()Create new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidmarkLabels(org.objectweb.asm.tree.MethodNode method)Marks all labels of the method with control flow information.private voidmarkMethodInvocationLine()private static voidsetTargetIfNotDone(org.objectweb.asm.Label label)voidvisitFieldInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)voidvisitIincInsn(int var, int increment)voidvisitInsn(int opcode)voidvisitIntInsn(int opcode, int operand)voidvisitInvokeDynamicInsn(java.lang.String name, java.lang.String desc, org.objectweb.asm.Handle bsm, java.lang.Object... bsmArgs)voidvisitJumpInsn(int opcode, org.objectweb.asm.Label label)voidvisitLabel(org.objectweb.asm.Label label)voidvisitLdcInsn(java.lang.Object cst)voidvisitLineNumber(int line, org.objectweb.asm.Label start)voidvisitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)voidvisitMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)voidvisitMultiANewArrayInsn(java.lang.String desc, int dims)private voidvisitSwitchInsn(org.objectweb.asm.Label dflt, org.objectweb.asm.Label[] labels)voidvisitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)voidvisitTryCatchBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type)voidvisitTypeInsn(int opcode, java.lang.String type)voidvisitVarInsn(int opcode, int var)-
Methods inherited from class org.objectweb.asm.MethodVisitor
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitFrame, visitInsnAnnotation, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotation
-
-
-
-
Field Detail
-
successor
boolean successor
trueif the current instruction is a potential successor of the previous instruction. Accessible for testing.
-
first
boolean first
truefor the very first instruction only. Accessible for testing.
-
lineStart
org.objectweb.asm.Label lineStart
Label instance of the last line start.
-
-
Method Detail
-
markLabels
public static void markLabels(org.objectweb.asm.tree.MethodNode method)
Marks all labels of the method with control flow information.- Parameters:
method- Method to mark labels
-
visitTryCatchBlock
public void visitTryCatchBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type)- Overrides:
visitTryCatchBlockin classorg.objectweb.asm.MethodVisitor
-
visitJumpInsn
public void visitJumpInsn(int opcode, org.objectweb.asm.Label label)- Overrides:
visitJumpInsnin classorg.objectweb.asm.MethodVisitor
-
visitLabel
public void visitLabel(org.objectweb.asm.Label label)
- Overrides:
visitLabelin classorg.objectweb.asm.MethodVisitor
-
visitLineNumber
public void visitLineNumber(int line, org.objectweb.asm.Label start)- Overrides:
visitLineNumberin classorg.objectweb.asm.MethodVisitor
-
visitTableSwitchInsn
public void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)- Overrides:
visitTableSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)- Overrides:
visitLookupSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
visitSwitchInsn
private void visitSwitchInsn(org.objectweb.asm.Label dflt, org.objectweb.asm.Label[] labels)
-
setTargetIfNotDone
private static void setTargetIfNotDone(org.objectweb.asm.Label label)
-
visitInsn
public void visitInsn(int opcode)
- Overrides:
visitInsnin classorg.objectweb.asm.MethodVisitor
-
visitIntInsn
public void visitIntInsn(int opcode, int operand)- Overrides:
visitIntInsnin classorg.objectweb.asm.MethodVisitor
-
visitVarInsn
public void visitVarInsn(int opcode, int var)- Overrides:
visitVarInsnin classorg.objectweb.asm.MethodVisitor
-
visitTypeInsn
public void visitTypeInsn(int opcode, java.lang.String type)- Overrides:
visitTypeInsnin classorg.objectweb.asm.MethodVisitor
-
visitFieldInsn
public void visitFieldInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)- Overrides:
visitFieldInsnin classorg.objectweb.asm.MethodVisitor
-
visitMethodInsn
public void visitMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)- Overrides:
visitMethodInsnin classorg.objectweb.asm.MethodVisitor
-
visitInvokeDynamicInsn
public void visitInvokeDynamicInsn(java.lang.String name, java.lang.String desc, org.objectweb.asm.Handle bsm, java.lang.Object... bsmArgs)- Overrides:
visitInvokeDynamicInsnin classorg.objectweb.asm.MethodVisitor
-
markMethodInvocationLine
private void markMethodInvocationLine()
-
visitLdcInsn
public void visitLdcInsn(java.lang.Object cst)
- Overrides:
visitLdcInsnin classorg.objectweb.asm.MethodVisitor
-
visitIincInsn
public void visitIincInsn(int var, int increment)- Overrides:
visitIincInsnin classorg.objectweb.asm.MethodVisitor
-
visitMultiANewArrayInsn
public void visitMultiANewArrayInsn(java.lang.String desc, int dims)- Overrides:
visitMultiANewArrayInsnin classorg.objectweb.asm.MethodVisitor
-
-