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. For this two local variables will be reserved immediately after the method parameters - the probe array will be stored in the second one, and the first one is reserved for the case when the last local variable of method parameters is overridden in the method body to store a value of type long or double which occupy two variables.
-
-
Field Summary
Fields Modifier and Type Field Description private intaccessorStackSizeMaximum stack usage of the code to access the probe array.private IProbeArrayStrategyarrayStrategyprivate org.objectweb.asm.LabelbeginLabelLabel for the new beginning of the methodprivate 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
getDelegate, 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.
-
beginLabel
private final org.objectweb.asm.Label beginLabel
Label for the new beginning of the method
-
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
-
-