final class com.github.benmanes.caffeine.cache.FrequencySketch extends java.lang.Object
{
static final long RESET_MASK;
static final long ONE_MASK;
int sampleSize;
int blockMask;
long[] table;
int size;
public void <init>()
{
com.github.benmanes.caffeine.cache.FrequencySketch v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public void ensureCapacity(long)
{
long v, v;
long[] v, v, v, v;
byte v, v;
int v, v, v, v, v, v, v, v;
com.github.benmanes.caffeine.cache.FrequencySketch v;
boolean v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v := @parameter: long;
v = v cmp 0L;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.github.benmanes.caffeine.cache.Caffeine: void requireArgument(boolean)>(v);
v = staticinvoke <java.lang.Math: long min(long,long)>(v, 1073741823L);
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
if v == null goto label;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = lengthof v;
if v < v goto label;
return;
label:
v = staticinvoke <com.github.benmanes.caffeine.cache.Caffeine: int ceilingPowerOfTwo(int)>(v);
v = staticinvoke <java.lang.Math: int max(int,int)>(v, 8);
v = newarray (long)[v];
v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table> = v;
v = v cmp 0L;
if v != 0 goto label;
v = 10;
goto label;
label:
v = 10 * v;
label:
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int sampleSize> = v;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = lengthof v;
v = v >>> 3;
v = v - 1;
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int blockMask> = v;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int sampleSize>;
if v > 0 goto label;
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int sampleSize> = 2147483647;
label:
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int size> = 0;
return;
}
public boolean isNotInitialized()
{
com.github.benmanes.caffeine.cache.FrequencySketch v;
long[] v;
boolean v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public int frequency(java.lang.Object)
{
long v, v, v;
long[] 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;
com.github.benmanes.caffeine.cache.FrequencySketch v;
boolean v;
java.lang.Object v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean isNotInitialized()>();
if v == 0 goto label;
return 0;
label:
v = newarray (int)[4];
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <com.github.benmanes.caffeine.cache.FrequencySketch: int spread(int)>(v);
v = staticinvoke <com.github.benmanes.caffeine.cache.FrequencySketch: int rehash(int)>(v);
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int blockMask>;
v = v & v;
v = v << 3;
v = 0;
label:
if v >= 4 goto label;
v = v << 3;
v = v >>> v;
v = v >>> 1;
v = v & 15;
v = v & 1;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v + v;
v = v << 1;
v = v + v;
v = v[v];
v = v << 2;
v = v >>> v;
v = v & 15L;
v[v] = v;
v = v + 1;
goto label;
label:
v = v[0];
v = v[1];
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = v[2];
v = v[3];
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
return v;
}
public void increment(java.lang.Object)
{
int[] v;
boolean v, v, v, v, v, 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;
com.github.benmanes.caffeine.cache.FrequencySketch v;
java.lang.Object v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean isNotInitialized()>();
if v == 0 goto label;
return;
label:
v = newarray (int)[8];
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <com.github.benmanes.caffeine.cache.FrequencySketch: int spread(int)>(v);
v = staticinvoke <com.github.benmanes.caffeine.cache.FrequencySketch: int rehash(int)>(v);
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int blockMask>;
v = v & v;
v = v << 3;
v = 0;
label:
if v >= 4 goto label;
v = v << 3;
v = v >>> v;
v = v >>> 1;
v = v & 15;
v[v] = v;
v = v & 1;
v = v + 4;
v = v + v;
v = v << 1;
v = v + v;
v[v] = v;
v = v + 1;
goto label;
label:
v = v[4];
v = v[0];
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean incrementAt(int,int)>(v, v);
v = v[5];
v = v[1];
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean incrementAt(int,int)>(v, v);
v = v | v;
v = v[6];
v = v[2];
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean incrementAt(int,int)>(v, v);
v = v | v;
v = v[7];
v = v[3];
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: boolean incrementAt(int,int)>(v, v);
v = v | v;
if v == 0 goto label;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int size>;
v = v + 1;
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int size> = v;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int sampleSize>;
if v != v goto label;
virtualinvoke v.<com.github.benmanes.caffeine.cache.FrequencySketch: void reset()>();
label:
return;
}
static int spread(int)
{
int v, v, v, v, v, v, v, v, v;
v := @parameter: int;
v = v >>> 17;
v = v ^ v;
v = v * -312814405;
v = v >>> 11;
v = v ^ v;
v = v * -1404298415;
v = v >>> 15;
v = v ^ v;
return v;
}
static int rehash(int)
{
int v, v, v, v;
v := @parameter: int;
v = v * 830770091;
v = v >>> 14;
v = v ^ v;
return v;
}
boolean incrementAt(int, int)
{
long v, v, v, v, v, v;
long[] v, v;
byte v;
int v, v, v;
com.github.benmanes.caffeine.cache.FrequencySketch v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v := @parameter: int;
v := @parameter: int;
v = v << 2;
v = 15L << v;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v[v];
v = v & v;
v = v cmp v;
if v == 0 goto label;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v[v];
v = 1L << v;
v = v + v;
v[v] = v;
return 1;
label:
return 0;
}
void reset()
{
long v, v, v, v, v;
long[] v, v, v, v;
int v, v, v, v, v, v, v, v;
com.github.benmanes.caffeine.cache.FrequencySketch v;
v := @this: com.github.benmanes.caffeine.cache.FrequencySketch;
v = 0;
v = 0;
label:
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = lengthof v;
if v >= v goto label;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v[v];
v = v & 1229782938247303441L;
v = staticinvoke <java.lang.Long: int bitCount(long)>(v);
v = v + v;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: long[] table>;
v = v[v];
v = v >>> 1;
v = v & 8608480567731124087L;
v[v] = v;
v = v + 1;
goto label;
label:
v = v.<com.github.benmanes.caffeine.cache.FrequencySketch: int size>;
v = v >>> 2;
v = v - v;
v = v >>> 1;
v.<com.github.benmanes.caffeine.cache.FrequencySketch: int size> = v;
return;
}
}