public abstract class com.codahale.metrics.CachedGauge<T> implements com.codahale.metrics.Gauge<T>
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.codahale.metrics.CachedGauge
super_class: java.lang.Object
{
private final com.codahale.metrics.Clock clock;
descriptor: Lcom/codahale/metrics/Clock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicLong reloadAt;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long timeoutNS;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile T value;
descriptor: Ljava/lang/Object;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
Signature: TT;
protected void <init>(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokestatic com.codahale.metrics.Clock.defaultClock:()Lcom/codahale/metrics/Clock;
lload 1
aload 3
invokespecial com.codahale.metrics.CachedGauge.<init>:(Lcom/codahale/metrics/Clock;JLjava/util/concurrent/TimeUnit;)V
1: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/codahale/metrics/CachedGauge<TT;>;
0 2 1 timeout J
0 2 3 timeoutUnit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
timeout
timeoutUnit
protected void <init>(com.codahale.metrics.Clock, long, java.util.concurrent.TimeUnit);
descriptor: (Lcom/codahale/metrics/Clock;JLjava/util/concurrent/TimeUnit;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.codahale.metrics.CachedGauge.clock:Lcom/codahale/metrics/Clock;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
lconst_0
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
putfield com.codahale.metrics.CachedGauge.reloadAt:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
putfield com.codahale.metrics.CachedGauge.timeoutNS:J
4: return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/codahale/metrics/CachedGauge<TT;>;
0 5 1 clock Lcom/codahale/metrics/Clock;
0 5 2 timeout J
0 5 4 timeoutUnit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
clock
timeout
timeoutUnit
protected abstract T loadValue();
descriptor: ()Ljava/lang/Object;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: ()TT;
public T getValue();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.codahale.metrics.CachedGauge.shouldLoad:()Z
ifeq 2
1: aload 0
aload 0
invokevirtual com.codahale.metrics.CachedGauge.loadValue:()Ljava/lang/Object;
putfield com.codahale.metrics.CachedGauge.value:Ljava/lang/Object;
2: StackMap locals:
StackMap stack:
aload 0
getfield com.codahale.metrics.CachedGauge.value:Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/codahale/metrics/CachedGauge<TT;>;
Signature: ()TT;
private boolean shouldLoad();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=5, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield com.codahale.metrics.CachedGauge.clock:Lcom/codahale/metrics/Clock;
invokevirtual com.codahale.metrics.Clock.getTick:()J
lstore 1
start local 1 1: aload 0
getfield com.codahale.metrics.CachedGauge.reloadAt:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 3
start local 3 2: lload 3
lload 1
lcmp
ifle 4
3: iconst_0
ireturn
4: StackMap locals: long long
StackMap stack:
aload 0
getfield com.codahale.metrics.CachedGauge.reloadAt:Ljava/util/concurrent/atomic/AtomicLong;
lload 3
lload 1
aload 0
getfield com.codahale.metrics.CachedGauge.timeoutNS:J
ladd
invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
ifeq 0
5: iconst_1
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/codahale/metrics/CachedGauge<TT;>;
1 6 1 time J
2 6 3 current J
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/codahale/metrics/Gauge<TT;>;
SourceFile: "CachedGauge.java"