abstract class com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef extends com.github.benmanes.caffeine.cache.BLCHeader$PadDrainStatus
{
static final java.lang.invoke.VarHandle DRAIN_STATUS;
static final int IDLE;
static final int REQUIRED;
static final int PROCESSING_TO_IDLE;
static final int PROCESSING_TO_REQUIRED;
volatile int drainStatus;
void <init>()
{
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
specialinvoke v.<com.github.benmanes.caffeine.cache.BLCHeader$PadDrainStatus: void <init>()>();
v.<com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: int drainStatus> = 0;
return;
}
boolean shouldDrainBuffers(boolean)
{
java.lang.IllegalStateException v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
int v, v;
java.lang.String v;
boolean v, v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v := @parameter: boolean;
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: int drainStatusOpaque()>();
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 1;
label:
return 0;
label:
v = new java.lang.IllegalStateException;
v = v.<com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: int drainStatus>;
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[])>("Invalid drain status: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
}
int drainStatusOpaque()
{
int v;
java.lang.invoke.VarHandle v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v = <com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS>;
v = virtualinvoke v.<java.lang.invoke.VarHandle: int getOpaque(com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef)>(v);
return v;
}
int drainStatusAcquire()
{
int v;
java.lang.invoke.VarHandle v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v = <com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS>;
v = virtualinvoke v.<java.lang.invoke.VarHandle: int getAcquire(com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef)>(v);
return v;
}
void setDrainStatusOpaque(int)
{
int v;
java.lang.invoke.VarHandle v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v := @parameter: int;
v = <com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS>;
virtualinvoke v.<java.lang.invoke.VarHandle: void setOpaque(com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef,int)>(v, v);
return;
}
void setDrainStatusRelease(int)
{
int v;
java.lang.invoke.VarHandle v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v := @parameter: int;
v = <com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS>;
virtualinvoke v.<java.lang.invoke.VarHandle: void setRelease(com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef,int)>(v, v);
return;
}
boolean casDrainStatus(int, int)
{
java.lang.invoke.VarHandle v;
com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef v;
int v, v;
boolean v;
v := @this: com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef;
v := @parameter: int;
v := @parameter: int;
v = <com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS>;
v = virtualinvoke v.<java.lang.invoke.VarHandle: boolean compareAndSet(com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef,int,int)>(v, v, v);
return v;
}
static void <clinit>()
{
java.lang.invoke.VarHandle v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.Class v;
java.lang.ReflectiveOperationException v;
java.lang.ExceptionInInitializerError v;
label:
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandles$Lookup lookup()>();
v = <java.lang.Integer: java.lang.Class TYPE>;
v = virtualinvoke v.<java.lang.invoke.MethodHandles$Lookup: java.lang.invoke.VarHandle findVarHandle(java.lang.Class,java.lang.String,java.lang.Class)>(class "Lcom/github/benmanes/caffeine/cache/BLCHeader$DrainStatusRef;", "drainStatus", v);
<com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef: java.lang.invoke.VarHandle DRAIN_STATUS> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.ExceptionInInitializerError;
specialinvoke v.<java.lang.ExceptionInInitializerError: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.ReflectiveOperationException from label to label with label;
}
}