Class SecretPerfMarkImpl.PerfMarkImpl

    • Constructor Summary

      Constructors 
      Constructor Description
      PerfMarkImpl​(Tag key)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void attachTag​(Tag tag)  
      protected void attachTag​(java.lang.String tagName, long tagValue)  
      protected void attachTag​(java.lang.String tagName, long tagValue0, long tagValue1)  
      protected void attachTag​(java.lang.String tagName, java.lang.String tagValue)  
      <T> void attachTag​(java.lang.String tagName, T tagObject, StringFunction<? super T> stringFunction)
      This method is needed to work with old version of perfmark-api.
      protected <T> void attachTag​(java.lang.String tagName, T tagObject, java.util.function.Function<? super T,​? extends java.lang.String> stringFunction)  
      protected <T> void attachTag​(java.lang.String tagName, T tagObject, java.util.function.ToIntFunction<? super T> intFunction)  
      protected <T> void attachTag​(java.lang.String tagName, T tagObject, java.util.function.ToLongFunction<? super T> longFunction)  
      protected Tag createTag​(java.lang.String tagName, long tagId)  
      (package private) static <T> java.lang.String deriveTagValue​(java.lang.String tagName, T tagObject, java.util.function.Function<? super T,​? extends java.lang.String> stringFunction)  
      (package private) static <T> long deriveTagValue​(java.lang.String tagName, T tagNameObject, java.util.function.ToIntFunction<? super T> intFunction)  
      (package private) static <T> long deriveTagValue​(java.lang.String tagName, T tagNameObject, java.util.function.ToLongFunction<? super T> longFunction)  
      (package private) static <T> java.lang.String deriveTaskValue​(T taskNameObject, java.util.function.Function<? super T,​java.lang.String> stringFunction)  
      protected void event​(java.lang.String eventName)  
      protected void event​(java.lang.String eventName, Tag tag)  
      protected void event​(java.lang.String eventName, java.lang.String subEventName)  
      private static long getGen()  
      (package private) static <T> void handleTagValueFailure​(java.lang.String tagName, T tagObject, java.lang.Object stringFunction, java.lang.Throwable cause)  
      (package private) static <T> void handleTaskNameFailure​(T taskNameObject, java.lang.Object function, java.lang.Throwable cause)  
      private static boolean isEnabled​(long gen)  
      protected void linkIn​(Link link)  
      protected Link linkOut()  
      private static void logEnabledChange​(boolean value, boolean success)  
      private static long mibrosFromGeneration​(long currentGeneration)  
      private static long mibrosFromNanos​(long nanos)  
      (package private) static long nextGeneration​(long currentGeneration, long nanosSinceInit)  
      protected void setEnabled​(boolean value)  
      protected boolean setEnabled​(boolean value, boolean overload)  
      private static boolean setEnabledQuiet​(boolean value, long now)
      Returns true if successfully changed.
      protected void startTask​(java.lang.String taskName)  
      protected void startTask​(java.lang.String taskName, Tag tag)  
      protected void startTask​(java.lang.String taskName, java.lang.String subTaskName)  
      protected <T> void startTask​(T taskNameObject, StringFunction<? super T> stringFunction)
      This method is needed to work with old version of perfmark-api.
      protected <T> void startTask​(T taskNameObject, java.util.function.Function<? super T,​java.lang.String> stringFunction)  
      protected void stopTask()  
      protected void stopTask​(java.lang.String taskName)  
      protected void stopTask​(java.lang.String taskName, Tag tag)  
      protected void stopTask​(java.lang.String taskName, java.lang.String subTaskName)  
      • Methods inherited from class java.lang.Object

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

      • NO_TAG

        private static final Tag NO_TAG
      • NO_LINK

        private static final Link NO_LINK
      • linkIdAlloc

        private static final java.util.concurrent.atomic.AtomicLong linkIdAlloc
      • generator

        private static final Generator generator
      • markRecorder

        private static final MarkRecorder markRecorder
      • logger

        private static final java.lang.Object logger
      • actualGeneration

        private static long actualGeneration
        This is the generation of the recorded tasks. The bottom 8 bits [0-7] are reserved for opcode packing. Bit 9 [8] is used for detecting if PerfMark is enabled or not. Bit 10 [9] is unused. Bits 11-64 [10-647] are used for storing the time since Perfmark Was last / enabled or disabled. The units are in nanoseconds/1024, or (inaccurately) called mibros (like micros, but power of 2 based).
    • Constructor Detail

      • PerfMarkImpl

        public PerfMarkImpl​(Tag key)
    • Method Detail

      • setEnabled

        protected void setEnabled​(boolean value)
        Overrides:
        setEnabled in class Impl
      • setEnabled

        protected boolean setEnabled​(boolean value,
                                     boolean overload)
        Overrides:
        setEnabled in class Impl
      • logEnabledChange

        private static void logEnabledChange​(boolean value,
                                             boolean success)
      • setEnabledQuiet

        private static boolean setEnabledQuiet​(boolean value,
                                               long now)
        Returns true if successfully changed.
      • nextGeneration

        static long nextGeneration​(long currentGeneration,
                                   long nanosSinceInit)
      • mibrosFromGeneration

        private static long mibrosFromGeneration​(long currentGeneration)
      • mibrosFromNanos

        private static long mibrosFromNanos​(long nanos)
      • startTask

        protected void startTask​(java.lang.String taskName,
                                 Tag tag)
        Overrides:
        startTask in class Impl
      • startTask

        protected void startTask​(java.lang.String taskName)
        Overrides:
        startTask in class Impl
      • startTask

        protected void startTask​(java.lang.String taskName,
                                 java.lang.String subTaskName)
        Overrides:
        startTask in class Impl
      • startTask

        protected <T> void startTask​(T taskNameObject,
                                     StringFunction<? super T> stringFunction)
        This method is needed to work with old version of perfmark-api.
      • startTask

        protected <T> void startTask​(T taskNameObject,
                                     java.util.function.Function<? super T,​java.lang.String> stringFunction)
        Overrides:
        startTask in class Impl
      • stopTask

        protected void stopTask()
        Overrides:
        stopTask in class Impl
      • stopTask

        protected void stopTask​(java.lang.String taskName,
                                Tag tag)
        Overrides:
        stopTask in class Impl
      • stopTask

        protected void stopTask​(java.lang.String taskName)
        Overrides:
        stopTask in class Impl
      • stopTask

        protected void stopTask​(java.lang.String taskName,
                                java.lang.String subTaskName)
        Overrides:
        stopTask in class Impl
      • event

        protected void event​(java.lang.String eventName,
                             Tag tag)
        Overrides:
        event in class Impl
      • event

        protected void event​(java.lang.String eventName)
        Overrides:
        event in class Impl
      • event

        protected void event​(java.lang.String eventName,
                             java.lang.String subEventName)
        Overrides:
        event in class Impl
      • attachTag

        protected void attachTag​(Tag tag)
        Overrides:
        attachTag in class Impl
      • attachTag

        protected void attachTag​(java.lang.String tagName,
                                 java.lang.String tagValue)
        Overrides:
        attachTag in class Impl
      • attachTag

        public <T> void attachTag​(java.lang.String tagName,
                                  T tagObject,
                                  StringFunction<? super T> stringFunction)
        This method is needed to work with old version of perfmark-api.
      • attachTag

        protected <T> void attachTag​(java.lang.String tagName,
                                     T tagObject,
                                     java.util.function.Function<? super T,​? extends java.lang.String> stringFunction)
        Overrides:
        attachTag in class Impl
      • attachTag

        protected <T> void attachTag​(java.lang.String tagName,
                                     T tagObject,
                                     java.util.function.ToIntFunction<? super T> intFunction)
        Overrides:
        attachTag in class Impl
      • attachTag

        protected <T> void attachTag​(java.lang.String tagName,
                                     T tagObject,
                                     java.util.function.ToLongFunction<? super T> longFunction)
        Overrides:
        attachTag in class Impl
      • deriveTagValue

        static <T> java.lang.String deriveTagValue​(java.lang.String tagName,
                                                   T tagObject,
                                                   java.util.function.Function<? super T,​? extends java.lang.String> stringFunction)
      • deriveTagValue

        static <T> long deriveTagValue​(java.lang.String tagName,
                                       T tagNameObject,
                                       java.util.function.ToIntFunction<? super T> intFunction)
      • deriveTagValue

        static <T> long deriveTagValue​(java.lang.String tagName,
                                       T tagNameObject,
                                       java.util.function.ToLongFunction<? super T> longFunction)
      • deriveTaskValue

        static <T> java.lang.String deriveTaskValue​(T taskNameObject,
                                                    java.util.function.Function<? super T,​java.lang.String> stringFunction)
      • handleTagValueFailure

        static <T> void handleTagValueFailure​(java.lang.String tagName,
                                              T tagObject,
                                              java.lang.Object stringFunction,
                                              java.lang.Throwable cause)
      • handleTaskNameFailure

        static <T> void handleTaskNameFailure​(T taskNameObject,
                                              java.lang.Object function,
                                              java.lang.Throwable cause)
      • attachTag

        protected void attachTag​(java.lang.String tagName,
                                 long tagValue)
        Overrides:
        attachTag in class Impl
      • attachTag

        protected void attachTag​(java.lang.String tagName,
                                 long tagValue0,
                                 long tagValue1)
        Overrides:
        attachTag in class Impl
      • createTag

        protected Tag createTag​(java.lang.String tagName,
                                long tagId)
        Overrides:
        createTag in class Impl
      • linkIn

        protected void linkIn​(Link link)
        Overrides:
        linkIn in class Impl
      • getGen

        private static long getGen()
      • isEnabled

        private static boolean isEnabled​(long gen)