Class ClassFieldProbeArrayStrategy

  • All Implemented Interfaces:
    IProbeArrayStrategy

    class ClassFieldProbeArrayStrategy
    extends java.lang.Object
    implements IProbeArrayStrategy
    The strategy for regular classes adds a static field to hold the probe array and a static initialization method requesting the probe array from the runtime.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addMembers​(org.objectweb.asm.ClassVisitor cv, int probeCount)
      Adds additional class members required by this strategy.
      private void createDataField​(org.objectweb.asm.ClassVisitor cv)  
      private void createInitMethod​(org.objectweb.asm.ClassVisitor cv, int probeCount)  
      private int genInitializeDataField​(org.objectweb.asm.MethodVisitor mv, int probeCount)
      Generates the byte code to initialize the static coverage data field within this class.
      int storeInstance​(org.objectweb.asm.MethodVisitor mv, boolean clinit, int variable)
      Creates code that stores the probe array instance in the given variable.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • FRAME_STACK_ARRZ

        private static final java.lang.Object[] FRAME_STACK_ARRZ
        Frame stack with a single boolean array.
      • FRAME_LOCALS_EMPTY

        private static final java.lang.Object[] FRAME_LOCALS_EMPTY
        Empty frame locals.
      • className

        private final java.lang.String className
      • classId

        private final long classId
      • withFrames

        private final boolean withFrames
    • Constructor Detail

      • ClassFieldProbeArrayStrategy

        ClassFieldProbeArrayStrategy​(java.lang.String className,
                                     long classId,
                                     boolean withFrames,
                                     IExecutionDataAccessorGenerator accessorGenerator)
    • Method Detail

      • storeInstance

        public int storeInstance​(org.objectweb.asm.MethodVisitor mv,
                                 boolean clinit,
                                 int variable)
        Description copied from interface: IProbeArrayStrategy
        Creates code that stores the probe array instance in the given variable.
        Specified by:
        storeInstance in interface IProbeArrayStrategy
        Parameters:
        mv - visitor to create code
        clinit - true in case of <clinit> method
        variable - variable index to store probe array to
        Returns:
        maximum stack size required by the generated code
      • addMembers

        public void addMembers​(org.objectweb.asm.ClassVisitor cv,
                               int probeCount)
        Description copied from interface: IProbeArrayStrategy
        Adds additional class members required by this strategy. This method is called after all original members of the class has been processed.
        Specified by:
        addMembers in interface IProbeArrayStrategy
        Parameters:
        cv - visitor to create fields and classes
        probeCount - total number of probes required for this class
      • createDataField

        private void createDataField​(org.objectweb.asm.ClassVisitor cv)
      • createInitMethod

        private void createInitMethod​(org.objectweb.asm.ClassVisitor cv,
                                      int probeCount)
      • genInitializeDataField

        private int genInitializeDataField​(org.objectweb.asm.MethodVisitor mv,
                                           int probeCount)
        Generates the byte code to initialize the static coverage data field within this class. The code will push the [Z data array on the operand stack.
        Parameters:
        mv - generator to emit code to