Package org.jacoco.core.internal.flow
Class MethodProbesVisitor
java.lang.Object
org.objectweb.asm.MethodVisitor
org.jacoco.core.internal.flow.MethodProbesVisitor
- Direct Known Subclasses:
MethodAnalyzer
,MethodInstrumenter
public abstract class MethodProbesVisitor
extends org.objectweb.asm.MethodVisitor
A
MethodVisitor
with additional methods to get probe insertion
information.-
Field Summary
Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv
-
Constructor Summary
ConstructorsConstructorDescriptionNew visitor instance without delegate visitor.MethodProbesVisitor
(org.objectweb.asm.MethodVisitor mv) New visitor instance that delegates to the given visitor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(org.objectweb.asm.tree.MethodNode methodNode, org.objectweb.asm.MethodVisitor methodVisitor) This method can be overwritten to hook into the process of emitting the instructions of this method asvisitX()
events.void
visitInsnWithProbe
(int opcode, int probeId) Visits a zero operand instruction with a probe.void
visitJumpInsnWithProbe
(int opcode, org.objectweb.asm.Label label, int probeId, IFrame frame) Visits a jump instruction.void
visitLookupSwitchInsnWithProbes
(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels, IFrame frame) Visits a LOOKUPSWITCH instruction with optional probes for each target label.void
visitProbe
(int probeId) Visits an unconditional probe that should be inserted at the current position.void
visitTableSwitchInsnWithProbes
(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label[] labels, IFrame frame) Visits a TABLESWITCH instruction with optional probes for each target label.Methods inherited from class org.objectweb.asm.MethodVisitor
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitFieldInsn, visitFrame, visitIincInsn, visitInsn, visitInsnAnnotation, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLocalVariableAnnotation, visitLookupSwitchInsn, visitMaxs, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitParameter, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation, visitTypeInsn, visitVarInsn
-
Constructor Details
-
MethodProbesVisitor
public MethodProbesVisitor()New visitor instance without delegate visitor. -
MethodProbesVisitor
public MethodProbesVisitor(org.objectweb.asm.MethodVisitor mv) New visitor instance that delegates to the given visitor.- Parameters:
mv
- optional next visitor in chain
-
-
Method Details
-
visitProbe
public void visitProbe(int probeId) Visits an unconditional probe that should be inserted at the current position.- Parameters:
probeId
- id of the probe to insert
-
visitJumpInsnWithProbe
public void visitJumpInsnWithProbe(int opcode, org.objectweb.asm.Label label, int probeId, IFrame frame) Visits a jump instruction. A probe with the given id should be inserted in a way that it is executed only when the jump to the given label is executed.- Parameters:
opcode
- the opcode of the type instruction to be visited. This opcode is either IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, GOTO, IFNULL or IFNONNULL.label
- the operand of the instruction to be visited. This operand is a label that designates the instruction to which the jump instruction may jump.probeId
- id of the probeframe
- stackmap frame status after the execution of the jump instruction. The instance is only valid with the call of this method.- See Also:
-
MethodVisitor.visitJumpInsn(int, Label)
-
visitInsnWithProbe
public void visitInsnWithProbe(int opcode, int probeId) Visits a zero operand instruction with a probe. This event is used only for instructions that terminate the method. Therefore the probe must be inserted before the actual instruction.- Parameters:
opcode
- the opcode of the instruction to be visited. This opcode is either IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN or ATHROW.probeId
- id of the probe- See Also:
-
MethodVisitor.visitInsn(int)
-
visitTableSwitchInsnWithProbes
public void visitTableSwitchInsnWithProbes(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label[] labels, IFrame frame) Visits a TABLESWITCH instruction with optional probes for each target label. Implementations can be optimized based on the fact that the same target labels will always have the same probe id within a call to this method. The probe id for each label can be obtained withLabelInfo.getProbeId(Label)
.- Parameters:
min
- the minimum key value.max
- the maximum key value.dflt
- beginning of the default handler block.labels
- beginnings of the handler blocks.labels[i]
is the beginning of the handler block for themin + i
key.frame
- stackmap frame status after the execution of the switch instruction. The instance is only valid with the call of this method.- See Also:
-
MethodVisitor.visitTableSwitchInsn(int, int, Label, Label[])
-
visitLookupSwitchInsnWithProbes
public void visitLookupSwitchInsnWithProbes(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels, IFrame frame) Visits a LOOKUPSWITCH instruction with optional probes for each target label. Implementations can be optimized based on the fact that the same target labels will always have the same probe id within a call to this method. The probe id for each label can be obtained withLabelInfo.getProbeId(Label)
.- Parameters:
dflt
- beginning of the default handler block.keys
- the values of the keys.labels
- beginnings of the handler blocks.labels[i]
is the beginning of the handler block for thekeys[i]
key.frame
- stackmap frame status after the execution of the switch instruction. The instance is only valid with the call of this method.- See Also:
-
MethodVisitor.visitLookupSwitchInsn(Label, int[], Label[])
-
accept
public void accept(org.objectweb.asm.tree.MethodNode methodNode, org.objectweb.asm.MethodVisitor methodVisitor) This method can be overwritten to hook into the process of emitting the instructions of this method asvisitX()
events.- Parameters:
methodNode
- the content to emitmethodVisitor
- A visitor to emit the content to. Note that this is not necessarily this visitor instance but some wrapper which calculates the probes.
-