final class oadd.io.netty.buffer.PoolThreadCache extends java.lang.Object
{
private static final oadd.io.netty.util.internal.logging.InternalLogger logger;
private static final int INTEGER_SIZE_MINUS_ONE;
final oadd.io.netty.buffer.PoolArena heapArena;
final oadd.io.netty.buffer.PoolArena directArena;
private final oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches;
private final oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches;
private final oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches;
private final oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches;
private final int freeSweepAllocationThreshold;
private final java.util.concurrent.atomic.AtomicBoolean freed;
private int allocations;
void <init>(oadd.io.netty.buffer.PoolArena, oadd.io.netty.buffer.PoolArena, int, int, int, int)
{
java.util.concurrent.atomic.AtomicBoolean v;
oadd.io.netty.buffer.PoolArena v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v, v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v, v, v, v, v, v, v, v;
java.lang.String v;
java.lang.IllegalArgumentException v;
oadd.io.netty.buffer.PoolThreadCache v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<oadd.io.netty.buffer.PoolThreadCache: java.util.concurrent.atomic.AtomicBoolean freed> = v;
staticinvoke <oadd.io.netty.util.internal.ObjectUtil: int checkPositiveOrZero(int,java.lang.String)>(v, "maxCachedBufferCapacity");
v.<oadd.io.netty.buffer.PoolThreadCache: int freeSweepAllocationThreshold> = v;
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena heapArena> = v;
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena directArena> = v;
if v == null goto label;
v = v.<oadd.io.netty.buffer.PoolArena: int numSmallSubpagePools>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createSubPageCaches(int,int)>(v, v);
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches> = v;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createNormalCaches(int,int,oadd.io.netty.buffer.PoolArena)>(v, v, v);
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches> = v;
v = v.<oadd.io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndIncrement()>();
goto label;
label:
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches> = null;
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches> = null;
label:
if v == null goto label;
v = v.<oadd.io.netty.buffer.PoolArena: int numSmallSubpagePools>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createSubPageCaches(int,int)>(v, v);
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches> = v;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createNormalCaches(int,int,oadd.io.netty.buffer.PoolArena)>(v, v, v);
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches> = v;
v = v.<oadd.io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndIncrement()>();
goto label;
label:
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches> = null;
v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches> = null;
label:
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches>;
if v != null goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches>;
if v != null goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches>;
if v != null goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches>;
if v == null goto label;
label:
if v >= 1 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("freeSweepAllocationThreshold: \u (expected: > 0)");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private static oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createSubPageCaches(int, int)
{
int v, v, v, v;
oadd.io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v;
v := @parameter: int;
v := @parameter: int;
if v <= 0 goto label;
if v <= 0 goto label;
v = newarray (oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = new oadd.io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache;
specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache: void <init>(int)>(v);
v[v] = v;
v = v + 1;
goto label;
label:
return v;
label:
return null;
}
private static oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] createNormalCaches(int, int, oadd.io.netty.buffer.PoolArena)
{
java.lang.Object[] v;
oadd.io.netty.buffer.PoolArena v;
java.util.ArrayList v;
oadd.io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache v;
int v, v, v, v, v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v;
v := @parameter: int;
v := @parameter: int;
v := @parameter: oadd.io.netty.buffer.PoolArena;
if v <= 0 goto label;
if v <= 0 goto label;
v = v.<oadd.io.netty.buffer.PoolArena: int chunkSize>;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<oadd.io.netty.buffer.PoolArena: int numSmallSubpagePools>;
label:
v = v.<oadd.io.netty.buffer.PoolArena: int nSizes>;
if v >= v goto label;
v = virtualinvoke v.<oadd.io.netty.buffer.PoolArena: int sizeIdx2size(int)>(v);
if v > v goto label;
v = new oadd.io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache;
specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache: void <init>(int)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
v = newarray (oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache)[0];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
return v;
label:
return null;
}
static int log2(int)
{
int v, v, v;
v := @parameter: int;
v = staticinvoke <java.lang.Integer: int numberOfLeadingZeros(int)>(v);
v = 31 - v;
return v;
}
boolean allocateSmall(oadd.io.netty.buffer.PoolArena, oadd.io.netty.buffer.PooledByteBuf, int, int)
{
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v;
oadd.io.netty.buffer.PooledByteBuf v;
oadd.io.netty.buffer.PoolArena v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: oadd.io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: int;
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForSmall(oadd.io.netty.buffer.PoolArena,int)>(v, v);
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: boolean allocate(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache,oadd.io.netty.buffer.PooledByteBuf,int)>(v, v, v);
return v;
}
boolean allocateNormal(oadd.io.netty.buffer.PoolArena, oadd.io.netty.buffer.PooledByteBuf, int, int)
{
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v;
oadd.io.netty.buffer.PooledByteBuf v;
oadd.io.netty.buffer.PoolArena v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: oadd.io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: int;
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForNormal(oadd.io.netty.buffer.PoolArena,int)>(v, v);
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: boolean allocate(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache,oadd.io.netty.buffer.PooledByteBuf,int)>(v, v, v);
return v;
}
private boolean allocate(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache, oadd.io.netty.buffer.PooledByteBuf, int)
{
oadd.io.netty.buffer.PooledByteBuf v;
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v, v, v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache;
v := @parameter: oadd.io.netty.buffer.PooledByteBuf;
v := @parameter: int;
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache: boolean allocate(oadd.io.netty.buffer.PooledByteBuf,int,oadd.io.netty.buffer.PoolThreadCache)>(v, v, v);
v = v.<oadd.io.netty.buffer.PoolThreadCache: int allocations>;
v = v + 1;
v.<oadd.io.netty.buffer.PoolThreadCache: int allocations> = v;
v = v.<oadd.io.netty.buffer.PoolThreadCache: int freeSweepAllocationThreshold>;
if v < v goto label;
v.<oadd.io.netty.buffer.PoolThreadCache: int allocations> = 0;
virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache: void trim()>();
label:
return v;
}
boolean add(oadd.io.netty.buffer.PoolArena, oadd.io.netty.buffer.PoolChunk, java.nio.ByteBuffer, long, int, oadd.io.netty.buffer.PoolArena$SizeClass)
{
long v;
oadd.io.netty.buffer.PoolArena$SizeClass v;
oadd.io.netty.buffer.PoolChunk v;
oadd.io.netty.buffer.PoolArena v;
java.nio.ByteBuffer v;
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: oadd.io.netty.buffer.PoolChunk;
v := @parameter: java.nio.ByteBuffer;
v := @parameter: long;
v := @parameter: int;
v := @parameter: oadd.io.netty.buffer.PoolArena$SizeClass;
v = virtualinvoke v.<oadd.io.netty.buffer.PoolArena: int size2SizeIdx(int)>(v);
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolArena,int,oadd.io.netty.buffer.PoolArena$SizeClass)>(v, v, v);
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache: boolean add(oadd.io.netty.buffer.PoolChunk,java.nio.ByteBuffer,long,int)>(v, v, v, v);
return v;
}
private oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolArena, int, oadd.io.netty.buffer.PoolArena$SizeClass)
{
java.lang.Error v;
oadd.io.netty.buffer.PoolArena$SizeClass v;
oadd.io.netty.buffer.PoolArena v;
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v, v;
int[] v;
int v, v, v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: int;
v := @parameter: oadd.io.netty.buffer.PoolArena$SizeClass;
v = <oadd.io.netty.buffer.PoolThreadCache$1: int[] $SwitchMap$io$netty$buffer$PoolArena$SizeClass>;
v = virtualinvoke v.<oadd.io.netty.buffer.PoolArena$SizeClass: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForNormal(oadd.io.netty.buffer.PoolArena,int)>(v, v);
return v;
label:
v = specialinvoke v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForSmall(oadd.io.netty.buffer.PoolArena,int)>(v, v);
return v;
label:
v = new java.lang.Error;
specialinvoke v.<java.lang.Error: void <init>()>();
throw v;
}
protected void finalize() throws java.lang.Throwable
{
java.lang.Throwable v;
oadd.io.netty.buffer.PoolThreadCache v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
label:
specialinvoke v.<java.lang.Object: void finalize()>();
label:
virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache: void free(boolean)>(1);
goto label;
label:
v := @caughtexception;
virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache: void free(boolean)>(1);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
void free(boolean)
{
java.util.concurrent.atomic.AtomicBoolean v;
oadd.io.netty.buffer.PoolArena v, v, v, v;
java.lang.Integer v;
java.util.concurrent.atomic.AtomicInteger v, v;
java.lang.Thread v;
oadd.io.netty.util.internal.logging.InternalLogger v, v;
int v, v, v, v, v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v, v, v, v;
java.lang.String v;
boolean v, v, v;
oadd.io.netty.buffer.PoolThreadCache v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: boolean;
v = v.<oadd.io.netty.buffer.PoolThreadCache: java.util.concurrent.atomic.AtomicBoolean freed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],boolean)>(v, v);
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],boolean)>(v, v);
v = v + v;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],boolean)>(v, v);
v = v + v;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],boolean)>(v, v);
v = v + v;
if v <= 0 goto label;
v = <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<oadd.io.netty.util.internal.logging.InternalLogger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.util.internal.logging.InternalLogger logger>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.String getName()>();
interfaceinvoke v.<oadd.io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Freed {} thread-local buffer(s) from thread: {}", v, v);
label:
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena directArena>;
if v == null goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena directArena>;
v = v.<oadd.io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndDecrement()>();
label:
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena heapArena>;
if v == null goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolArena heapArena>;
v = v.<oadd.io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndDecrement()>();
label:
return;
}
private static int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[], boolean)
{
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v;
boolean v;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[];
v := @parameter: boolean;
if v != null goto label;
return 0;
label:
v = 0;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache,boolean)>(v, v);
v = v + v;
v = v + 1;
goto label;
label:
return v;
}
private static int free(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache, boolean)
{
int v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
boolean v;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache;
v := @parameter: boolean;
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache: int free(boolean)>(v);
return v;
}
void trim()
{
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v, v, v, v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches>;
staticinvoke <oadd.io.netty.buffer.PoolThreadCache: void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[])>(v);
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches>;
staticinvoke <oadd.io.netty.buffer.PoolThreadCache: void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[])>(v);
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches>;
staticinvoke <oadd.io.netty.buffer.PoolThreadCache: void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[])>(v);
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches>;
staticinvoke <oadd.io.netty.buffer.PoolThreadCache: void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[])>(v);
return;
}
private static void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[])
{
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[];
if v != null goto label;
return;
label:
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
staticinvoke <oadd.io.netty.buffer.PoolThreadCache: void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache)>(v);
v = v + 1;
goto label;
label:
return;
}
private static void trim(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache)
{
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache;
if v != null goto label;
return;
label:
virtualinvoke v.<oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache: void trim()>();
return;
}
private oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForSmall(oadd.io.netty.buffer.PoolArena, int)
{
oadd.io.netty.buffer.PoolArena v;
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v, v;
int v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v, v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: int;
v = virtualinvoke v.<oadd.io.netty.buffer.PoolArena: boolean isDirect()>();
if v == 0 goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageDirectCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],int)>(v, v);
return v;
label:
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] smallSubPageHeapCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],int)>(v, v);
return v;
}
private oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cacheForNormal(oadd.io.netty.buffer.PoolArena, int)
{
oadd.io.netty.buffer.PoolArena v;
oadd.io.netty.buffer.PoolThreadCache v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v, v;
int v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v, v;
boolean v;
v := @this: oadd.io.netty.buffer.PoolThreadCache;
v := @parameter: oadd.io.netty.buffer.PoolArena;
v := @parameter: int;
v = v.<oadd.io.netty.buffer.PoolArena: int numSmallSubpagePools>;
v = v - v;
v = virtualinvoke v.<oadd.io.netty.buffer.PoolArena: boolean isDirect()>();
if v == 0 goto label;
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalDirectCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],int)>(v, v);
return v;
label:
v = v.<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] normalHeapCaches>;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[],int)>(v, v);
return v;
}
private static oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache cache(oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[], int)
{
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache v;
int v, v, v;
oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[] v;
v := @parameter: oadd.io.netty.buffer.PoolThreadCache$MemoryRegionCache[];
v := @parameter: int;
if v == null goto label;
v = lengthof v;
v = v - 1;
if v <= v goto label;
label:
return null;
label:
v = v[v];
return v;
}
static void <clinit>()
{
oadd.io.netty.util.internal.logging.InternalLogger v;
v = staticinvoke <oadd.io.netty.util.internal.logging.InternalLoggerFactory: oadd.io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Loadd/io/netty/buffer/PoolThreadCache;");
<oadd.io.netty.buffer.PoolThreadCache: oadd.io.netty.util.internal.logging.InternalLogger logger> = v;
return;
}
}