Package org.jacoco.core.internal.instr
Class ProbeInserter
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- org.jacoco.core.internal.instr.ProbeInserter
-
- All Implemented Interfaces:
IProbeInserter
class ProbeInserter extends org.objectweb.asm.MethodVisitor implements IProbeInserter
Internal utility to add probes into the control flow of a method. The code for a probe simply sets a certain slot of a boolean array to true. In addition the probe array has to be retrieved at the beginning of the method and stored in a local variable.
-
-
Field Summary
Fields Modifier and Type Field Description private intaccessorStackSizeMaximum stack usage of the code to access the probe array.private IProbeArrayStrategyarrayStrategyprivate booleanclinittrueif method is a class or interface initialization method.private intvariablePosition of the inserted variable.
-
Constructor Summary
Constructors Constructor Description ProbeInserter(int access, java.lang.String name, java.lang.String desc, org.objectweb.asm.MethodVisitor mv, IProbeArrayStrategy arrayStrategy)Creates a newProbeInserter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidinsertProbe(int id)Inserts the probe with the given id.private intmap(int var)voidvisitCode()voidvisitFrame(int type, int nLocal, java.lang.Object[] local, int nStack, java.lang.Object[] stack)voidvisitIincInsn(int var, int increment)voidvisitLocalVariable(java.lang.String name, java.lang.String desc, java.lang.String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int index)org.objectweb.asm.AnnotationVisitorvisitLocalVariableAnnotation(int typeRef, org.objectweb.asm.TypePath typePath, org.objectweb.asm.Label[] start, org.objectweb.asm.Label[] end, int[] index, java.lang.String descriptor, boolean visible)voidvisitMaxs(int maxStack, int maxLocals)voidvisitVarInsn(int opcode, int var)-
Methods inherited from class org.objectweb.asm.MethodVisitor
visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitEnd, visitFieldInsn, visitInsn, visitInsnAnnotation, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLookupSwitchInsn, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitParameter, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation, visitTypeInsn
-
-
-
-
Field Detail
-
arrayStrategy
private final IProbeArrayStrategy arrayStrategy
-
clinit
private final boolean clinit
trueif method is a class or interface initialization method.
-
variable
private final int variable
Position of the inserted variable.
-
accessorStackSize
private int accessorStackSize
Maximum stack usage of the code to access the probe array.
-
-
Constructor Detail
-
ProbeInserter
ProbeInserter(int access, java.lang.String name, java.lang.String desc, org.objectweb.asm.MethodVisitor mv, IProbeArrayStrategy arrayStrategy)Creates a newProbeInserter.- Parameters:
access- access flags of the adapted methodname- the method's namedesc- the method's descriptormv- the method visitor to which this adapter delegates callsarrayStrategy- callback to create the code that retrieves the reference to the probe array
-
-
Method Detail
-
insertProbe
public void insertProbe(int id)
Description copied from interface:IProbeInserterInserts the probe with the given id.- Specified by:
insertProbein interfaceIProbeInserter- Parameters:
id- id of the probe to insert
-
visitCode
public void visitCode()
- Overrides:
visitCodein classorg.objectweb.asm.MethodVisitor
-
visitVarInsn
public final void visitVarInsn(int opcode, int var)- Overrides:
visitVarInsnin classorg.objectweb.asm.MethodVisitor
-
visitIincInsn
public final void visitIincInsn(int var, int increment)- Overrides:
visitIincInsnin classorg.objectweb.asm.MethodVisitor
-
visitLocalVariable
public final void visitLocalVariable(java.lang.String name, java.lang.String desc, java.lang.String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int index)- Overrides:
visitLocalVariablein classorg.objectweb.asm.MethodVisitor
-
visitLocalVariableAnnotation
public org.objectweb.asm.AnnotationVisitor visitLocalVariableAnnotation(int typeRef, org.objectweb.asm.TypePath typePath, org.objectweb.asm.Label[] start, org.objectweb.asm.Label[] end, int[] index, java.lang.String descriptor, boolean visible)- Overrides:
visitLocalVariableAnnotationin classorg.objectweb.asm.MethodVisitor
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals)- Overrides:
visitMaxsin classorg.objectweb.asm.MethodVisitor
-
map
private int map(int var)
-
visitFrame
public final void visitFrame(int type, int nLocal, java.lang.Object[] local, int nStack, java.lang.Object[] stack)- Overrides:
visitFramein classorg.objectweb.asm.MethodVisitor
-
-