Class ReferenceCountUpdater<T extends ReferenceCounted>

    • Constructor Detail

      • ReferenceCountUpdater

        protected ReferenceCountUpdater()
    • Method Detail

      • getUnsafeOffset

        public static long getUnsafeOffset​(java.lang.Class<? extends ReferenceCounted> clz,
                                           java.lang.String fieldName)
      • updater

        protected abstract java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> updater()
      • unsafeOffset

        protected abstract long unsafeOffset()
      • initialValue

        public final int initialValue()
      • realRefCnt

        private static int realRefCnt​(int rawCnt)
      • toLiveRealRefCnt

        private static int toLiveRealRefCnt​(int rawCnt,
                                            int decrement)
        Like realRefCnt(int) but throws if refCnt == 0
      • nonVolatileRawCnt

        private int nonVolatileRawCnt​(T instance)
      • refCnt

        public final int refCnt​(T instance)
      • isLiveNonVolatile

        public final boolean isLiveNonVolatile​(T instance)
      • setRefCnt

        public final void setRefCnt​(T instance,
                                    int refCnt)
        An unsafe operation that sets the reference count directly
      • resetRefCnt

        public final void resetRefCnt​(T instance)
        Resets the reference count to 1
      • retain

        public final T retain​(T instance)
      • retain

        public final T retain​(T instance,
                              int increment)
      • retain0

        private T retain0​(T instance,
                          int increment,
                          int rawIncrement)
      • release

        public final boolean release​(T instance)
      • release

        public final boolean release​(T instance,
                                     int decrement)
      • tryFinalRelease0

        private boolean tryFinalRelease0​(T instance,
                                         int expectRawCnt)
      • nonFinalRelease0

        private boolean nonFinalRelease0​(T instance,
                                         int decrement,
                                         int rawCnt,
                                         int realCnt)
      • retryRelease0

        private boolean retryRelease0​(T instance,
                                      int decrement)