public class oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir extends java.lang.Object implements oadd.com.codahale.metrics.Reservoir
{
private static final long COLLISION_BUFFER;
private static final long TRIM_THRESHOLD;
private static final long CLEAR_BUFFER;
private final oadd.com.codahale.metrics.Clock clock;
private final oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements;
private final long window;
private final java.util.concurrent.atomic.AtomicLong lastTick;
private final java.util.concurrent.atomic.AtomicLong count;
private final long startTick;
public void <init>(long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.TimeUnit v;
oadd.com.codahale.metrics.Clock v;
long v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = staticinvoke <oadd.com.codahale.metrics.Clock: oadd.com.codahale.metrics.Clock defaultClock()>();
specialinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: void <init>(long,java.util.concurrent.TimeUnit,oadd.com.codahale.metrics.Clock)>(v, v, v);
return;
}
public void <init>(long, java.util.concurrent.TimeUnit, oadd.com.codahale.metrics.Clock)
{
oadd.com.codahale.metrics.ChunkedAssociativeLongArray v;
long v, v, v, v, v, v, v, v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.atomic.AtomicLong v, v;
oadd.com.codahale.metrics.Clock v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v := @parameter: oadd.com.codahale.metrics.Clock;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long startTick> = v;
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.Clock clock> = v;
v = new oadd.com.codahale.metrics.ChunkedAssociativeLongArray;
specialinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: void <init>()>();
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements> = v;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v = v * 256L;
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long window> = v;
v = new java.util.concurrent.atomic.AtomicLong;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long startTick>;
v = v - v;
v = v * 256L;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(v);
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong lastTick> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong count> = v;
return;
}
public int size()
{
int v;
oadd.com.codahale.metrics.ChunkedAssociativeLongArray v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
virtualinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: void trim()>();
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
v = virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: int size()>();
return v;
}
public void update(long)
{
oadd.com.codahale.metrics.ChunkedAssociativeLongArray v, v;
long v, v, v, v, v;
java.util.concurrent.atomic.AtomicLong v, v;
byte v, v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
boolean v, v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
v := @parameter: long;
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong count>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long incrementAndGet()>();
v = v % 256L;
v = v cmp 0L;
if v != 0 goto label;
virtualinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: void trim()>();
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong lastTick>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = specialinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long getTick()>();
v = v cmp v;
if v >= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == 0 goto label;
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: void clear()>();
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
v = virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: boolean put(long,long)>(v, v);
if v == 0 goto label;
return;
}
public oadd.com.codahale.metrics.Snapshot getSnapshot()
{
oadd.com.codahale.metrics.ChunkedAssociativeLongArray v;
long[] v;
oadd.com.codahale.metrics.UniformSnapshot v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
virtualinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: void trim()>();
v = new oadd.com.codahale.metrics.UniformSnapshot;
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
v = virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: long[] values()>();
specialinvoke v.<oadd.com.codahale.metrics.UniformSnapshot: void <init>(long[])>(v);
return v;
}
private long getTick()
{
long v, v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicLong v, v;
oadd.com.codahale.metrics.Clock v;
byte v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
boolean v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong lastTick>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long startTick>;
v = v - v;
v = v * 256L;
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
v = v;
goto label;
label:
v = v + 1L;
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: java.util.concurrent.atomic.AtomicLong lastTick>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(v, v);
if v == 0 goto label;
return v;
}
void trim()
{
oadd.com.codahale.metrics.ChunkedAssociativeLongArray v, v;
long v, v, v, v, v;
byte v;
oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir v;
v := @this: oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir;
v = specialinvoke v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long getTick()>();
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long window>;
v = v - v;
v = <oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long CLEAR_BUFFER>;
v = v + v;
v = v cmp v;
if v >= 0 goto label;
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: void trim(long,long)>(v, v);
goto label;
label:
v = v.<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: oadd.com.codahale.metrics.ChunkedAssociativeLongArray measurements>;
virtualinvoke v.<oadd.com.codahale.metrics.ChunkedAssociativeLongArray: void clear()>();
label:
return;
}
static void <clinit>()
{
java.util.concurrent.TimeUnit v;
long v, v;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit HOURS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(1L);
v = v * 256L;
<oadd.com.codahale.metrics.SlidingTimeWindowArrayReservoir: long CLEAR_BUFFER> = v;
return;
}
}