Class ExecutionData


  • public final class ExecutionData
    extends java.lang.Object
    Execution data for a single Java class. While instances are immutable care has to be taken about the probe data array of type boolean[] which can be modified.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private long id  
      private java.lang.String name  
      private boolean[] probes  
    • Constructor Summary

      Constructors 
      Constructor Description
      ExecutionData​(long id, java.lang.String name, boolean[] probes)
      Creates a new ExecutionData object with the given probe data.
      ExecutionData​(long id, java.lang.String name, int probeCount)
      Creates a new ExecutionData object with the given probe data length.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void assertCompatibility​(long id, java.lang.String name, int probecount)
      Asserts that this execution data object is compatible with the given parameters.
      long getId()
      Return the unique identifier for this class.
      java.lang.String getName()
      The VM name of the class.
      boolean[] getProbes()
      Returns the execution data probes.
      boolean hasHits()
      Checks whether any probe has been hit.
      void merge​(ExecutionData other)
      Merges the given execution data into the probe data of this object.
      void merge​(ExecutionData other, boolean flag)
      Merges the given execution data into the probe data of this object.
      void reset()
      Sets all probes to false.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

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

      • id

        private final long id
      • name

        private final java.lang.String name
      • probes

        private final boolean[] probes
    • Constructor Detail

      • ExecutionData

        public ExecutionData​(long id,
                             java.lang.String name,
                             boolean[] probes)
        Creates a new ExecutionData object with the given probe data.
        Parameters:
        id - class identifier
        name - VM name
        probes - probe data
      • ExecutionData

        public ExecutionData​(long id,
                             java.lang.String name,
                             int probeCount)
        Creates a new ExecutionData object with the given probe data length. All probes are set to false.
        Parameters:
        id - class identifier
        name - VM name
        probeCount - probe count
    • Method Detail

      • getId

        public long getId()
        Return the unique identifier for this class. The identifier is the CRC64 checksum of the raw class file definition.
        Returns:
        class identifier
      • getName

        public java.lang.String getName()
        The VM name of the class.
        Returns:
        VM name
      • getProbes

        public boolean[] getProbes()
        Returns the execution data probes. A value of true indicates that the corresponding probe was executed.
        Returns:
        probe data
      • reset

        public void reset()
        Sets all probes to false.
      • hasHits

        public boolean hasHits()
        Checks whether any probe has been hit.
        Returns:
        true, if at least one probe has been hit
      • merge

        public void merge​(ExecutionData other)
        Merges the given execution data into the probe data of this object. I.e. a probe entry in this object is marked as executed (true) if this probe or the corresponding other probe was executed. So the result is
         A or B
         
        The probe array of the other object is not modified.
        Parameters:
        other - execution data to merge
      • merge

        public void merge​(ExecutionData other,
                          boolean flag)
        Merges the given execution data into the probe data of this object. A probe in this object is set to the value of flag if the corresponding other probe was executed. For flag==true this corresponds to
         A or B
         
        For flag==false this can be considered as a subtraction
         A and not B
         
        The probe array of the other object is not modified.
        Parameters:
        other - execution data to merge
        flag - merge mode
      • assertCompatibility

        public void assertCompatibility​(long id,
                                        java.lang.String name,
                                        int probecount)
                                 throws java.lang.IllegalStateException
        Asserts that this execution data object is compatible with the given parameters. The purpose of this check is to detect a very unlikely class id collision.
        Parameters:
        id - other class id, must be the same
        name - other name, must be equal to this name
        probecount - probe data length, must be the same as for this data
        Throws:
        java.lang.IllegalStateException - if the given parameters do not match this instance
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object