Class MethodAnalyzer

    • Field Summary

      • Fields inherited from class org.objectweb.asm.MethodVisitor

        api, mv
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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, java.lang.String owner, java.lang.String name, java.lang.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​(java.lang.String name, java.lang.String desc, org.objectweb.asm.Handle bsm, java.lang.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​(java.lang.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, java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)  
      void visitMultiANewArrayInsn​(java.lang.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, java.lang.String type)  
      void visitVarInsn​(int opcode, int var)  
      • Methods inherited from class org.objectweb.asm.MethodVisitor

        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,
                                  java.lang.String type)
        Overrides:
        visitTypeInsn in class org.objectweb.asm.MethodVisitor
      • visitFieldInsn

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

        public void visitMethodInsn​(int opcode,
                                    java.lang.String owner,
                                    java.lang.String name,
                                    java.lang.String desc,
                                    boolean itf)
        Overrides:
        visitMethodInsn in class org.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:
        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​(java.lang.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​(java.lang.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[])