public class nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap extends java.util.AbstractMap implements java.util.concurrent.ConcurrentMap
{
private static final float DEFAULT_LOAD_FACTOR;
private static final int DEFAULT_CONCURRENCY_LEVEL;
private static final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType DEFAULT_REFERENCE_TYPE;
private static final int MAXIMUM_CONCURRENCY_LEVEL;
private static final int MAXIMUM_SEGMENT_SIZE;
private final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments;
private final float loadFactor;
private final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType referenceType;
private final int shift;
private volatile java.util.Set entrySet;
public void <init>(int)
{
int v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: int;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType DEFAULT_REFERENCE_TYPE>;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: void <init>(int,float,int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType)>(v, 0.75F, 16, v);
return;
}
public void <init>(int, float, int, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType)
{
long v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
byte v;
int v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
boolean v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType v;
float v, v, v;
java.lang.Object v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: int;
v := @parameter: float;
v := @parameter: int;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType;
specialinvoke v.<java.util.AbstractMap: void <init>()>();
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.Assert: void isTrue(boolean,java.lang.String)>(v, "Initial capacity must not be negative");
v = v cmpl 0.0F;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.Assert: void isTrue(boolean,java.lang.String)>(v, "Load factor must be positive");
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.Assert: void isTrue(boolean,java.lang.String)>(v, "Concurrency level must be positive");
staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "Reference type must not be null");
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: float loadFactor> = v;
v = staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int calculateShift(int,int)>(v, 65536);
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int shift> = v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int shift>;
v = 1 << v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType referenceType> = v;
v = v + v;
v = v - 1L;
v = v / v;
v = staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int calculateShift(int,int)>(v, 1073741824);
v = 1 << v;
v = staticinvoke <java.lang.reflect.Array: java.lang.Object newInstance(java.lang.Class,int)>(class "Lnl/basjes/parse/useragent/utils/springframework/util/ConcurrentReferenceHashMap$Segment;", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: float getLoadFactor()>();
v = v * v;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,int,int)>(v, v, v);
v[v] = v;
v = v + 1;
goto label;
label:
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments> = v;
return;
}
protected final float getLoadFactor()
{
float v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: float loadFactor>;
return v;
}
protected nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager createReferenceManager()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap)>(v);
return v;
}
protected int getHash(java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Object v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
if v == null goto label;
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
goto label;
label:
v = 0;
label:
v = v << 15;
v = (int) -12931;
v = v ^ v;
v = v + v;
v = v >>> 10;
v = v ^ v;
v = v << 3;
v = v + v;
v = v >>> 6;
v = v ^ v;
v = v << 2;
v = v << 14;
v = v + v;
v = v + v;
v = v >>> 16;
v = v ^ v;
return v;
}
public java.lang.Object get(java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure v;
java.lang.Object v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure WHEN_NECESSARY>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)>(v, v);
if v == null goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry get()>();
goto label;
label:
v = null;
label:
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry: java.lang.Object getValue()>();
goto label;
label:
v = null;
label:
return v;
}
public java.lang.Object getOrDefault(java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure v;
java.lang.Object v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure WHEN_NECESSARY>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)>(v, v);
if v == null goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry get()>();
goto label;
label:
v = null;
label:
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry: java.lang.Object getValue()>();
goto label;
label:
v = v;
label:
return v;
}
public boolean containsKey(java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure v;
java.lang.Object v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure WHEN_NECESSARY>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)>(v, v);
if v == null goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry get()>();
goto label;
label:
v = null;
label:
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry: java.lang.Object getKey()>();
v = staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.ObjectUtils: boolean nullSafeEquals(java.lang.Object,java.lang.Object)>(v, v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure v;
int v;
java.lang.Object v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int getHash(java.lang.Object)>(v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment getSegmentForHash(int)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object,int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)>(v, v, v);
return v;
}
public java.lang.Object put(java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Object v, v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object put(java.lang.Object,java.lang.Object,boolean)>(v, v, 1);
return v;
}
public java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Object v, v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object put(java.lang.Object,java.lang.Object,boolean)>(v, v, 0);
return v;
}
private java.lang.Object put(java.lang.Object, java.lang.Object, boolean)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$1 v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[] v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Object v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v := @parameter: boolean;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$1;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)[2];
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_BEFORE>;
v[0] = v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESIZE>;
v[1] = v;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$1: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[],boolean,java.lang.Object)>(v, v, v, v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object doTask(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v);
return v;
}
public java.lang.Object remove(java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$2 v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[] v;
java.lang.Object v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$2;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)[2];
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_AFTER>;
v[0] = v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption SKIP_IF_EMPTY>;
v[1] = v;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$2: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[])>(v, v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object doTask(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v);
return v;
}
public boolean remove(java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$3 v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[] v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Boolean v;
java.lang.Object v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$3;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)[2];
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_AFTER>;
v[0] = v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption SKIP_IF_EMPTY>;
v[1] = v;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$3: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[],java.lang.Object)>(v, v, v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object doTask(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v);
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
return v;
}
public boolean replace(java.lang.Object, java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$4 v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[] v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Boolean v;
java.lang.Object v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$4;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)[2];
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_BEFORE>;
v[0] = v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption SKIP_IF_EMPTY>;
v[1] = v;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$4: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[],java.lang.Object,java.lang.Object)>(v, v, v, v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object doTask(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v);
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
return v;
}
public java.lang.Object replace(java.lang.Object, java.lang.Object)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$5 v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[] v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
java.lang.Object v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$5;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)[2];
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_BEFORE>;
v[0] = v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption SKIP_IF_EMPTY>;
v[1] = v;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$5: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption[],java.lang.Object)>(v, v, v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.lang.Object doTask(java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v);
return v;
}
public void clear()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void clear()>();
v = v + 1;
goto label;
label:
return;
}
public void purgeUnreferencedEntries()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructureIfNecessary(boolean)>(0);
v = v + 1;
goto label;
label:
return;
}
public int size()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = 0;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int getCount()>();
v = v + v;
v = v + 1;
goto label;
label:
return v;
}
public boolean isEmpty()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int getCount()>();
if v <= 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
public java.util.Set entrySet()
{
java.util.Set v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$EntrySet v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.util.Set entrySet>;
if v != null goto label;
v = new nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$EntrySet;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$EntrySet: void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap)>(v);
v = v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: java.util.Set entrySet> = v;
label:
return v;
}
private java.lang.Object doTask(java.lang.Object, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task v;
int v;
java.lang.Object v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: java.lang.Object;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int getHash(java.lang.Object)>(v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment getSegmentForHash(int)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.lang.Object doTask(int,java.lang.Object,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)>(v, v, v);
return v;
}
private nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment getSegmentForHash(int)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v, v, v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: int;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: int shift>;
v = 32 - v;
v = v >>> v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment[] segments>;
v = lengthof v;
v = v - 1;
v = v & v;
v = v[v];
return v;
}
protected static int calculateShift(int, int)
{
int v, v, v, v;
v := @parameter: int;
v := @parameter: int;
v = 0;
v = 1;
label:
if v >= v goto label;
if v >= v goto label;
v = v << 1;
v = v + 1;
goto label;
label:
return v;
}
static void <clinit>()
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType v;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType SOFT>;
<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceType DEFAULT_REFERENCE_TYPE> = v;
return;
}
}