abstract class org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue extends org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueColdProducerFields
{
private static final long P_INDEX_OFFSET;
private static final long C_INDEX_OFFSET;
private static final long P_LIMIT_OFFSET;
private static final java.lang.Object JUMP;
public void <init>(int)
{
java.lang.Object[] v;
long v, v;
java.lang.IllegalArgumentException v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
int v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: int;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueColdProducerFields: void <init>()>();
if v >= 2 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Initial capacity must be 2 or more");
throw v;
label:
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BoundedLocalCache: int ceilingPowerOfTwo(int)>(v);
v = v - 1L;
v = v << 1;
v = v + 1;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] allocate(int)>(v);
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] producerBuffer> = v;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long producerMask> = v;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer> = v;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask> = v;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soProducerLimit(long)>(v);
return;
}
public final java.util.Iterator iterator()
{
java.lang.UnsupportedOperationException v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>()>();
throw v;
}
public java.lang.String toString()
{
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
int v;
java.lang.Class v;
java.lang.String v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(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[])>("\u0001@\u0001");
return v;
}
public boolean offer(java.lang.Object)
{
java.lang.Object[] v;
long v, v, v, v, v, v;
java.lang.NullPointerException v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v, v;
int v;
java.lang.Object v;
boolean v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object;
if null != v goto label;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>()>();
throw v;
label:
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerLimit()>();
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = v & 1L;
v = v cmp 1L;
if v == 0 goto label;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long producerMask>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] producerBuffer>;
v = v cmp v;
if v > 0 goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: int offerSlowPath(long,long,long)>(v, v, v);
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
return 0;
label:
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void resize(long,java.lang.Object[],long,java.lang.Object)>(v, v, v, v);
return 1;
label:
v = v + 2L;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: boolean casProducerIndex(long,long)>(v, v);
if v == 0 goto label;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, v);
return 1;
}
private int offerSlowPath(long, long, long)
{
long v, v, v, v, v, v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v, v, v;
boolean v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
v = virtualinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long getCurrentBufferCapacity(long)>(v);
v = 0;
v = v + v;
v = v cmp v;
if v <= 0 goto label;
v = v + v;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: boolean casProducerLimit(long,long)>(v, v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long availableInQueue(long,long)>(v, v);
v = v cmp 0L;
if v > 0 goto label;
v = 2;
goto label;
label:
v = v + 1L;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: boolean casProducerIndex(long,long)>(v, v);
if v == 0 goto label;
v = 3;
goto label;
label:
v = 1;
label:
return v;
}
protected abstract long availableInQueue(long, long);
private static long modifiedCalcElementOffset(long, long)
{
long v, v, v, v, v, v;
int v, v;
v := @parameter: long;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: long REF_ARRAY_BASE>;
v = v & v;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: int REF_ELEMENT_SHIFT>;
v = v - 1;
v = v << v;
v = v + v;
return v;
}
public java.lang.Object poll()
{
java.lang.Object[] v, v;
long v, v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v;
java.lang.Object v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerIndex>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask>;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if v != null goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = v cmp v;
if v == 0 goto label;
label:
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if v == null goto label;
goto label;
label:
return null;
label:
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP>;
if v != v goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] getNextBuffer(java.lang.Object[],long)>(v, v);
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object newBufferPoll(java.lang.Object[],long)>(v, v);
return v;
label:
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, null);
v = v + 2L;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soConsumerIndex(long)>(v);
return v;
}
public java.lang.Object peek()
{
java.lang.Object[] v, v;
long v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v;
java.lang.Object v, v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerIndex>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask>;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if v != null goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = v cmp v;
if v == 0 goto label;
label:
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
v = v;
if v == null goto label;
label:
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP>;
if v != v goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] getNextBuffer(java.lang.Object[],long)>(v, v);
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object newBufferPeek(java.lang.Object[],long)>(v, v);
return v;
label:
return v;
}
private java.lang.Object[] getNextBuffer(java.lang.Object[], long)
{
java.lang.Object[] v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object[];
v := @parameter: long;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long nextArrayOffset(long)>(v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, null);
return v;
}
private static long nextArrayOffset(long)
{
long v, v, v;
v := @parameter: long;
v = v + 2L;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, 9223372036854775807L);
return v;
}
private java.lang.Object newBufferPoll(java.lang.Object[], long)
{
java.lang.IllegalStateException v;
java.lang.Object[] v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v;
long v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object[];
v := @parameter: long;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long newBufferAndOffset(java.lang.Object[],long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("new buffer must have at least one element");
throw v;
label:
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, null);
v = v + 2L;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soConsumerIndex(long)>(v);
return v;
}
private java.lang.Object newBufferPeek(java.lang.Object[], long)
{
java.lang.IllegalStateException v;
java.lang.Object[] v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object[];
v := @parameter: long;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long newBufferAndOffset(java.lang.Object[],long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if null != v goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("new buffer must have at least one element");
throw v;
label:
return v;
}
private long newBufferAndOffset(java.lang.Object[], long)
{
java.lang.Object[] v;
long v, v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
int v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object[];
v := @parameter: long;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer> = v;
v = lengthof v;
v = v - 2L;
v = v << 1;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask> = v;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask>;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
return v;
}
public final int size()
{
long v, v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
label:
v = v;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
v = v cmp v;
if v != 0 goto label;
v = v - v;
v = v >> 1;
v = v cmp 2147483647L;
if v <= 0 goto label;
return 2147483647;
label:
return v;
}
public final boolean isEmpty()
{
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
byte v;
long v, v;
boolean v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = v cmp v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private long lvProducerIndex()
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_INDEX_OFFSET>;
v = virtualinvoke v.<sun.misc.Unsafe: long getLongVolatile(java.lang.Object,long)>(v, v);
return v;
}
private long lvConsumerIndex()
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long C_INDEX_OFFSET>;
v = virtualinvoke v.<sun.misc.Unsafe: long getLongVolatile(java.lang.Object,long)>(v, v);
return v;
}
private void soProducerIndex(long)
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_INDEX_OFFSET>;
virtualinvoke v.<sun.misc.Unsafe: void putOrderedLong(java.lang.Object,long,long)>(v, v, v);
return;
}
private boolean casProducerIndex(long, long)
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v, v;
boolean v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_INDEX_OFFSET>;
v = virtualinvoke v.<sun.misc.Unsafe: boolean compareAndSwapLong(java.lang.Object,long,long,long)>(v, v, v, v);
return v;
}
private void soConsumerIndex(long)
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long C_INDEX_OFFSET>;
virtualinvoke v.<sun.misc.Unsafe: void putOrderedLong(java.lang.Object,long,long)>(v, v, v);
return;
}
private long lvProducerLimit()
{
long v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long producerLimit>;
return v;
}
private boolean casProducerLimit(long, long)
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v, v;
boolean v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_LIMIT_OFFSET>;
v = virtualinvoke v.<sun.misc.Unsafe: boolean compareAndSwapLong(java.lang.Object,long,long,long)>(v, v, v, v);
return v;
}
private void soProducerLimit(long)
{
sun.misc.Unsafe v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
long v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_LIMIT_OFFSET>;
virtualinvoke v.<sun.misc.Unsafe: void putOrderedLong(java.lang.Object,long,long)>(v, v, v);
return;
}
public long currentProducerIndex()
{
long v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvProducerIndex()>();
v = v / 2L;
return v;
}
public long currentConsumerIndex()
{
long v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
v = v / 2L;
return v;
}
public abstract int capacity();
public boolean relaxedOffer(java.lang.Object)
{
java.lang.Object v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
boolean v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: boolean offer(java.lang.Object)>(v);
return v;
}
public java.lang.Object relaxedPoll()
{
java.lang.Object[] v, v;
long v, v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerIndex>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask>;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
if v != null goto label;
return null;
label:
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP>;
if v != v goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] getNextBuffer(java.lang.Object[],long)>(v, v);
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object newBufferPoll(java.lang.Object[],long)>(v, v);
return v;
label:
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, null);
v = v + 2L;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soConsumerIndex(long)>(v);
return v;
}
public java.lang.Object relaxedPeek()
{
java.lang.Object[] v, v;
long v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v, v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] consumerBuffer>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerIndex>;
v = v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long consumerMask>;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: java.lang.Object lvElement(java.lang.Object[],long)>(v, v);
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP>;
if v != v goto label;
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] getNextBuffer(java.lang.Object[],long)>(v, v);
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object newBufferPeek(java.lang.Object[],long)>(v, v);
return v;
label:
return v;
}
private void resize(long, java.lang.Object[], long, java.lang.Object)
{
java.lang.IllegalStateException v;
java.lang.Object[] v, v;
long v, v, v, v, v, v, v, v, v, v;
byte v;
int v, v, v;
org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue v;
java.lang.Object v, v;
v := @this: org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue;
v := @parameter: long;
v := @parameter: java.lang.Object[];
v := @parameter: long;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: int getNextBufferSize(java.lang.Object[])>(v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] allocate(int)>(v);
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object[] producerBuffer> = v;
v = v - 2;
v = v << 1;
v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long producerMask> = v;
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long modifiedCalcElementOffset(long,long)>(v, v);
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, v);
v = staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long nextArrayOffset(long)>(v);
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, v);
v = specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long lvConsumerIndex()>();
v = virtualinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long availableInQueue(long,long)>(v, v);
v = v cmp 0L;
if v > 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>()>();
throw v;
label:
v = staticinvoke <java.lang.Math: long min(long,long)>(v, v);
v = v + v;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soProducerLimit(long)>(v);
v = v + 2L;
specialinvoke v.<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: void soProducerIndex(long)>(v);
v = <org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP>;
staticinvoke <org.apache.camel.com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess: void soElement(java.lang.Object[],long,java.lang.Object)>(v, v, v);
return;
}
public static java.lang.Object[] allocate(int)
{
int v;
java.lang.Object[] v;
v := @parameter: int;
v = newarray (java.lang.Object)[v];
return v;
}
protected abstract int getNextBufferSize(java.lang.Object[]);
protected abstract long getCurrentBufferCapacity(long);
static void <clinit>()
{
sun.misc.Unsafe v, v, v;
long v, v, v;
java.lang.NoSuchFieldException v, v, v;
java.lang.RuntimeException v, v, v;
java.lang.reflect.Field v, v, v;
java.lang.Class v, v, v;
java.lang.Object v;
label:
v = class "Lorg/apache/camel/com/github/benmanes/caffeine/cache/BaseMpscLinkedArrayQueueProducerFields;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("producerIndex");
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = virtualinvoke v.<sun.misc.Unsafe: long objectFieldOffset(java.lang.reflect.Field)>(v);
<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_INDEX_OFFSET> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = class "Lorg/apache/camel/com/github/benmanes/caffeine/cache/BaseMpscLinkedArrayQueueConsumerFields;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("consumerIndex");
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = virtualinvoke v.<sun.misc.Unsafe: long objectFieldOffset(java.lang.reflect.Field)>(v);
<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long C_INDEX_OFFSET> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = class "Lorg/apache/camel/com/github/benmanes/caffeine/cache/BaseMpscLinkedArrayQueueColdProducerFields;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("producerLimit");
v = <org.apache.camel.com.github.benmanes.caffeine.base.UnsafeAccess: sun.misc.Unsafe UNSAFE>;
v = virtualinvoke v.<sun.misc.Unsafe: long objectFieldOffset(java.lang.reflect.Field)>(v);
<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: long P_LIMIT_OFFSET> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
<org.apache.camel.com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue: java.lang.Object JUMP> = v;
return;
catch java.lang.NoSuchFieldException from label to label with label;
catch java.lang.NoSuchFieldException from label to label with label;
catch java.lang.NoSuchFieldException from label to label with label;
}
}