public class org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool extends java.lang.Object implements org.apache.kafkaesqueesque.common.memory.MemoryPool
{
protected final org.slf4j.Logger log;
protected final long sizeBytes;
protected final boolean strict;
protected final java.util.concurrent.atomic.AtomicLong availableMemory;
protected final int maxSingleAllocationSize;
protected final java.util.concurrent.atomic.AtomicLong startOfNoMemPeriod;
protected volatile org.apache.kafkaesqueesque.common.metrics.Sensor oomTimeSensor;
public void <init>(long, int, boolean, org.apache.kafkaesqueesque.common.metrics.Sensor)
{
org.slf4j.Logger v;
long v;
java.lang.IllegalArgumentException v;
java.util.concurrent.atomic.AtomicLong v, v;
byte v, v;
org.apache.kafkaesqueesque.common.metrics.Sensor v;
int v;
java.lang.Class v;
java.lang.String v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
boolean v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v := @parameter: long;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: org.apache.kafkaesqueesque.common.metrics.Sensor;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(v);
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.slf4j.Logger log> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong startOfNoMemPeriod> = v;
v = v cmp 0L;
if v <= 0 goto label;
if v <= 0 goto label;
v = v cmp v;
if v <= 0 goto label;
label:
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,int)>(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[])>("must provide a positive size and max single allocation size smaller than size.provided \u and \u respectively");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: long sizeBytes> = v;
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: boolean strict> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(v);
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory> = v;
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: int maxSingleAllocationSize> = v;
v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.apache.kafkaesqueesque.common.metrics.Sensor oomTimeSensor> = v;
return;
}
public java.nio.ByteBuffer tryAllocate(int)
{
long v, v, v, v;
java.lang.Integer v;
java.nio.ByteBuffer v;
byte v;
org.apache.kafkaesqueesque.common.metrics.Sensor v;
int v, v, v;
java.lang.String v, v;
boolean v, v;
org.slf4j.Logger v;
java.lang.IllegalArgumentException v, v;
java.util.concurrent.atomic.AtomicLong v, v, v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v := @parameter: int;
if v >= 1 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("requested size \u0001<=0");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: int maxSingleAllocationSize>;
if v <= v goto label;
v = new java.lang.IllegalArgumentException;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: int maxSingleAllocationSize>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int)>(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[])>("requested size \u is larger than maxSingleAllocationSize \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = 0;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: boolean strict>;
if v != 0 goto label;
v = 1L;
label:
v = v;
label:
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v < 0 goto label;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = v - v;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(v, v);
if v == 0 goto label;
label:
if v == 0 goto label;
virtualinvoke v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: void maybeRecordEndOfDrySpell()>();
goto label;
label:
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.apache.kafkaesqueesque.common.metrics.Sensor oomTimeSensor>;
if v == null goto label;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong startOfNoMemPeriod>;
v = staticinvoke <java.lang.System: long nanoTime()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(0L, v);
label:
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.slf4j.Logger log>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("refused to allocate buffer of size {}", v);
return null;
label:
v = staticinvoke <java.nio.ByteBuffer: java.nio.ByteBuffer allocate(int)>(v);
virtualinvoke v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: void bufferToBeReturned(java.nio.ByteBuffer)>(v);
return v;
}
public void release(java.nio.ByteBuffer)
{
java.util.concurrent.atomic.AtomicLong v;
int v;
java.lang.IllegalArgumentException v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
java.nio.ByteBuffer v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v := @parameter: java.nio.ByteBuffer;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("provided null buffer");
throw v;
label:
virtualinvoke v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: void bufferToBeReleased(java.nio.ByteBuffer)>(v);
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = virtualinvoke v.<java.nio.ByteBuffer: int capacity()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long addAndGet(long)>(v);
virtualinvoke v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: void maybeRecordEndOfDrySpell()>();
return;
}
public long size()
{
long v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: long sizeBytes>;
return v;
}
public long availableMemory()
{
java.util.concurrent.atomic.AtomicLong v;
long v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
return v;
}
public boolean isOutOfMemory()
{
java.util.concurrent.atomic.AtomicLong v;
byte v;
long v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
boolean v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp 0L;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected void bufferToBeReturned(java.nio.ByteBuffer)
{
org.slf4j.Logger v;
int v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
java.lang.Integer v;
java.nio.ByteBuffer v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v := @parameter: java.nio.ByteBuffer;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.slf4j.Logger log>;
v = virtualinvoke v.<java.nio.ByteBuffer: int capacity()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("allocated buffer of size {} ", v);
return;
}
protected void bufferToBeReleased(java.nio.ByteBuffer)
{
org.slf4j.Logger v;
int v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
java.lang.Integer v;
java.nio.ByteBuffer v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v := @parameter: java.nio.ByteBuffer;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.slf4j.Logger log>;
v = virtualinvoke v.<java.nio.ByteBuffer: int capacity()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("released buffer of size {}", v);
return;
}
public java.lang.String toString()
{
long v, v, v, v;
java.util.concurrent.atomic.AtomicLong v;
java.lang.String v, v, v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: long sizeBytes>;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong availableMemory>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v - v;
v = staticinvoke <org.apache.kafkaesqueesque.common.utils.Utils: java.lang.String formatBytes(long)>(v);
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: long sizeBytes>;
v = staticinvoke <org.apache.kafkaesqueesque.common.utils.Utils: java.lang.String formatBytes(long)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("SimpleMemoryPool{\u0001/\u used}");
return v;
}
protected void maybeRecordEndOfDrySpell()
{
long v, v, v;
java.util.concurrent.atomic.AtomicLong v;
byte v;
org.apache.kafkaesqueesque.common.metrics.Sensor v, v;
org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool v;
double v;
v := @this: org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.apache.kafkaesqueesque.common.metrics.Sensor oomTimeSensor>;
if v == null goto label;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: java.util.concurrent.atomic.AtomicLong startOfNoMemPeriod>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v = v cmp 0L;
if v == 0 goto label;
v = v.<org.apache.kafkaesqueesque.common.memory.SimpleMemoryPool: org.apache.kafkaesqueesque.common.metrics.Sensor oomTimeSensor>;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v - v;
v = v / 1000000.0;
virtualinvoke v.<org.apache.kafkaesqueesque.common.metrics.Sensor: void record(double)>(v);
label:
return;
}
}