public final class oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir extends java.lang.Object implements oadd.com.codahale.metrics.Reservoir
{
private static final double SECONDS_PER_NANO;
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater stateUpdater;
private final int size;
private final long rescaleThresholdNanos;
private final oadd.com.codahale.metrics.Clock clock;
private volatile oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State state;
private void <init>(int, double, java.time.Duration, oadd.com.codahale.metrics.Clock)
{
long v, v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
oadd.com.codahale.metrics.Clock v;
java.util.concurrent.ConcurrentSkipListMap v;
java.time.Duration v;
int v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v;
double v, v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v := @parameter: int;
v := @parameter: double;
v := @parameter: java.time.Duration;
v := @parameter: oadd.com.codahale.metrics.Clock;
specialinvoke v.<java.lang.Object: void <init>()>();
v = v * 1.0E-9;
v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: int size> = v;
v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.Clock clock> = v;
v = virtualinvoke v.<java.time.Duration: long toNanos()>();
v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: long rescaleThresholdNanos> = v;
v = new oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = new java.util.concurrent.ConcurrentSkipListMap;
specialinvoke v.<java.util.concurrent.ConcurrentSkipListMap: void <init>()>();
specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: void <init>(double,int,long,int,java.util.concurrent.ConcurrentSkipListMap)>(v, v, v, 0, v);
v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State state> = v;
return;
}
public int size()
{
int v, v, v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: int size>;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State state>;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: int count>;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
return v;
}
public void update(long)
{
oadd.com.codahale.metrics.Clock v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v;
long v, v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v := @parameter: long;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State rescaleIfNeeded(long)>(v);
specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: void update(long,long)>(v, v);
return;
}
private oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State rescaleIfNeeded(long)
{
long v, v, v, v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
byte v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v, v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v := @parameter: long;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State state>;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: long startTick>;
v = v - v;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: long rescaleThresholdNanos>;
v = v cmp v;
if v < 0 goto label;
v = specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State doRescale(long,oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State)>(v, v);
return v;
label:
return v;
}
private oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State doRescale(long, oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State)
{
java.util.concurrent.atomic.AtomicReferenceFieldUpdater v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v, v, v;
long v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
boolean v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v := @parameter: long;
v := @parameter: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State;
v = virtualinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State rescale(long)>(v);
v = <oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: java.util.concurrent.atomic.AtomicReferenceFieldUpdater stateUpdater>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReferenceFieldUpdater: boolean compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object)>(v, v, v);
if v == 0 goto label;
return v;
label:
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State state>;
return v;
}
public oadd.com.codahale.metrics.Snapshot getSnapshot()
{
oadd.com.codahale.metrics.Clock v;
java.util.concurrent.ConcurrentSkipListMap v;
oadd.com.codahale.metrics.WeightedSnapshot v;
java.util.Collection v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State v;
long v;
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir v;
v := @this: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State rescaleIfNeeded(long)>(v);
v = new oadd.com.codahale.metrics.WeightedSnapshot;
v = v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$State: java.util.concurrent.ConcurrentSkipListMap values>;
v = virtualinvoke v.<java.util.concurrent.ConcurrentSkipListMap: java.util.Collection values()>();
specialinvoke v.<oadd.com.codahale.metrics.WeightedSnapshot: void <init>(java.util.Collection)>(v);
return v;
}
public static oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$Builder builder()
{
oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$Builder v;
v = new oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$Builder;
specialinvoke v.<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir$Builder: void <init>()>();
return v;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicReferenceFieldUpdater v;
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/codahale/metrics/LockFreeExponentiallyDecayingReservoir;", class "Loadd/com/codahale/metrics/LockFreeExponentiallyDecayingReservoir$State;", "state");
<oadd.com.codahale.metrics.LockFreeExponentiallyDecayingReservoir: java.util.concurrent.atomic.AtomicReferenceFieldUpdater stateUpdater> = v;
return;
}
}