abstract class oadd.io.netty.buffer.SizeClasses extends java.lang.Object implements oadd.io.netty.buffer.SizeClassesMetric
{
static final int LOG2_QUANTUM;
private static final int LOG2_SIZE_CLASS_GROUP;
private static final int LOG2_MAX_LOOKUP_SIZE;
private static final int INDEX_IDX;
private static final int LOG2GROUP_IDX;
private static final int LOG2DELTA_IDX;
private static final int NDELTA_IDX;
private static final int PAGESIZE_IDX;
private static final int SUBPAGE_IDX;
private static final int LOG2_DELTA_LOOKUP_IDX;
private static final byte no;
private static final byte yes;
protected final int pageSize;
protected final int pageShifts;
protected final int chunkSize;
protected final int directMemoryCacheAlignment;
final int nSizes;
int nSubpages;
int nPSizes;
int smallMaxSizeIdx;
private int lookupMaxSize;
private final short[][] sizeClasses;
private final int[] pageIdx2sizeTab;
private final int[] sizeIdx2sizeTab;
private final int[] size2idxTab;
static final boolean $assertionsDisabled;
protected void <init>(int, int, int, int)
{
short[][] v;
oadd.io.netty.buffer.SizeClasses v;
int[] v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<oadd.io.netty.buffer.SizeClasses: int pageSize> = v;
v.<oadd.io.netty.buffer.SizeClasses: int pageShifts> = v;
v.<oadd.io.netty.buffer.SizeClasses: int chunkSize> = v;
v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment> = v;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int log2(int)>(v);
v = v + 1;
v = v - 4;
v = v << 2;
v = newmultiarray (short)[v][7];
v.<oadd.io.netty.buffer.SizeClasses: short[][] sizeClasses> = v;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int sizeClasses()>();
v.<oadd.io.netty.buffer.SizeClasses: int nSizes> = v;
v = v.<oadd.io.netty.buffer.SizeClasses: int nSizes>;
v = newarray (int)[v];
v.<oadd.io.netty.buffer.SizeClasses: int[] sizeIdx2sizeTab> = v;
v = v.<oadd.io.netty.buffer.SizeClasses: int nPSizes>;
v = newarray (int)[v];
v.<oadd.io.netty.buffer.SizeClasses: int[] pageIdx2sizeTab> = v;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] sizeIdx2sizeTab>;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] pageIdx2sizeTab>;
specialinvoke v.<oadd.io.netty.buffer.SizeClasses: void idx2SizeTab(int[],int[])>(v, v);
v = v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize>;
v = v >> 4;
v = newarray (int)[v];
v.<oadd.io.netty.buffer.SizeClasses: int[] size2idxTab> = v;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] size2idxTab>;
specialinvoke v.<oadd.io.netty.buffer.SizeClasses: void size2idxTab(int[])>(v);
return;
}
private int sizeClasses()
{
java.lang.AssertionError v;
oadd.io.netty.buffer.SizeClasses v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v = (int) -1;
v = v;
v = 0;
v = 0;
v = 4;
v = 0;
label:
if v >= 4 goto label;
v = v;
v = v + 1;
v = v;
v = v + 1;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int sizeClass(int,int,int,int)>(v, 4, 4, v);
goto label;
label:
v = 6;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int chunkSize>;
if v >= v goto label;
v = 1;
label:
if v > 4 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int chunkSize>;
if v >= v goto label;
v = v;
v = v + 1;
v = v;
v = v + 1;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int sizeClass(int,int,int,int)>(v, v, v, v);
v = v;
goto label;
label:
v = v + 1;
v = v + 1;
goto label;
label:
v = <oadd.io.netty.buffer.SizeClasses: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int chunkSize>;
if v == v goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
return v;
}
private int sizeClass(int, int, int, int)
{
short[][] v;
oadd.io.netty.buffer.SizeClasses v;
byte v, v, v, v;
boolean v, v;
short[] v;
short v, v, v;
int 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, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
if v < v goto label;
v = 1;
goto label;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = 1 << v;
v = 1 << v;
v = 1 << v;
v = v * v;
v = v + v;
v = v / v;
v = v * v;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
label:
if v != 0 goto label;
v = 0;
goto label;
label:
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int log2(int)>(v);
label:
v = v;
v = 1 << v;
if v >= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v + v;
if v != v goto label;
v = v + 1;
goto label;
label:
v = v;
label:
v = v;
if v != v goto label;
v = 1;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = v + 2;
if v >= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v < 12 goto label;
if v != 12 goto label;
if v != 0 goto label;
label:
v = v;
goto label;
label:
v = 0;
label:
v = newarray (short)[7];
v[0] = v;
v[1] = v;
v[2] = v;
v[3] = v;
v[4] = v;
v[5] = v;
v[6] = v;
v = v.<oadd.io.netty.buffer.SizeClasses: short[][] sizeClasses>;
v[v] = v;
v = 1 << v;
v = v << v;
v = v + v;
v = v[4];
if v != 1 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int nPSizes>;
v = v + 1;
v.<oadd.io.netty.buffer.SizeClasses: int nPSizes> = v;
label:
v = v[5];
if v != 1 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int nSubpages>;
v = v + 1;
v.<oadd.io.netty.buffer.SizeClasses: int nSubpages> = v;
v.<oadd.io.netty.buffer.SizeClasses: int smallMaxSizeIdx> = v;
label:
v = v[6];
if v == 0 goto label;
v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize> = v;
label:
return v;
}
private void idx2SizeTab(int[], int[])
{
short[][] v;
oadd.io.netty.buffer.SizeClasses v;
short v, v, v, v;
int[] v, v;
int v, v, v, v, v, v, v, v;
short[] v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int[];
v := @parameter: int[];
v = 0;
v = 0;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int nSizes>;
if v >= v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: short[][] sizeClasses>;
v = v[v];
v = v[1];
v = v[2];
v = v[3];
v = 1 << v;
v = v << v;
v = v + v;
v = v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment>;
if v <= 0 goto label;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int alignSize(int)>(v);
label:
v[v] = v;
v = v[4];
if v != 1 goto label;
v = v;
v = v + 1;
v[v] = v;
label:
v = v + 1;
goto label;
label:
return;
}
private void size2idxTab(int[])
{
short[][] v;
oadd.io.netty.buffer.SizeClasses v;
short v;
int[] v;
int v, v, v, v, v, v, v, v, v, v;
short[] v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int[];
v = 0;
v = 0;
v = 0;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize>;
if v > v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: short[][] sizeClasses>;
v = v[v];
v = v[2];
v = v - 4;
v = 1 << v;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize>;
if v > v goto label;
v = v;
v = v - 1;
if v <= 0 goto label;
v = v;
v = v + 1;
v[v] = v;
v = v + 1;
v = v << 4;
goto label;
label:
v = v + 1;
goto label;
label:
return;
}
public int sizeIdx2size(int)
{
oadd.io.netty.buffer.SizeClasses v;
int[] v;
int v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] sizeIdx2sizeTab>;
v = v[v];
return v;
}
public int sizeIdx2sizeCompute(int)
{
oadd.io.netty.buffer.SizeClasses v;
int v, v, v, v, v, v, v, v, v, v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = v >> 2;
v = v & 3;
if v != 0 goto label;
v = 0;
goto label;
label:
v = 32 << v;
label:
v = v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = v;
label:
v = v + 4;
v = v - 1;
v = v + 1;
v = v << v;
v = v + v;
return v;
}
public long pageIdx2size(int)
{
oadd.io.netty.buffer.SizeClasses v;
int[] v;
int v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] pageIdx2sizeTab>;
v = v[v];
return v;
}
public long pageIdx2sizeCompute(int)
{
long v, v, v, v;
oadd.io.netty.buffer.SizeClasses v;
int v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = v >> 2;
v = v & 3;
if v != 0 goto label;
v = 0L;
goto label;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = v + 2;
v = v - 1;
v = 1L << v;
v = v << v;
label:
v = v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = v;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = v + v;
v = v - 1;
v = v + 1;
v = v << v;
v = v + v;
return v;
}
public int size2SizeIdx(int)
{
oadd.io.netty.buffer.SizeClasses v;
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
if v != 0 goto label;
return 0;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int chunkSize>;
if v <= v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int nSizes>;
return v;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment>;
if v <= 0 goto label;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int alignSize(int)>(v);
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize>;
if v > v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] size2idxTab>;
v = v - 1;
v = v >> 4;
v = v[v];
return v;
label:
v = v << 1;
v = v - 1;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int log2(int)>(v);
if v >= 7 goto label;
v = 0;
goto label;
label:
v = v - 6;
label:
v = v << 2;
if v >= 7 goto label;
v = 4;
goto label;
label:
v = v - 2;
v = v - 1;
label:
v = (int) -1;
v = v << v;
v = v - 1;
v = v & v;
v = v >> v;
v = v & 3;
v = v + v;
return v;
}
public int pages2pageIdx(int)
{
int v, v;
oadd.io.netty.buffer.SizeClasses v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int pages2pageIdxCompute(int,boolean)>(v, 0);
return v;
}
public int pages2pageIdxFloor(int)
{
int v, v;
oadd.io.netty.buffer.SizeClasses v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int pages2pageIdxCompute(int,boolean)>(v, 1);
return v;
}
private int pages2pageIdxCompute(int, boolean)
{
oadd.io.netty.buffer.SizeClasses v;
int[] v;
boolean v;
int 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, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v := @parameter: boolean;
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = v << v;
v = v.<oadd.io.netty.buffer.SizeClasses: int chunkSize>;
if v <= v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int nPSizes>;
return v;
label:
v = v << 1;
v = v - 1;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int log2(int)>(v);
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = 2 + v;
if v >= v goto label;
v = 0;
goto label;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = 2 + v;
v = v - v;
label:
v = v << 2;
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = 2 + v;
v = v + 1;
if v >= v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
goto label;
label:
v = v - 2;
v = v - 1;
label:
v = (int) -1;
v = v << v;
v = v - 1;
v = v & v;
v = v >> v;
v = v & 3;
v = v + v;
if v == 0 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] pageIdx2sizeTab>;
v = v[v];
v = v.<oadd.io.netty.buffer.SizeClasses: int pageShifts>;
v = v << v;
if v <= v goto label;
v = v - 1;
label:
return v;
}
private int alignSize(int)
{
oadd.io.netty.buffer.SizeClasses v;
int v, v, v, v, v, v, v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
v = v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment>;
v = v - 1;
v = v & v;
if v != 0 goto label;
v = v;
goto label;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment>;
v = v + v;
v = v - v;
label:
return v;
}
public int normalizeSize(int)
{
java.lang.AssertionError v;
oadd.io.netty.buffer.SizeClasses v;
int[] v, v, v;
int v, v, v, v, v, v, v, v, v, v;
boolean v;
v := @this: oadd.io.netty.buffer.SizeClasses;
v := @parameter: int;
if v != 0 goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] sizeIdx2sizeTab>;
v = v[0];
return v;
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int directMemoryCacheAlignment>;
if v <= 0 goto label;
v = specialinvoke v.<oadd.io.netty.buffer.SizeClasses: int alignSize(int)>(v);
label:
v = v.<oadd.io.netty.buffer.SizeClasses: int lookupMaxSize>;
if v > v goto label;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] sizeIdx2sizeTab>;
v = v.<oadd.io.netty.buffer.SizeClasses: int[] size2idxTab>;
v = v - 1;
v = v >> 4;
v = v[v];
v = v[v];
v = <oadd.io.netty.buffer.SizeClasses: boolean $assertionsDisabled>;
if v != 0 goto label;
v = staticinvoke <oadd.io.netty.buffer.SizeClasses: int normalizeSizeCompute(int)>(v);
if v == v goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
return v;
label:
v = staticinvoke <oadd.io.netty.buffer.SizeClasses: int normalizeSizeCompute(int)>(v);
return v;
}
private static int normalizeSizeCompute(int)
{
int v, v, v, v, v, v, v, v, v, v, v, v;
v := @parameter: int;
v = v << 1;
v = v - 1;
v = staticinvoke <oadd.io.netty.buffer.PoolThreadCache: int log2(int)>(v);
if v >= 7 goto label;
v = 4;
goto label;
label:
v = v - 2;
v = v - 1;
label:
v = 1 << v;
v = v - 1;
v = v + v;
v = (int) -1;
v = v ^ v;
v = v & v;
return v;
}
static void <clinit>()
{
java.lang.Class v;
boolean v, v;
v = class "Loadd/io/netty/buffer/SizeClasses;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<oadd.io.netty.buffer.SizeClasses: boolean $assertionsDisabled> = v;
return;
}
}