final class oadd.com.google.common.collect.CompactHashing extends java.lang.Object
{
static final byte UNSET;
private static final int HASH_TABLE_BITS_MAX_BITS;
static final int MODIFICATION_COUNT_INCREMENT;
static final int HASH_TABLE_BITS_MASK;
static final int MAX_SIZE;
static final int DEFAULT_SIZE;
private static final int MIN_HASH_TABLE_SIZE;
private static final int BYTE_MAX_SIZE;
private static final int BYTE_MASK;
private static final int SHORT_MAX_SIZE;
private static final int SHORT_MASK;
private void <init>()
{
oadd.com.google.common.collect.CompactHashing v;
v := @this: oadd.com.google.common.collect.CompactHashing;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
static int tableSize(int)
{
int v, v, v, v;
v := @parameter: int;
v = v + 1;
v = staticinvoke <oadd.com.google.common.collect.Hashing: int closedTableSize(int,double)>(v, 1.0);
v = staticinvoke <java.lang.Math: int max(int,int)>(4, v);
return v;
}
static java.lang.Object createTable(int)
{
byte[] v;
java.lang.IllegalArgumentException v;
int[] v;
int v, v;
java.lang.StringBuilder v;
java.lang.String v;
short[] v;
v := @parameter: int;
if v < 2 goto label;
if v > 1073741824 goto label;
v = staticinvoke <java.lang.Integer: int highestOneBit(int)>(v);
if v == v goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(52);
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[])>("must be power of 2 between 2^1 and 2^30: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
if v > 256 goto label;
v = newarray (byte)[v];
return v;
label:
if v > 65536 goto label;
v = newarray (short)[v];
return v;
label:
v = newarray (int)[v];
return v;
}
static void tableClear(java.lang.Object)
{
java.lang.Object v;
boolean v, v;
v := @parameter: java.lang.Object;
v = v instanceof byte[];
if v == 0 goto label;
staticinvoke <java.util.Arrays: void fill(byte[],byte)>(v, 0);
goto label;
label:
v = v instanceof short[];
if v == 0 goto label;
staticinvoke <java.util.Arrays: void fill(short[],short)>(v, 0);
goto label;
label:
staticinvoke <java.util.Arrays: void fill(int[],int)>(v, 0);
label:
return;
}
static int tableGet(java.lang.Object, int)
{
short v, v;
byte v;
int v, v, v, v;
java.lang.Object v;
boolean v, v;
v := @parameter: java.lang.Object;
v := @parameter: int;
v = v instanceof byte[];
if v == 0 goto label;
v = v[v];
v = v & 255;
return v;
label:
v = v instanceof short[];
if v == 0 goto label;
v = v[v];
v = (int) 65535;
v = v & v;
return v;
label:
v = v[v];
return v;
}
static void tableSet(java.lang.Object, int, int)
{
int v, v;
java.lang.Object v;
boolean v, v;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: int;
v = v instanceof byte[];
if v == 0 goto label;
v[v] = v;
goto label;
label:
v = v instanceof short[];
if v == 0 goto label;
v[v] = v;
goto label;
label:
v[v] = v;
label:
return;
}
static int newCapacity(int)
{
byte v;
int v, v, v;
v := @parameter: int;
if v >= 32 goto label;
v = 4;
goto label;
label:
v = 2;
label:
v = v + 1;
v = v * v;
return v;
}
static int getHashPrefix(int, int)
{
int v, v, v, v, v;
v := @parameter: int;
v := @parameter: int;
v = (int) -1;
v = v ^ v;
v = v & v;
return v;
}
static int getNext(int, int)
{
int v, v, v;
v := @parameter: int;
v := @parameter: int;
v = v & v;
return v;
}
static int maskCombine(int, int, int)
{
int v, v, v, v, v, v, v, v;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v = (int) -1;
v = v ^ v;
v = v & v;
v = v & v;
v = v | v;
return v;
}
static int remove(java.lang.Object, java.lang.Object, int, java.lang.Object, int[], java.lang.Object[], java.lang.Object[])
{
java.lang.Object[] v, v;
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v;
java.lang.Object v, v, v, v, v;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: java.lang.Object;
v := @parameter: int[];
v := @parameter: java.lang.Object[];
v := @parameter: java.lang.Object[];
v = staticinvoke <oadd.com.google.common.collect.Hashing: int smearedHash(java.lang.Object)>(v);
v = v & v;
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int tableGet(java.lang.Object,int)>(v, v);
if v != 0 goto label;
v = (int) -1;
return v;
label:
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int getHashPrefix(int,int)>(v, v);
v = (int) -1;
v = v;
label:
v = v - 1;
v = v[v];
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int getHashPrefix(int,int)>(v, v);
if v != v goto label;
v = v[v];
v = staticinvoke <oadd.com.google.common.base.Objects: boolean equal(java.lang.Object,java.lang.Object)>(v, v);
if v == 0 goto label;
if v == null goto label;
v = v[v];
v = staticinvoke <oadd.com.google.common.base.Objects: boolean equal(java.lang.Object,java.lang.Object)>(v, v);
if v == 0 goto label;
label:
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int getNext(int,int)>(v, v);
v = (int) -1;
if v != v goto label;
staticinvoke <oadd.com.google.common.collect.CompactHashing: void tableSet(java.lang.Object,int,int)>(v, v, v);
goto label;
label:
v = v[v];
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int maskCombine(int,int,int)>(v, v, v);
v[v] = v;
label:
return v;
label:
v = v;
v = staticinvoke <oadd.com.google.common.collect.CompactHashing: int getNext(int,int)>(v, v);
if v != 0 goto label;
v = (int) -1;
return v;
}
}