public final class nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment extends java.util.concurrent.locks.ReentrantLock
{
private final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager referenceManager;
private final int initialSize;
private volatile nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references;
private final java.util.concurrent.atomic.AtomicInteger count;
private int resizeThreshold;
final nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap this$0;
public void <init>(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap, int, int)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap;
v := @parameter: int;
v := @parameter: int;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap this$0> = v;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count> = v;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager createReferenceManager()>();
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager referenceManager> = v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int initialSize> = v;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] createReferenceArray(int)>(v);
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references> = v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int resizeThreshold> = v;
return;
}
public nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getReference(java.lang.Object, int, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v;
java.util.concurrent.atomic.AtomicInteger v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure v, v;
int v, v, v;
java.lang.Object v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Restructure WHEN_NECESSARY>;
if v != v goto label;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructureIfNecessary(boolean)>(0);
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
return null;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int getIndex(int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[])>(v, v);
v = v[v];
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference findInChain(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference,java.lang.Object,int)>(v, v, v);
return v;
}
public java.lang.Object doTask(int, java.lang.Object, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task)
{
java.lang.Throwable v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v, v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
boolean v, v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entries v;
java.lang.Object v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption v, v, v, v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: int;
v := @parameter: java.lang.Object;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task;
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESIZE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: boolean hasOption(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)>(v);
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_BEFORE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: boolean hasOption(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)>(v);
if v == 0 goto label;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructureIfNecessary(boolean)>(v);
label:
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption SKIP_IF_EMPTY>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: boolean hasOption(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)>(v);
if v == 0 goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: java.lang.Object execute(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entries)>(null, null, null);
return v;
label:
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void lock()>();
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int getIndex(int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[])>(v, v);
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = v[v];
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference findInChain(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference,java.lang.Object,int)>(v, 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:
v = staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment$lambda_doTask_0__623: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entries bootstrap$(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment,java.lang.Object,int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference,int)>(v, v, v, v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: java.lang.Object execute(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entries)>(v, v, v);
label:
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_AFTER>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: boolean hasOption(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)>(v);
if v == 0 goto label;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructureIfNecessary(boolean)>(v);
label:
return v;
label:
v := @caughtexception;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
v = <nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption RESTRUCTURE_AFTER>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Task: boolean hasOption(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$TaskOption)>(v);
if v == 0 goto label;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructureIfNecessary(boolean)>(v);
label:
throw v;
catch java.lang.Throwable from label to label with label;
}
public void clear()
{
java.lang.Throwable v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v;
float v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
return;
label:
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void lock()>();
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int initialSize>;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] createReferenceArray(int)>(v);
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references> = v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = lengthof v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap this$0>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: float getLoadFactor()>();
v = v * v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int resizeThreshold> = v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
label:
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void restructureIfNecessary(boolean)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: boolean;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v == 0 goto label;
if v <= 0 goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int resizeThreshold>;
if v < v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager referenceManager>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference pollForPurge()>();
if v != null goto label;
if v == 0 goto label;
label:
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void restructure(boolean,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference)>(v, v);
label:
return;
}
private void restructure(boolean, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
boolean v, v, v, v;
java.util.Set v;
float v, v;
java.lang.Throwable v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
java.util.HashSet v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap v;
int v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v, v, v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: boolean;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void lock()>();
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
if v == null goto label;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v;
label:
if v == null goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager referenceManager>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference pollForPurge()>();
goto label;
label:
v = interfaceinvoke v.<java.util.Set: int size()>();
v = v - v;
if v <= 0 goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int resizeThreshold>;
if v < v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = 0;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = lengthof v;
if v == 0 goto label;
if v == 0 goto label;
if v >= 1073741824 goto label;
v = v << 1;
v = 1;
label:
if v == 0 goto label;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] createReferenceArray(int)>(v);
goto label;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
label:
v = v;
v = 0;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = lengthof v;
if v >= v goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = v[v];
if v != 0 goto label;
v[v] = null;
label:
if v == null goto label;
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry get()>();
if v == null goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: int getHash()>();
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int getIndex(int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[])>(v, v);
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager referenceManager>;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: int getHash()>();
v = v[v];
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$ReferenceManager: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference createReference(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry,int,nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference)>(v, v, v);
v[v] = v;
label:
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getNext()>();
goto label;
label:
v = v + 1;
goto label;
label:
if v == 0 goto label;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references> = v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] references>;
v = lengthof v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap this$0>;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap: float getLoadFactor()>();
v = v * v;
v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: int resizeThreshold> = v;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = staticinvoke <java.lang.Math: int max(int,int)>(v, 0);
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(v);
label:
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference findInChain(nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference, java.lang.Object, int)
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry v;
int v, v;
java.lang.Object v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference;
v := @parameter: java.lang.Object;
v := @parameter: int;
v = v;
label:
if v == null goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: int getHash()>();
if v != v goto label;
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Entry get()>();
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;
return v;
label:
v = interfaceinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference getNext()>();
goto label;
label:
return null;
}
private nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] createReferenceArray(int)
{
int 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$Segment;
v := @parameter: int;
v = newarray (nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference)[v];
return v;
}
private int getIndex(int, nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[])
{
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[] v;
int v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v := @parameter: int;
v := @parameter: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Reference[];
v = lengthof v;
v = v - 1;
v = v & v;
return v;
}
public int getCount()
{
int v;
java.util.concurrent.atomic.AtomicInteger v;
nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.ConcurrentReferenceHashMap$Segment: java.util.concurrent.atomic.AtomicInteger count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
return v;
}
}