final class org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer extends org.glassfish.grizzly.memory.HeapBuffer implements org.glassfish.grizzly.memory.PooledMemoryManager$PoolBuffer
{
private final org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice owner;
boolean free;
protected final java.util.concurrent.atomic.AtomicInteger shareCount;
protected final org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer source;
private void <init>(byte[], org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice)
{
byte[] v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
java.util.concurrent.atomic.AtomicInteger v;
int v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: byte[];
v := @parameter: org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice;
v = lengthof v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void <init>(byte[],int,int,org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice,org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer,java.util.concurrent.atomic.AtomicInteger)>(v, 0, v, v, null, v);
return;
}
private void <init>(byte[], int, int, org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice, org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer, java.util.concurrent.atomic.AtomicInteger)
{
byte[] v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v, v, v;
java.lang.IllegalArgumentException v, v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice;
v := @parameter: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<org.glassfish.grizzly.memory.HeapBuffer: void <init>(byte[],int,int)>(v, v, v);
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("heap cannot be null.");
throw v;
label:
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("shareCount cannot be null");
throw v;
label:
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice owner> = v;
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount> = v;
if v == null goto label;
v = v;
goto label;
label:
v = v;
label:
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer source> = v;
return;
}
public org.glassfish.grizzly.memory.PooledMemoryManager$PoolBuffer prepare()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean allowBufferDispose> = 1;
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free> = 0;
return v;
}
public org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice owner()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice owner>;
return v;
}
public boolean free()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
boolean v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free>;
return v;
}
public org.glassfish.grizzly.memory.PooledMemoryManager$PoolBuffer free(boolean)
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
boolean v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: boolean;
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free> = v;
return v;
}
public org.glassfish.grizzly.memory.HeapBuffer asReadOnlyBuffer()
{
org.glassfish.grizzly.memory.HeapBuffer v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
int v, v, v, v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int offset>;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int cap>;
v = specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.HeapBuffer asReadOnlyBuffer(int,int)>(v, v);
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int pos>;
v.<org.glassfish.grizzly.memory.HeapBuffer: int pos> = v;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int lim>;
v.<org.glassfish.grizzly.memory.HeapBuffer: int lim> = v;
return v;
}
private org.glassfish.grizzly.memory.HeapBuffer asReadOnlyBuffer(int, int)
{
byte[] v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer$1 v;
int v, v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: int;
v := @parameter: int;
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void checkDispose()>();
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void onShareHeap()>();
v = new org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer$1;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: byte[] heap>;
specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer$1: void <init>(org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer,byte[],int,int)>(v, v, v, v);
virtualinvoke v.<org.glassfish.grizzly.memory.HeapBuffer: void allowBufferDispose(boolean)>(1);
return v;
}
public void dispose()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
boolean v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free>;
if v == 0 goto label;
return;
label:
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free> = 1;
specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void dispose0()>();
return;
}
private void dispose0()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v, v;
java.util.concurrent.atomic.AtomicInteger v, v, v;
int v, v;
boolean v, v, v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int getAndDecrement()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
label:
if v == 0 goto label;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer source>;
specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void returnToPool()>();
label:
return;
}
private void returnToPool()
{
byte[] v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
int v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: byte[] heap>;
v = lengthof v;
v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int cap> = v;
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.HeapBuffer clear()>();
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice owner>;
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice: boolean offer(org.glassfish.grizzly.memory.PooledMemoryManager$PoolBuffer)>(v);
return;
}
protected void checkDispose()
{
java.lang.IllegalStateException v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
java.lang.Exception v;
boolean v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: boolean free>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.lang.Exception disposeStackTrace>;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("PoolBuffer has already been disposed", v);
throw v;
label:
return;
}
protected org.glassfish.grizzly.memory.HeapBuffer createHeapBuffer(int, int)
{
byte[] v;
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v, v, v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v, v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v := @parameter: int;
v := @parameter: int;
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void onShareHeap()>();
v = new org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: byte[] heap>;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: int offset>;
v = v + v;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer source>;
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount>;
specialinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void <init>(byte[],int,int,org.glassfish.grizzly.memory.PooledMemoryManager$PoolSlice,org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer,java.util.concurrent.atomic.AtomicInteger)>(v, v, v, null, v, v);
virtualinvoke v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: void allowBufferDispose(boolean)>(1);
return v;
}
protected void onShareHeap()
{
org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer;
specialinvoke v.<org.glassfish.grizzly.memory.HeapBuffer: void onShareHeap()>();
v = v.<org.glassfish.grizzly.memory.PooledMemoryManager$PoolHeapBuffer: java.util.concurrent.atomic.AtomicInteger shareCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
return;
}
}