final class com.github.benmanes.caffeine.cache.Pacer extends java.lang.Object
{
static final long TOLERANCE;
final com.github.benmanes.caffeine.cache.Scheduler scheduler;
long nextFireTime;
java.util.concurrent.Future future;
void <init>(com.github.benmanes.caffeine.cache.Scheduler)
{
com.github.benmanes.caffeine.cache.Pacer v;
java.lang.Object v;
com.github.benmanes.caffeine.cache.Scheduler v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v := @parameter: com.github.benmanes.caffeine.cache.Scheduler;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <java.util.Objects: java.lang.Object requireNonNull(java.lang.Object)>(v);
v.<com.github.benmanes.caffeine.cache.Pacer: com.github.benmanes.caffeine.cache.Scheduler scheduler> = v;
return;
}
public void schedule(java.util.concurrent.Executor, java.lang.Runnable, long, long)
{
com.github.benmanes.caffeine.cache.Pacer v;
long v, v, v, v, v, v, v;
com.github.benmanes.caffeine.cache.Scheduler v;
java.lang.Runnable v;
java.util.concurrent.Future v, v, v;
byte v, v;
boolean v;
java.util.concurrent.Executor v;
java.util.concurrent.TimeUnit v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: java.lang.Runnable;
v := @parameter: long;
v := @parameter: long;
v = v + v;
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
if v != null goto label;
v = v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime>;
v = v cmp 0L;
if v == 0 goto label;
return;
label:
v = v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime>;
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.Pacer: boolean maySkip(long)>(v);
if v == 0 goto label;
return;
label:
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
interfaceinvoke v.<java.util.concurrent.Future: boolean cancel(boolean)>(0);
label:
v = virtualinvoke v.<com.github.benmanes.caffeine.cache.Pacer: long calculateSchedule(long,long,long)>(v, v, v);
v = v.<com.github.benmanes.caffeine.cache.Pacer: com.github.benmanes.caffeine.cache.Scheduler scheduler>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = interfaceinvoke v.<com.github.benmanes.caffeine.cache.Scheduler: java.util.concurrent.Future schedule(java.util.concurrent.Executor,java.lang.Runnable,long,java.util.concurrent.TimeUnit)>(v, v, v, v);
v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future> = v;
return;
}
public void cancel()
{
com.github.benmanes.caffeine.cache.Pacer v;
java.util.concurrent.Future v, v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
if v == null goto label;
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
interfaceinvoke v.<java.util.concurrent.Future: boolean cancel(boolean)>(0);
v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime> = 0L;
v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future> = null;
label:
return;
}
public boolean isScheduled()
{
com.github.benmanes.caffeine.cache.Pacer v;
java.util.concurrent.Future v, v;
boolean v, v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
if v == null goto label;
v = v.<com.github.benmanes.caffeine.cache.Pacer: java.util.concurrent.Future future>;
v = interfaceinvoke v.<java.util.concurrent.Future: boolean isDone()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
boolean maySkip(long)
{
com.github.benmanes.caffeine.cache.Pacer v;
long v, v, v, v, v;
byte v, v;
boolean v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v := @parameter: long;
v = v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime>;
v = v - v;
v = v cmp 0L;
if v >= 0 goto label;
v = neg v;
v = <com.github.benmanes.caffeine.cache.Pacer: long TOLERANCE>;
v = v cmp v;
if v > 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
long calculateSchedule(long, long, long)
{
com.github.benmanes.caffeine.cache.Pacer v;
long v, v, v, v, v, v, v;
byte v;
v := @this: com.github.benmanes.caffeine.cache.Pacer;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v = <com.github.benmanes.caffeine.cache.Pacer: long TOLERANCE>;
v = v cmp v;
if v > 0 goto label;
v = <com.github.benmanes.caffeine.cache.Pacer: long TOLERANCE>;
v = v + v;
v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime> = v;
v = <com.github.benmanes.caffeine.cache.Pacer: long TOLERANCE>;
return v;
label:
v.<com.github.benmanes.caffeine.cache.Pacer: long nextFireTime> = v;
return v;
}
static void <clinit>()
{
java.util.concurrent.TimeUnit v;
long v, v;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(1L);
v = staticinvoke <com.github.benmanes.caffeine.cache.Caffeine: long ceilingPowerOfTwo(long)>(v);
<com.github.benmanes.caffeine.cache.Pacer: long TOLERANCE> = v;
return;
}
}