org.jacoco.core.internal.analysis
Class MethodAnalyzer

java.lang.Object
  extended by org.objectweb.asm.MethodVisitor
      extended by org.jacoco.core.internal.flow.MethodProbesVisitor
          extended by org.jacoco.core.internal.analysis.MethodAnalyzer

public class MethodAnalyzer
extends MethodProbesVisitor

A MethodProbesVisitor that builds the Instructions of a method to calculate the detailed execution status.


Field Summary
 
Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv
 
Method Summary
 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 as visitX() events.
 void visitFieldInsn(int opcode, String owner, String name, String desc)
           
 void visitIincInsn(int var, int increment)
           
 void visitInsn(int opcode)
           
 void visitInsnWithProbe(int opcode, int probeId)
          Visits a zero operand instruction with a probe.
 void visitIntInsn(int opcode, int operand)
           
 void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs)
           
 void visitJumpInsn(int opcode, org.objectweb.asm.Label label)
           
 void visitJumpInsnWithProbe(int opcode, org.objectweb.asm.Label label, int probeId, IFrame frame)
          Visits a jump instruction.
 void visitLabel(org.objectweb.asm.Label label)
           
 void visitLdcInsn(Object cst)
           
 void visitLineNumber(int line, org.objectweb.asm.Label start)
           
 void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)
           
 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 visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
           
 void visitMultiANewArrayInsn(String desc, int dims)
           
 void visitProbe(int probeId)
          Visits an unconditional probe that should be inserted at the current position.
 void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)
           
 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.
 void visitTypeInsn(int opcode, String type)
           
 void visitVarInsn(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, visitTryCatchBlock, visitTypeAnnotation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

accept

public void accept(org.objectweb.asm.tree.MethodNode methodNode,
                   org.objectweb.asm.MethodVisitor methodVisitor)
Description copied from class: MethodProbesVisitor
This method can be overwritten to hook into the process of emitting the instructions of this method as visitX() events.

Overrides:
accept in class MethodProbesVisitor
Parameters:
methodNode - the content to emit
methodVisitor - A visitor to emit the content to. Note that this is not necessarily this visitor instance but some wrapper which calculates the probes.

visitLabel

public void visitLabel(org.objectweb.asm.Label label)
Overrides:
visitLabel in class org.objectweb.asm.MethodVisitor

visitLineNumber

public void visitLineNumber(int line,
                            org.objectweb.asm.Label start)
Overrides:
visitLineNumber in class org.objectweb.asm.MethodVisitor

visitInsn

public void visitInsn(int opcode)
Overrides:
visitInsn in class org.objectweb.asm.MethodVisitor

visitIntInsn

public void visitIntInsn(int opcode,
                         int operand)
Overrides:
visitIntInsn in class org.objectweb.asm.MethodVisitor

visitVarInsn

public void visitVarInsn(int opcode,
                         int var)
Overrides:
visitVarInsn in class org.objectweb.asm.MethodVisitor

visitTypeInsn

public void visitTypeInsn(int opcode,
                          String type)
Overrides:
visitTypeInsn in class org.objectweb.asm.MethodVisitor

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Overrides:
visitFieldInsn in class org.objectweb.asm.MethodVisitor

visitMethodInsn

public void visitMethodInsn(int opcode,
                            String owner,
                            String name,
                            String desc,
                            boolean itf)
Overrides:
visitMethodInsn in class org.objectweb.asm.MethodVisitor

visitInvokeDynamicInsn

public void visitInvokeDynamicInsn(String name,
                                   String desc,
                                   org.objectweb.asm.Handle bsm,
                                   Object... bsmArgs)
Overrides:
visitInvokeDynamicInsn in class org.objectweb.asm.MethodVisitor

visitJumpInsn

public void visitJumpInsn(int opcode,
                          org.objectweb.asm.Label label)
Overrides:
visitJumpInsn in class org.objectweb.asm.MethodVisitor

visitLdcInsn

public void visitLdcInsn(Object cst)
Overrides:
visitLdcInsn in class org.objectweb.asm.MethodVisitor

visitIincInsn

public void visitIincInsn(int var,
                          int increment)
Overrides:
visitIincInsn in class org.objectweb.asm.MethodVisitor

visitTableSwitchInsn

public void visitTableSwitchInsn(int min,
                                 int max,
                                 org.objectweb.asm.Label dflt,
                                 org.objectweb.asm.Label... labels)
Overrides:
visitTableSwitchInsn in class org.objectweb.asm.MethodVisitor

visitLookupSwitchInsn

public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt,
                                  int[] keys,
                                  org.objectweb.asm.Label[] labels)
Overrides:
visitLookupSwitchInsn in class org.objectweb.asm.MethodVisitor

visitMultiANewArrayInsn

public void visitMultiANewArrayInsn(String desc,
                                    int dims)
Overrides:
visitMultiANewArrayInsn in class org.objectweb.asm.MethodVisitor

visitProbe

public void visitProbe(int probeId)
Description copied from class: MethodProbesVisitor
Visits an unconditional probe that should be inserted at the current position.

Overrides:
visitProbe in class MethodProbesVisitor
Parameters:
probeId - id of the probe to insert

visitJumpInsnWithProbe

public void visitJumpInsnWithProbe(int opcode,
                                   org.objectweb.asm.Label label,
                                   int probeId,
                                   IFrame frame)
Description copied from class: MethodProbesVisitor
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.

Overrides:
visitJumpInsnWithProbe in class MethodProbesVisitor
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 probe
frame - 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)
Description copied from class: MethodProbesVisitor
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.

Overrides:
visitInsnWithProbe in class MethodProbesVisitor
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)
Description copied from class: MethodProbesVisitor
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 with LabelInfo.getProbeId(Label).

Overrides:
visitTableSwitchInsnWithProbes in class MethodProbesVisitor
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 the min + 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)
Description copied from class: MethodProbesVisitor
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 with LabelInfo.getProbeId(Label).

Overrides:
visitLookupSwitchInsnWithProbes in class MethodProbesVisitor
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 the keys[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[])


Copyright © 2009–2024 Mountainminds GmbH & Co. KG. All rights reserved.