final class org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool extends java.lang.Object implements org.glassfish.grizzly.memory.ThreadLocalPool
{
private byte[] pool;
private int leftPos;
private int rightPos;
private int start;
private int end;
private final java.nio.ByteBuffer[] byteBufferCache;
private int byteBufferCacheSize;
private final org.glassfish.grizzly.memory.HeapMemoryManager mm;
public void <init>(org.glassfish.grizzly.memory.HeapMemoryManager)
{
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
org.glassfish.grizzly.memory.HeapMemoryManager v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapMemoryManager;
specialinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: void <init>(org.glassfish.grizzly.memory.HeapMemoryManager,int)>(v, 8);
return;
}
public void <init>(org.glassfish.grizzly.memory.HeapMemoryManager, int)
{
java.nio.ByteBuffer[] v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
org.glassfish.grizzly.memory.HeapMemoryManager v;
int v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapMemoryManager;
v := @parameter: int;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize> = 0;
v = newarray (java.nio.ByteBuffer)[v];
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache> = v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: org.glassfish.grizzly.memory.HeapMemoryManager mm> = v;
return;
}
public org.glassfish.grizzly.memory.HeapBuffer allocate(int)
{
byte[] v;
java.nio.ByteBuffer[] v, v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
java.nio.ByteBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$TrimmableHeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager v;
int v, v, v, v, v, v, v, v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: int;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: org.glassfish.grizzly.memory.HeapMemoryManager mm>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager: org.glassfish.grizzly.memory.HeapMemoryManager$TrimmableHeapBuffer createTrimAwareBuffer(byte[],int,int)>(v, v, v);
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
if v <= 0 goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
v = v - 1;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize> = v;
v = v[v];
v.<org.glassfish.grizzly.memory.HeapBuffer: java.nio.ByteBuffer byteBuffer> = v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
v[v] = null;
label:
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v + v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
return v;
}
public org.glassfish.grizzly.memory.HeapBuffer reallocate(org.glassfish.grizzly.memory.HeapBuffer, int)
{
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v, v, v, v;
boolean v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v := @parameter: int;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: boolean isLastAllocated(org.glassfish.grizzly.memory.HeapBuffer)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int remaining()>();
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = v - v;
if v < v goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v + v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
v.<org.glassfish.grizzly.memory.HeapBuffer: int cap> = v;
v.<org.glassfish.grizzly.memory.HeapBuffer: int lim> = v;
return v;
label:
return null;
}
public boolean release(org.glassfish.grizzly.memory.HeapBuffer)
{
byte[] v, v;
java.nio.ByteBuffer v, v;
boolean v, v, v, v, v, v, v;
java.nio.ByteBuffer[] v, v;
org.glassfish.grizzly.memory.HeapBuffer v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: java.nio.ByteBuffer byteBuffer>;
if v == null goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache>;
v = lengthof v;
if v >= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: boolean isLastAllocated(org.glassfish.grizzly.memory.HeapBuffer)>(v);
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = v - v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
if v != v goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int start>;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos> = v;
label:
v = 1;
goto label;
label:
v = specialinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: boolean isReleasableLeft(org.glassfish.grizzly.memory.HeapBuffer)>(v);
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = v + v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos> = v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
if v != v goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int start>;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos> = v;
label:
v = 1;
goto label;
label:
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: boolean wantReset(int)>(v);
if v == 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: void reset(org.glassfish.grizzly.memory.HeapBuffer)>(v);
v = 1;
goto label;
label:
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: byte[] heap>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = 0;
label:
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
v = v + 1;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize> = v;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: java.nio.ByteBuffer byteBuffer>;
v[v] = v;
label:
return v;
}
public void reset(org.glassfish.grizzly.memory.HeapBuffer)
{
byte[] v;
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: byte[] heap>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int offset>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: void reset(byte[],int,int)>(v, v, v);
return;
}
public void reset(byte[], int, int)
{
byte[] v, v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
if v == v goto label;
specialinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: void clearByteBufferCache()>();
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool> = v;
label:
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int start> = v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos> = v;
v = v + v;
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int end> = v;
return;
}
public boolean wantReset(int)
{
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v;
boolean v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: int;
v = virtualinvoke v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int remaining()>();
v = v - v;
if v <= 1024 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isLastAllocated(org.glassfish.grizzly.memory.HeapBuffer)
{
byte[] v, v;
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v, v;
boolean v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: byte[] heap>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
if v != v goto label;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int offset>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = v + v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean isReleasableLeft(org.glassfish.grizzly.memory.HeapBuffer)
{
byte[] v, v;
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v;
boolean v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: byte[] heap>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
if v != v goto label;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int offset>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int leftPos>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.glassfish.grizzly.memory.HeapBuffer reduceLastAllocated(org.glassfish.grizzly.memory.HeapBuffer)
{
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
org.glassfish.grizzly.monitoring.DefaultMonitoringConfig v;
org.glassfish.grizzly.memory.HeapMemoryManager v;
int v, v, v, v, v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v := @parameter: org.glassfish.grizzly.memory.HeapBuffer;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int offset>;
v = v.<org.glassfish.grizzly.memory.HeapBuffer: int cap>;
v = v + v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: org.glassfish.grizzly.memory.HeapMemoryManager mm>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig monitoringConfig>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v - v;
staticinvoke <org.glassfish.grizzly.memory.ProbeNotifier: void notifyBufferReleasedToPool(org.glassfish.grizzly.monitoring.DefaultMonitoringConfig,int)>(v, v);
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos> = v;
return null;
}
public int remaining()
{
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int end>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v - v;
return v;
}
public boolean hasRemaining()
{
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v;
boolean v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int end>;
if v >= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public java.lang.String toString()
{
byte[] v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
int v, v, v;
java.lang.String v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: byte[] pool>;
v = lengthof v;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int rightPos>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int end>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int,int)>(v, v, 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[])>("(pool=\u pos=\u cap=\u)");
return v;
}
private void clearByteBufferCache()
{
int v;
java.nio.ByteBuffer[] v;
org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool v;
v := @this: org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: java.nio.ByteBuffer[] byteBufferCache>;
v = v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize>;
staticinvoke <java.util.Arrays: void fill(java.lang.Object[],int,int,java.lang.Object)>(v, 0, v, null);
v.<org.glassfish.grizzly.memory.HeapMemoryManager$HeapBufferThreadLocalPool: int byteBufferCacheSize> = 0;
return;
}
}