Package io.netty.util.internal
Class ReferenceCountUpdater<T extends ReferenceCounted>
- java.lang.Object
-
- io.netty.util.internal.ReferenceCountUpdater<T>
-
public abstract class ReferenceCountUpdater<T extends ReferenceCounted> extends java.lang.Object
Common logic forReferenceCounted
implementations
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ReferenceCountUpdater()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static long
getUnsafeOffset(java.lang.Class<? extends ReferenceCounted> clz, java.lang.String fieldName)
int
initialValue()
boolean
isLiveNonVolatile(T instance)
private boolean
nonFinalRelease0(T instance, int decrement, int rawCnt, int realCnt)
private int
nonVolatileRawCnt(T instance)
private static int
realRefCnt(int rawCnt)
int
refCnt(T instance)
boolean
release(T instance)
boolean
release(T instance, int decrement)
void
resetRefCnt(T instance)
Resets the reference count to 1T
retain(T instance)
T
retain(T instance, int increment)
private T
retain0(T instance, int increment, int rawIncrement)
private boolean
retryRelease0(T instance, int decrement)
void
setRefCnt(T instance, int refCnt)
An unsafe operation that sets the reference count directlyprivate static int
toLiveRealRefCnt(int rawCnt, int decrement)
LikerealRefCnt(int)
but throws if refCnt == 0private boolean
tryFinalRelease0(T instance, int expectRawCnt)
protected abstract long
unsafeOffset()
protected abstract java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T>
updater()
-
-
-
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)
LikerealRefCnt(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
-
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)
-
-