final class com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp extends com.google.common.util.concurrent.SmoothRateLimiter
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp
super_class: com.google.common.util.concurrent.SmoothRateLimiter
{
private final long warmupPeriodMicros;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private double slope;
descriptor: D
flags: (0x0002) ACC_PRIVATE
private double thresholdPermits;
descriptor: D
flags: (0x0002) ACC_PRIVATE
private double coldFactor;
descriptor: D
flags: (0x0002) ACC_PRIVATE
void <init>(com.google.common.util.concurrent.RateLimiter$SleepingStopwatch, long, java.util.concurrent.TimeUnit, double);
descriptor: (Lcom/google/common/util/concurrent/RateLimiter$SleepingStopwatch;JLjava/util/concurrent/TimeUnit;D)V
flags: (0x0000)
Code:
stack=4, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: aload 0
aload 1
invokespecial com.google.common.util.concurrent.SmoothRateLimiter.<init>:(Lcom/google/common/util/concurrent/RateLimiter$SleepingStopwatch;)V
1: aload 0
aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toMicros:(J)J
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.warmupPeriodMicros:J
2: aload 0
dload 5
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.coldFactor:D
3: return
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/google/common/util/concurrent/SmoothRateLimiter$SmoothWarmingUp;
0 4 1 stopwatch Lcom/google/common/util/concurrent/RateLimiter$SleepingStopwatch;
0 4 2 warmupPeriod J
0 4 4 timeUnit Ljava/util/concurrent/TimeUnit;
0 4 5 coldFactor D
MethodParameters:
Name Flags
stopwatch
warmupPeriod
timeUnit
coldFactor
void doSetRate(double, double);
descriptor: (DD)V
flags: (0x0000)
Code:
stack=9, locals=9, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
dstore 5
start local 5 1: dload 3
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.coldFactor:D
dmul
dstore 7
start local 7 2: aload 0
ldc 0.5
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.warmupPeriodMicros:J
l2d
dmul
dload 3
ddiv
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.thresholdPermits:D
3: aload 0
4: aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.thresholdPermits:D
ldc 2.0
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.warmupPeriodMicros:J
l2d
dmul
dload 3
dload 7
dadd
ddiv
dadd
5: putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
6: aload 0
dload 7
dload 3
dsub
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.thresholdPermits:D
dsub
ddiv
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.slope:D
7: dload 5
ldc Infinity
dcmpl
ifne 10
8: aload 0
dconst_0
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.storedPermits:D
9: goto 15
10: StackMap locals: double double
StackMap stack:
aload 0
11: dload 5
dconst_0
dcmpl
ifne 13
12: aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
goto 14
13: StackMap locals:
StackMap stack: com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.storedPermits:D
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
dmul
dload 5
ddiv
14: StackMap locals: com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp double double double double
StackMap stack: com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp double
putfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.storedPermits:D
15: StackMap locals:
StackMap stack:
return
end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/google/common/util/concurrent/SmoothRateLimiter$SmoothWarmingUp;
0 16 1 permitsPerSecond D
0 16 3 stableIntervalMicros D
1 16 5 oldMaxPermits D
2 16 7 coldIntervalMicros D
MethodParameters:
Name Flags
permitsPerSecond
stableIntervalMicros
long storedPermitsToWaitTime(double, double);
descriptor: (DD)J
flags: (0x0000)
Code:
stack=7, locals=13, args_size=3
start local 0 start local 1 start local 3 0: dload 1
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.thresholdPermits:D
dsub
dstore 5
start local 5 1: lconst_0
lstore 7
start local 7 2: dload 5
dconst_0
dcmpl
ifle 10
3: dload 5
dload 3
invokestatic java.lang.Math.min:(DD)D
dstore 9
start local 9 4: aload 0
dload 5
invokevirtual com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.permitsToTime:(D)D
5: aload 0
dload 5
dload 9
dsub
invokevirtual com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.permitsToTime:(D)D
6: dadd
7: dstore 11
start local 11 8: dload 9
dload 11
dmul
ldc 2.0
ddiv
d2l
lstore 7
9: dload 3
dload 9
dsub
dstore 3
end local 11 end local 9 10: StackMap locals: double long
StackMap stack:
lload 7
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.stableIntervalMicros:D
dload 3
dmul
d2l
ladd
lstore 7
11: lload 7
lreturn
end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/google/common/util/concurrent/SmoothRateLimiter$SmoothWarmingUp;
0 12 1 storedPermits D
0 12 3 permitsToTake D
1 12 5 availablePermitsAboveThreshold D
2 12 7 micros J
4 10 9 permitsAboveThresholdToTake D
8 10 11 length D
MethodParameters:
Name Flags
storedPermits
permitsToTake
private double permitsToTime(double);
descriptor: (D)D
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.stableIntervalMicros:D
dload 1
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.slope:D
dmul
dadd
dreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/util/concurrent/SmoothRateLimiter$SmoothWarmingUp;
0 1 1 permits D
MethodParameters:
Name Flags
permits
double coolDownIntervalMicros();
descriptor: ()D
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.warmupPeriodMicros:J
l2d
aload 0
getfield com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp.maxPermits:D
ddiv
dreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/util/concurrent/SmoothRateLimiter$SmoothWarmingUp;
}
SourceFile: "SmoothRateLimiter.java"
NestHost: com.google.common.util.concurrent.SmoothRateLimiter
InnerClasses:
abstract SleepingStopwatch = com.google.common.util.concurrent.RateLimiter$SleepingStopwatch of com.google.common.util.concurrent.RateLimiter
final SmoothWarmingUp = com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp of com.google.common.util.concurrent.SmoothRateLimiter