abstract class io.netty.buffer.PoolArena extends io.netty.buffer.SizeClasses implements io.netty.buffer.PoolArenaMetric
{
private static final boolean HAS_UNSAFE;
final io.netty.buffer.PooledByteBufAllocator parent;
final int numSmallSubpagePools;
final int directMemoryCacheAlignment;
private final io.netty.buffer.PoolSubpage[] smallSubpagePools;
private final io.netty.buffer.PoolChunkList q;
private final io.netty.buffer.PoolChunkList q;
private final io.netty.buffer.PoolChunkList q;
private final io.netty.buffer.PoolChunkList qInit;
private final io.netty.buffer.PoolChunkList q;
private final io.netty.buffer.PoolChunkList q;
private final java.util.List chunkListMetrics;
private long allocationsNormal;
private final io.netty.util.internal.LongCounter allocationsSmall;
private final io.netty.util.internal.LongCounter allocationsHuge;
private final io.netty.util.internal.LongCounter activeBytesHuge;
private long deallocationsSmall;
private long deallocationsNormal;
private final io.netty.util.internal.LongCounter deallocationsHuge;
final java.util.concurrent.atomic.AtomicInteger numThreadCaches;
private final java.util.concurrent.locks.ReentrantLock lock;
static final boolean $assertionsDisabled;
protected void <init>(io.netty.buffer.PooledByteBufAllocator, int, int, int, int)
{
io.netty.buffer.PoolChunkList v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.buffer.PoolSubpage v;
java.util.concurrent.atomic.AtomicInteger v;
io.netty.buffer.PoolSubpage[] v, v, v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBufAllocator v;
java.util.List v;
io.netty.util.internal.LongCounter v, v, v, v;
java.util.ArrayList v;
int v, v, v, v, v, v, v, v;
java.util.concurrent.locks.ReentrantLock v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PooledByteBufAllocator;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<io.netty.buffer.SizeClasses: void <init>(int,int,int,int)>(v, v, v, v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: io.netty.util.internal.LongCounter newLongCounter()>();
v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsSmall> = v;
v = staticinvoke <io.netty.util.internal.PlatformDependent: io.netty.util.internal.LongCounter newLongCounter()>();
v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsHuge> = v;
v = staticinvoke <io.netty.util.internal.PlatformDependent: io.netty.util.internal.LongCounter newLongCounter()>();
v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter activeBytesHuge> = v;
v = staticinvoke <io.netty.util.internal.PlatformDependent: io.netty.util.internal.LongCounter newLongCounter()>();
v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter deallocationsHuge> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches> = v;
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<io.netty.buffer.PoolArena: java.util.concurrent.locks.ReentrantLock lock> = v;
v.<io.netty.buffer.PoolArena: io.netty.buffer.PooledByteBufAllocator parent> = v;
v.<io.netty.buffer.PoolArena: int directMemoryCacheAlignment> = v;
v = v.<io.netty.buffer.PoolArena: int nSubpages>;
v.<io.netty.buffer.PoolArena: int numSmallSubpagePools> = v;
v = v.<io.netty.buffer.PoolArena: int numSmallSubpagePools>;
v = specialinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] newSubpagePoolArray(int)>(v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools> = v;
v = 0;
label:
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
v = lengthof v;
if v >= v goto label;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
v = specialinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage newSubpagePoolHead()>();
v[v] = v;
v = v + 1;
goto label;
label:
v = new io.netty.buffer.PoolChunkList;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, null, 100, 2147483647, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100> = v;
v = new io.netty.buffer.PoolChunkList;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, v, 75, 100, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075> = v;
v = new io.netty.buffer.PoolChunkList;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, v, 50, 100, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050> = v;
v = new io.netty.buffer.PoolChunkList;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, v, 25, 75, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025> = v;
v = new io.netty.buffer.PoolChunkList;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, v, 1, 50, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000> = v;
v = new io.netty.buffer.PoolChunkList;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
specialinvoke v.<io.netty.buffer.PoolChunkList: void <init>(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunkList,int,int,int)>(v, v, -2147483648, 25, v);
v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit> = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(null);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void prevList(io.netty.buffer.PoolChunkList)>(v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(6);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = staticinvoke <java.util.Collections: java.util.List unmodifiableList(java.util.List)>(v);
v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics> = v;
return;
}
private io.netty.buffer.PoolSubpage newSubpagePoolHead()
{
io.netty.buffer.PoolSubpage v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = new io.netty.buffer.PoolSubpage;
specialinvoke v.<io.netty.buffer.PoolSubpage: void <init>()>();
v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage prev> = v;
v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next> = v;
return v;
}
private io.netty.buffer.PoolSubpage[] newSubpagePoolArray(int)
{
int v;
io.netty.buffer.PoolSubpage[] v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: int;
v = newarray (io.netty.buffer.PoolSubpage)[v];
return v;
}
abstract boolean isDirect();
io.netty.buffer.PooledByteBuf allocate(io.netty.buffer.PoolThreadCache, int, int)
{
io.netty.buffer.PoolThreadCache v;
io.netty.buffer.PoolArena v;
int v, v;
io.netty.buffer.PooledByteBuf v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolThreadCache;
v := @parameter: int;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PooledByteBuf newByteBuf(int)>(v);
specialinvoke v.<io.netty.buffer.PoolArena: void allocate(io.netty.buffer.PoolThreadCache,io.netty.buffer.PooledByteBuf,int)>(v, v, v);
return v;
}
private void allocate(io.netty.buffer.PoolThreadCache, io.netty.buffer.PooledByteBuf, int)
{
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBuf v;
io.netty.buffer.PoolThreadCache v;
int v, v, v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolThreadCache;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.PoolArena: int size2SizeIdx(int)>(v);
v = v.<io.netty.buffer.PoolArena: int smallMaxSizeIdx>;
if v > v goto label;
specialinvoke v.<io.netty.buffer.PoolArena: void tcacheAllocateSmall(io.netty.buffer.PoolThreadCache,io.netty.buffer.PooledByteBuf,int,int)>(v, v, v, v);
goto label;
label:
v = v.<io.netty.buffer.PoolArena: int nSizes>;
if v >= v goto label;
specialinvoke v.<io.netty.buffer.PoolArena: void tcacheAllocateNormal(io.netty.buffer.PoolThreadCache,io.netty.buffer.PooledByteBuf,int,int)>(v, v, v, v);
goto label;
label:
v = v.<io.netty.buffer.PoolArena: int directMemoryCacheAlignment>;
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.buffer.PoolArena: int normalizeSize(int)>(v);
goto label;
label:
v = v;
label:
specialinvoke v.<io.netty.buffer.PoolArena: void allocateHuge(io.netty.buffer.PooledByteBuf,int)>(v, v);
label:
return;
}
private void tcacheAllocateSmall(io.netty.buffer.PoolThreadCache, io.netty.buffer.PooledByteBuf, int, int)
{
java.lang.Throwable v, v;
long v;
java.lang.AssertionError v, v;
io.netty.buffer.PoolSubpage v, v;
byte v;
int v, v, v, v, v;
java.lang.String v;
boolean v, v, v, v, v, v, v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBuf v;
io.netty.buffer.PoolThreadCache v;
io.netty.buffer.PoolChunk v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolThreadCache;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.PoolThreadCache: boolean allocateSmall(io.netty.buffer.PoolArena,io.netty.buffer.PooledByteBuf,int,int)>(v, v, v, v);
if v == 0 goto label;
return;
label:
v = virtualinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage findSubpagePoolHead(int)>(v);
virtualinvoke v.<io.netty.buffer.PoolSubpage: void lock()>();
label:
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
v = <io.netty.buffer.PoolArena: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<io.netty.buffer.PoolSubpage: boolean doNotDestroy>;
if v == 0 goto label;
v = v.<io.netty.buffer.PoolSubpage: int elemSize>;
v = virtualinvoke v.<io.netty.buffer.PoolArena: int sizeIdx2size(int)>(v);
if v == v goto label;
label:
v = new java.lang.AssertionError;
v = v.<io.netty.buffer.PoolSubpage: boolean doNotDestroy>;
v = v.<io.netty.buffer.PoolSubpage: int elemSize>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (boolean,int,int)>(v, v, 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[])>("doNotDestroy=\u, elemSize=\u, sizeIdx=\u0001");
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>(v);
throw v;
label:
v = virtualinvoke v.<io.netty.buffer.PoolSubpage: long allocate()>();
v = <io.netty.buffer.PoolArena: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v cmp 0L;
if v >= 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolChunk chunk>;
virtualinvoke v.<io.netty.buffer.PoolChunk: void initBufWithSubpage(io.netty.buffer.PooledByteBuf,java.nio.ByteBuffer,long,int,io.netty.buffer.PoolThreadCache)>(v, null, v, v, v);
label:
virtualinvoke v.<io.netty.buffer.PoolSubpage: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolSubpage: void unlock()>();
throw v;
label:
if v == 0 goto label;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
specialinvoke v.<io.netty.buffer.PoolArena: void allocateNormal(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
specialinvoke v.<io.netty.buffer.PoolArena: void incSmallAllocation()>();
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void tcacheAllocateNormal(io.netty.buffer.PoolThreadCache, io.netty.buffer.PooledByteBuf, int, int)
{
java.lang.Throwable v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBuf v;
long v, v;
io.netty.buffer.PoolThreadCache v;
int v, v;
boolean v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolThreadCache;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.PoolThreadCache: boolean allocateNormal(io.netty.buffer.PoolArena,io.netty.buffer.PooledByteBuf,int,int)>(v, v, v, v);
if v == 0 goto label;
return;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
specialinvoke v.<io.netty.buffer.PoolArena: void allocateNormal(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
v = v.<io.netty.buffer.PoolArena: long allocationsNormal>;
v = v + 1L;
v.<io.netty.buffer.PoolArena: long allocationsNormal> = v;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void allocateNormal(io.netty.buffer.PooledByteBuf, int, int, io.netty.buffer.PoolThreadCache)
{
io.netty.buffer.PoolChunkList v, v, v, v, v, v;
java.lang.AssertionError v, v;
int v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v;
java.util.concurrent.locks.ReentrantLock v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBuf v;
io.netty.buffer.PoolThreadCache v;
io.netty.buffer.PoolChunk v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: int;
v := @parameter: io.netty.buffer.PoolThreadCache;
v = <io.netty.buffer.PoolArena: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<io.netty.buffer.PoolArena: java.util.concurrent.locks.ReentrantLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
if v != 0 goto label;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
if v != 0 goto label;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
if v != 0 goto label;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
if v != 0 goto label;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
if v == 0 goto label;
label:
return;
label:
v = v.<io.netty.buffer.PoolArena: int pageSize>;
v = v.<io.netty.buffer.PoolArena: int nPSizes>;
v = v.<io.netty.buffer.PoolArena: int pageShifts>;
v = v.<io.netty.buffer.PoolArena: int chunkSize>;
v = virtualinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunk newChunk(int,int,int,int)>(v, v, v, v);
v = virtualinvoke v.<io.netty.buffer.PoolChunk: boolean allocate(io.netty.buffer.PooledByteBuf,int,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v);
v = <io.netty.buffer.PoolArena: boolean $assertionsDisabled>;
if v != 0 goto label;
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
virtualinvoke v.<io.netty.buffer.PoolChunkList: void add(io.netty.buffer.PoolChunk)>(v);
return;
}
private void incSmallAllocation()
{
io.netty.util.internal.LongCounter v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsSmall>;
interfaceinvoke v.<io.netty.util.internal.LongCounter: void increment()>();
return;
}
private void allocateHuge(io.netty.buffer.PooledByteBuf, int)
{
io.netty.buffer.PoolArena v;
int v, v;
io.netty.buffer.PoolChunk v;
io.netty.buffer.PooledByteBuf v;
io.netty.util.internal.LongCounter v, v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunk newUnpooledChunk(int)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter activeBytesHuge>;
v = virtualinvoke v.<io.netty.buffer.PoolChunk: int chunkSize()>();
interfaceinvoke v.<io.netty.util.internal.LongCounter: void add(long)>(v);
virtualinvoke v.<io.netty.buffer.PooledByteBuf: void initUnpooled(io.netty.buffer.PoolChunk,int)>(v, v);
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsHuge>;
interfaceinvoke v.<io.netty.util.internal.LongCounter: void increment()>();
return;
}
void free(io.netty.buffer.PoolChunk, java.nio.ByteBuffer, long, int, io.netty.buffer.PoolThreadCache)
{
io.netty.buffer.PoolArena v;
io.netty.util.internal.LongCounter v, v;
long v;
java.nio.ByteBuffer v;
io.netty.buffer.PoolThreadCache v;
int v, v, v;
io.netty.buffer.PoolChunk v;
io.netty.buffer.PoolArena$SizeClass v;
boolean v, v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolChunk;
v := @parameter: java.nio.ByteBuffer;
v := @parameter: long;
v := @parameter: int;
v := @parameter: io.netty.buffer.PoolThreadCache;
v = v.<io.netty.buffer.PoolChunk: boolean unpooled>;
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.PoolChunk: int chunkSize()>();
virtualinvoke v.<io.netty.buffer.PoolArena: void destroyChunk(io.netty.buffer.PoolChunk)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter activeBytesHuge>;
v = neg v;
interfaceinvoke v.<io.netty.util.internal.LongCounter: void add(long)>(v);
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter deallocationsHuge>;
interfaceinvoke v.<io.netty.util.internal.LongCounter: void increment()>();
goto label;
label:
v = staticinvoke <io.netty.buffer.PoolArena: io.netty.buffer.PoolArena$SizeClass sizeClass(long)>(v);
if v == null goto label;
v = virtualinvoke v.<io.netty.buffer.PoolThreadCache: boolean add(io.netty.buffer.PoolArena,io.netty.buffer.PoolChunk,java.nio.ByteBuffer,long,int,io.netty.buffer.PoolArena$SizeClass)>(v, v, v, v, v, v);
if v == 0 goto label;
return;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void freeChunk(io.netty.buffer.PoolChunk,long,int,io.netty.buffer.PoolArena$SizeClass,java.nio.ByteBuffer,boolean)>(v, v, v, v, v, 0);
label:
return;
}
private static io.netty.buffer.PoolArena$SizeClass sizeClass(long)
{
long v;
io.netty.buffer.PoolArena$SizeClass v;
boolean v;
v := @parameter: long;
v = staticinvoke <io.netty.buffer.PoolChunk: boolean isSubpage(long)>(v);
if v == 0 goto label;
v = <io.netty.buffer.PoolArena$SizeClass: io.netty.buffer.PoolArena$SizeClass Small>;
goto label;
label:
v = <io.netty.buffer.PoolArena$SizeClass: io.netty.buffer.PoolArena$SizeClass Normal>;
label:
return v;
}
void freeChunk(io.netty.buffer.PoolChunk, long, int, io.netty.buffer.PoolArena$SizeClass, java.nio.ByteBuffer, boolean)
{
java.lang.Throwable v;
io.netty.buffer.PoolChunkList v;
java.lang.Error v;
long v, v, v, v, v;
java.nio.ByteBuffer v;
int[] v;
int v, v, v;
io.netty.buffer.PoolArena$SizeClass v;
boolean v, v, v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PoolChunk v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolChunk;
v := @parameter: long;
v := @parameter: int;
v := @parameter: io.netty.buffer.PoolArena$SizeClass;
v := @parameter: java.nio.ByteBuffer;
v := @parameter: boolean;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
if v != 0 goto label;
v = <io.netty.buffer.PoolArena$1: int[] $SwitchMap$io$netty$buffer$PoolArena$SizeClass>;
v = virtualinvoke v.<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 = v.<io.netty.buffer.PoolArena: long deallocationsNormal>;
v = v + 1L;
v.<io.netty.buffer.PoolArena: long deallocationsNormal> = v;
goto label;
label:
v = v.<io.netty.buffer.PoolArena: long deallocationsSmall>;
v = v + 1L;
v.<io.netty.buffer.PoolArena: long deallocationsSmall> = v;
goto label;
label:
v = new java.lang.Error;
specialinvoke v.<java.lang.Error: void <init>()>();
throw v;
label:
v = v.<io.netty.buffer.PoolChunk: io.netty.buffer.PoolChunkList parent>;
v = virtualinvoke v.<io.netty.buffer.PoolChunkList: boolean free(io.netty.buffer.PoolChunk,long,int,java.nio.ByteBuffer)>(v, v, v, v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
if v == 0 goto label;
virtualinvoke v.<io.netty.buffer.PoolArena: void destroyChunk(io.netty.buffer.PoolChunk)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
io.netty.buffer.PoolSubpage findSubpagePoolHead(int)
{
io.netty.buffer.PoolArena v;
int v;
io.netty.buffer.PoolSubpage[] v;
io.netty.buffer.PoolSubpage v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: int;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
v = v[v];
return v;
}
void reallocate(io.netty.buffer.PooledByteBuf, int, boolean)
{
long v;
java.lang.AssertionError v;
java.nio.ByteBuffer v;
int v, v, v, v, v, v;
boolean v, v;
io.netty.buffer.PoolArena v;
io.netty.buffer.PooledByteBuf v;
io.netty.buffer.PooledByteBufAllocator v;
io.netty.buffer.PoolThreadCache v, v;
io.netty.buffer.PoolChunk v;
java.lang.Object v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PooledByteBuf;
v := @parameter: int;
v := @parameter: boolean;
v = <io.netty.buffer.PoolArena: boolean $assertionsDisabled>;
if v != 0 goto label;
if v < 0 goto label;
v = virtualinvoke v.<io.netty.buffer.PooledByteBuf: int maxCapacity()>();
if v <= v goto label;
label:
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.buffer.PooledByteBuf: int length>;
if v != v goto label;
return;
label:
v = v.<io.netty.buffer.PooledByteBuf: io.netty.buffer.PoolChunk chunk>;
v = v.<io.netty.buffer.PooledByteBuf: java.nio.ByteBuffer tmpNioBuf>;
v = v.<io.netty.buffer.PooledByteBuf: long handle>;
v = v.<io.netty.buffer.PooledByteBuf: java.lang.Object memory>;
v = v.<io.netty.buffer.PooledByteBuf: int offset>;
v = v.<io.netty.buffer.PooledByteBuf: int maxLength>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PooledByteBufAllocator parent>;
v = virtualinvoke v.<io.netty.buffer.PooledByteBufAllocator: io.netty.buffer.PoolThreadCache threadCache()>();
specialinvoke v.<io.netty.buffer.PoolArena: void allocate(io.netty.buffer.PoolThreadCache,io.netty.buffer.PooledByteBuf,int)>(v, v, v);
if v <= v goto label;
v = v;
goto label;
label:
virtualinvoke v.<io.netty.buffer.PooledByteBuf: void trimIndicesToCapacity(int)>(v);
v = v;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void memoryCopy(java.lang.Object,int,io.netty.buffer.PooledByteBuf,int)>(v, v, v, v);
if v == 0 goto label;
v = v.<io.netty.buffer.PooledByteBuf: io.netty.buffer.PoolThreadCache cache>;
virtualinvoke v.<io.netty.buffer.PoolArena: void free(io.netty.buffer.PoolChunk,java.nio.ByteBuffer,long,int,io.netty.buffer.PoolThreadCache)>(v, v, v, v, v);
label:
return;
}
public int numThreadCaches()
{
int v;
java.util.concurrent.atomic.AtomicInteger v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: java.util.concurrent.atomic.AtomicInteger numThreadCaches>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
return v;
}
public int numTinySubpages()
{
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
return 0;
}
public int numSmallSubpages()
{
int v;
io.netty.buffer.PoolSubpage[] v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
v = lengthof v;
return v;
}
public int numChunkLists()
{
int v;
java.util.List v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
v = interfaceinvoke v.<java.util.List: int size()>();
return v;
}
public java.util.List tinySubpages()
{
java.util.List v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
return v;
}
public java.util.List smallSubpages()
{
io.netty.buffer.PoolSubpage[] v;
java.util.List v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
v = staticinvoke <io.netty.buffer.PoolArena: java.util.List subPageMetricList(io.netty.buffer.PoolSubpage[])>(v);
return v;
}
public java.util.List chunkLists()
{
java.util.List v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
return v;
}
private static java.util.List subPageMetricList(io.netty.buffer.PoolSubpage[])
{
int v, v;
io.netty.buffer.PoolSubpage[] v;
io.netty.buffer.PoolSubpage v, v, v;
java.util.ArrayList v;
v := @parameter: io.netty.buffer.PoolSubpage[];
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
if v == v goto label;
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
if v != v goto label;
label:
v = v + 1;
goto label;
label:
return v;
}
public long numAllocations()
{
java.lang.Throwable v;
io.netty.buffer.PoolArena v;
io.netty.util.internal.LongCounter v, v;
long v, v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long allocationsNormal>;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsSmall>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v + v;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v + v;
return v;
catch java.lang.Throwable from label to label with label;
}
public long numTinyAllocations()
{
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
return 0L;
}
public long numSmallAllocations()
{
io.netty.util.internal.LongCounter v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsSmall>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
return v;
}
public long numNormalAllocations()
{
java.lang.Throwable v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long allocationsNormal>;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
public long numDeallocations()
{
java.lang.Throwable v;
io.netty.buffer.PoolArena v;
io.netty.util.internal.LongCounter v;
long v, v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long deallocationsSmall>;
v = v.<io.netty.buffer.PoolArena: long deallocationsNormal>;
v = v + v;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter deallocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v + v;
return v;
catch java.lang.Throwable from label to label with label;
}
public long numTinyDeallocations()
{
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
return 0L;
}
public long numSmallDeallocations()
{
java.lang.Throwable v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long deallocationsSmall>;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
public long numNormalDeallocations()
{
java.lang.Throwable v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long deallocationsNormal>;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
public long numHugeAllocations()
{
io.netty.util.internal.LongCounter v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
return v;
}
public long numHugeDeallocations()
{
io.netty.util.internal.LongCounter v;
long v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter deallocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
return v;
}
public long numActiveAllocations()
{
java.lang.Throwable v;
io.netty.util.internal.LongCounter v, v, v;
long v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsSmall>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter allocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v + v;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter deallocationsHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
v = v - v;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long allocationsNormal>;
v = v.<io.netty.buffer.PoolArena: long deallocationsSmall>;
v = v.<io.netty.buffer.PoolArena: long deallocationsNormal>;
v = v + v;
v = v - v;
v = v + v;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = staticinvoke <java.lang.Math: long max(long,long)>(v, 0L);
return v;
catch java.lang.Throwable from label to label with label;
}
public long numActiveTinyAllocations()
{
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
return 0L;
}
public long numActiveSmallAllocations()
{
io.netty.buffer.PoolArena v;
long v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
v = virtualinvoke v.<io.netty.buffer.PoolArena: long numSmallAllocations()>();
v = virtualinvoke v.<io.netty.buffer.PoolArena: long numSmallDeallocations()>();
v = v - v;
v = staticinvoke <java.lang.Math: long max(long,long)>(v, 0L);
return v;
}
public long numActiveNormalAllocations()
{
java.lang.Throwable v;
io.netty.buffer.PoolArena v;
long v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = v.<io.netty.buffer.PoolArena: long allocationsNormal>;
v = v.<io.netty.buffer.PoolArena: long deallocationsNormal>;
v = v - v;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = staticinvoke <java.lang.Math: long max(long,long)>(v, 0L);
return v;
catch java.lang.Throwable from label to label with label;
}
public long numActiveHugeAllocations()
{
io.netty.buffer.PoolArena v;
long v, v, v, v;
v := @this: io.netty.buffer.PoolArena;
v = virtualinvoke v.<io.netty.buffer.PoolArena: long numHugeAllocations()>();
v = virtualinvoke v.<io.netty.buffer.PoolArena: long numHugeDeallocations()>();
v = v - v;
v = staticinvoke <java.lang.Math: long max(long,long)>(v, 0L);
return v;
}
public long numActiveBytes()
{
java.lang.Throwable v;
java.util.Iterator v;
io.netty.buffer.PoolArena v;
io.netty.util.internal.LongCounter v;
long v, v;
java.util.List v, v;
int v, v, v;
java.lang.Object v, v;
boolean v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter activeBytesHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = 0;
label:
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<io.netty.buffer.PoolChunkListMetric: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<io.netty.buffer.PoolChunkMetric: int chunkSize()>();
v = v + v;
goto label;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = staticinvoke <java.lang.Math: long max(long,long)>(0L, v);
return v;
catch java.lang.Throwable from label to label with label;
}
public long numPinnedBytes()
{
java.lang.Throwable v;
java.util.Iterator v;
io.netty.buffer.PoolArena v;
io.netty.util.internal.LongCounter v;
long v, v;
java.util.List v, v;
int v, v, v;
io.netty.buffer.PoolChunkMetric v;
java.lang.Object v;
boolean v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: io.netty.util.internal.LongCounter activeBytesHuge>;
v = interfaceinvoke v.<io.netty.util.internal.LongCounter: long value()>();
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = 0;
label:
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = v.<io.netty.buffer.PoolArena: java.util.List chunkListMetrics>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<io.netty.buffer.PoolChunkListMetric: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<io.netty.buffer.PoolChunk: int pinnedBytes()>();
v = v + v;
goto label;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
label:
v = staticinvoke <java.lang.Math: long max(long,long)>(0L, v);
return v;
catch java.lang.Throwable from label to label with label;
}
protected abstract io.netty.buffer.PoolChunk newChunk(int, int, int, int);
protected abstract io.netty.buffer.PoolChunk newUnpooledChunk(int);
protected abstract io.netty.buffer.PooledByteBuf newByteBuf(int);
protected abstract void memoryCopy(java.lang.Object, int, io.netty.buffer.PooledByteBuf, int);
protected abstract void destroyChunk(io.netty.buffer.PoolChunk);
public java.lang.String toString()
{
java.lang.Throwable v;
io.netty.buffer.PoolChunkList v, v, v, v, v, v;
io.netty.buffer.PoolSubpage[] v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.buffer.PoolArena v;
java.lang.StringBuilder v;
v := @this: io.netty.buffer.PoolArena;
virtualinvoke v.<io.netty.buffer.PoolArena: void lock()>();
label:
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
staticinvoke <io.netty.buffer.PoolArena: void appendPoolSubPages(java.lang.StringBuilder,io.netty.buffer.PoolSubpage[])>(v, v);
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String,java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String,java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String,java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String,java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String,java.lang.String,io.netty.buffer.PoolChunkList,java.lang.String)>(v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, 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[])>("Chunk(s) at 0~25%:\u0001\u0001\u0001Chunk(s) at 0~50%:\u0001\u0001\u0001Chunk(s) at 25~75%:\u0001\u0001\u0001Chunk(s) at 50~100%:\u0001\u0001\u0001Chunk(s) at 75~100%:\u0001\u0001\u0001Chunk(s) at 100%:\u0001\u0001\u0001small subpages:");
label:
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<io.netty.buffer.PoolArena: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
private static void appendPoolSubPages(java.lang.StringBuilder, io.netty.buffer.PoolSubpage[])
{
io.netty.buffer.PoolSubpage v, v, v;
int v, v;
io.netty.buffer.PoolSubpage[] v;
java.lang.StringBuilder v, v, v;
java.lang.String v;
v := @parameter: java.lang.StringBuilder;
v := @parameter: io.netty.buffer.PoolSubpage[];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
if v == v goto label;
v = <io.netty.util.internal.StringUtil: java.lang.String NEWLINE>;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(": ");
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
v = v.<io.netty.buffer.PoolSubpage: io.netty.buffer.PoolSubpage next>;
if v != v goto label;
label:
v = v + 1;
goto label;
label:
return;
}
protected final void finalize() throws java.lang.Throwable
{
java.lang.Throwable v;
io.netty.buffer.PoolChunkList v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.buffer.PoolSubpage[] v, v;
io.netty.buffer.PoolChunkList[] v, v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
label:
specialinvoke v.<java.lang.Object: void finalize()>();
label:
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
staticinvoke <io.netty.buffer.PoolArena: void destroyPoolSubPages(io.netty.buffer.PoolSubpage[])>(v);
v = newarray (io.netty.buffer.PoolChunkList)[6];
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
v[0] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
v[1] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
v[2] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
v[3] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
v[4] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
v[5] = v;
specialinvoke v.<io.netty.buffer.PoolArena: void destroyPoolChunkLists(io.netty.buffer.PoolChunkList[])>(v);
goto label;
label:
v := @caughtexception;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolSubpage[] smallSubpagePools>;
staticinvoke <io.netty.buffer.PoolArena: void destroyPoolSubPages(io.netty.buffer.PoolSubpage[])>(v);
v = newarray (io.netty.buffer.PoolChunkList)[6];
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList qInit>;
v[0] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q000>;
v[1] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q025>;
v[2] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q050>;
v[3] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q075>;
v[4] = v;
v = v.<io.netty.buffer.PoolArena: io.netty.buffer.PoolChunkList q100>;
v[5] = v;
specialinvoke v.<io.netty.buffer.PoolArena: void destroyPoolChunkLists(io.netty.buffer.PoolChunkList[])>(v);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private static void destroyPoolSubPages(io.netty.buffer.PoolSubpage[])
{
int v, v;
io.netty.buffer.PoolSubpage[] v;
io.netty.buffer.PoolSubpage v;
v := @parameter: io.netty.buffer.PoolSubpage[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
virtualinvoke v.<io.netty.buffer.PoolSubpage: void destroy()>();
v = v + 1;
goto label;
label:
return;
}
private transient void destroyPoolChunkLists(io.netty.buffer.PoolChunkList[])
{
io.netty.buffer.PoolArena v;
int v, v;
io.netty.buffer.PoolChunkList v;
io.netty.buffer.PoolChunkList[] v;
v := @this: io.netty.buffer.PoolArena;
v := @parameter: io.netty.buffer.PoolChunkList[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
virtualinvoke v.<io.netty.buffer.PoolChunkList: void destroy(io.netty.buffer.PoolArena)>(v);
v = v + 1;
goto label;
label:
return;
}
void lock()
{
java.util.concurrent.locks.ReentrantLock v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: java.util.concurrent.locks.ReentrantLock lock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
return;
}
void unlock()
{
java.util.concurrent.locks.ReentrantLock v;
io.netty.buffer.PoolArena v;
v := @this: io.netty.buffer.PoolArena;
v = v.<io.netty.buffer.PoolArena: java.util.concurrent.locks.ReentrantLock lock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return;
}
static void <clinit>()
{
java.lang.Class v;
boolean v, v, v;
v = class "Lio/netty/buffer/PoolArena;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.netty.buffer.PoolArena: boolean $assertionsDisabled> = v;
v = staticinvoke <io.netty.util.internal.PlatformDependent: boolean hasUnsafe()>();
<io.netty.buffer.PoolArena: boolean HAS_UNSAFE> = v;
return;
}
}