public abstract class oadd.com.codahale.metrics.CachedGauge extends java.lang.Object implements oadd.com.codahale.metrics.Gauge
{
private final oadd.com.codahale.metrics.Clock clock;
private final java.util.concurrent.atomic.AtomicLong reloadAt;
private final long timeoutNS;
private final java.util.concurrent.atomic.AtomicReference value;
protected void <init>(long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.TimeUnit v;
oadd.com.codahale.metrics.Clock v;
long v;
oadd.com.codahale.metrics.CachedGauge v;
v := @this: oadd.com.codahale.metrics.CachedGauge;
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.CachedGauge: void <init>(oadd.com.codahale.metrics.Clock,long,java.util.concurrent.TimeUnit)>(v, v, v);
return;
}
protected void <init>(oadd.com.codahale.metrics.Clock, long, java.util.concurrent.TimeUnit)
{
long v, v, v;
java.util.concurrent.atomic.AtomicReference v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.atomic.AtomicLong v;
oadd.com.codahale.metrics.Clock v;
oadd.com.codahale.metrics.CachedGauge v;
v := @this: oadd.com.codahale.metrics.CachedGauge;
v := @parameter: oadd.com.codahale.metrics.Clock;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<oadd.com.codahale.metrics.CachedGauge: oadd.com.codahale.metrics.Clock clock> = v;
v = new java.util.concurrent.atomic.AtomicLong;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(v);
v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicLong reloadAt> = v;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v.<oadd.com.codahale.metrics.CachedGauge: long timeoutNS> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicReference value> = v;
return;
}
protected abstract java.lang.Object loadValue();
public java.lang.Object getValue()
{
java.util.concurrent.atomic.AtomicReference v, v, v;
java.lang.Object v, v, v;
boolean v, v;
oadd.com.codahale.metrics.CachedGauge v;
v := @this: oadd.com.codahale.metrics.CachedGauge;
v = v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicReference value>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
v = specialinvoke v.<oadd.com.codahale.metrics.CachedGauge: boolean shouldLoad()>();
if v != 0 goto label;
if v != null goto label;
label:
v = virtualinvoke v.<oadd.com.codahale.metrics.CachedGauge: java.lang.Object loadValue()>();
v = v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicReference value>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, v);
if v != 0 goto label;
v = v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicReference value>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
return v;
label:
return v;
label:
return v;
}
private boolean shouldLoad()
{
long v, v, v, v;
java.util.concurrent.atomic.AtomicLong v, v;
oadd.com.codahale.metrics.Clock v;
byte v;
boolean v;
oadd.com.codahale.metrics.CachedGauge v;
v := @this: oadd.com.codahale.metrics.CachedGauge;
label:
v = v.<oadd.com.codahale.metrics.CachedGauge: oadd.com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<oadd.com.codahale.metrics.Clock: long getTick()>();
v = v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicLong reloadAt>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v <= 0 goto label;
return 0;
label:
v = v.<oadd.com.codahale.metrics.CachedGauge: java.util.concurrent.atomic.AtomicLong reloadAt>;
v = v.<oadd.com.codahale.metrics.CachedGauge: long timeoutNS>;
v = v + v;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(v, v);
if v == 0 goto label;
return 1;
}
}