class com.fasterxml.jackson.core.util.ThreadLocalBufferManager extends java.lang.Object
{
private final java.lang.Object RELEASE_LOCK;
private final java.util.Map _trackedRecyclers;
private final java.lang.ref.ReferenceQueue _refQueue;
void <init>()
{
com.fasterxml.jackson.core.util.ThreadLocalBufferManager v;
java.util.concurrent.ConcurrentHashMap v;
java.lang.Object v;
java.lang.ref.ReferenceQueue v;
v := @this: com.fasterxml.jackson.core.util.ThreadLocalBufferManager;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.lang.Object RELEASE_LOCK> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.util.Map _trackedRecyclers> = v;
v = new java.lang.ref.ReferenceQueue;
specialinvoke v.<java.lang.ref.ReferenceQueue: void <init>()>();
v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.lang.ref.ReferenceQueue _refQueue> = v;
return;
}
public static com.fasterxml.jackson.core.util.ThreadLocalBufferManager instance()
{
com.fasterxml.jackson.core.util.ThreadLocalBufferManager v;
v = <com.fasterxml.jackson.core.util.ThreadLocalBufferManager$ThreadLocalBufferManagerHolder: com.fasterxml.jackson.core.util.ThreadLocalBufferManager manager>;
return v;
}
public int releaseBuffers()
{
java.lang.Throwable v;
com.fasterxml.jackson.core.util.ThreadLocalBufferManager v;
java.util.Iterator v;
java.util.Set v;
java.util.Map v, v;
int v;
java.lang.Object v, v;
boolean v;
v := @this: com.fasterxml.jackson.core.util.ThreadLocalBufferManager;
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.lang.Object RELEASE_LOCK>;
entermonitor v;
label:
v = 0;
specialinvoke v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: void removeSoftRefsClearedByGc()>();
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.util.Map _trackedRecyclers>;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<java.lang.ref.SoftReference: void clear()>();
v = v + 1;
goto label;
label:
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.util.Map _trackedRecyclers>;
interfaceinvoke v.<java.util.Map: void clear()>();
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public java.lang.ref.SoftReference wrapAndTrack(com.fasterxml.jackson.core.util.BufferRecycler)
{
com.fasterxml.jackson.core.util.ThreadLocalBufferManager v;
java.util.Map v;
java.lang.Boolean v;
java.lang.ref.SoftReference v;
com.fasterxml.jackson.core.util.BufferRecycler v;
java.lang.ref.ReferenceQueue v;
v := @this: com.fasterxml.jackson.core.util.ThreadLocalBufferManager;
v := @parameter: com.fasterxml.jackson.core.util.BufferRecycler;
v = new java.lang.ref.SoftReference;
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.lang.ref.ReferenceQueue _refQueue>;
specialinvoke v.<java.lang.ref.SoftReference: void <init>(java.lang.Object,java.lang.ref.ReferenceQueue)>(v, v);
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.util.Map _trackedRecyclers>;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(1);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
specialinvoke v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: void removeSoftRefsClearedByGc()>();
return v;
}
private void removeSoftRefsClearedByGc()
{
java.lang.ref.Reference v;
com.fasterxml.jackson.core.util.ThreadLocalBufferManager v;
java.util.Map v;
java.lang.ref.ReferenceQueue v;
v := @this: com.fasterxml.jackson.core.util.ThreadLocalBufferManager;
label:
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.lang.ref.ReferenceQueue _refQueue>;
v = virtualinvoke v.<java.lang.ref.ReferenceQueue: java.lang.ref.Reference poll()>();
if v == null goto label;
v = v.<com.fasterxml.jackson.core.util.ThreadLocalBufferManager: java.util.Map _trackedRecyclers>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
goto label;
label:
return;
}
}