final class oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp extends oadd.com.google.common.util.concurrent.SmoothRateLimiter
{
private final long warmupPeriodMicros;
private double slope;
private double thresholdPermits;
private double coldFactor;
void <init>(oadd.com.google.common.util.concurrent.RateLimiter$SleepingStopwatch, long, java.util.concurrent.TimeUnit, double)
{
java.util.concurrent.TimeUnit v;
oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp v;
oadd.com.google.common.util.concurrent.RateLimiter$SleepingStopwatch v;
long v, v;
double v;
v := @this: oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp;
v := @parameter: oadd.com.google.common.util.concurrent.RateLimiter$SleepingStopwatch;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v := @parameter: double;
specialinvoke v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter: void <init>(oadd.com.google.common.util.concurrent.RateLimiter$SleepingStopwatch)>(v);
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMicros(long)>(v);
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: long warmupPeriodMicros> = v;
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double coldFactor> = v;
return;
}
void doSetRate(double, double)
{
long v, v;
byte v, v;
double v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp v;
v := @this: oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp;
v := @parameter: double;
v := @parameter: double;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double coldFactor>;
v = v * v;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: long warmupPeriodMicros>;
v = 0.5 * v;
v = v / v;
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double thresholdPermits> = v;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double thresholdPermits>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: long warmupPeriodMicros>;
v = 2.0 * v;
v = v + v;
v = v / v;
v = v + v;
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits> = v;
v = v - v;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double thresholdPermits>;
v = v - v;
v = v / v;
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double slope> = v;
v = v cmpl #Infinity;
if v != 0 goto label;
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double storedPermits> = 0.0;
goto label;
label:
v = v cmpl 0.0;
if v != 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits>;
goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double storedPermits>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits>;
v = v * v;
v = v / v;
label:
v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double storedPermits> = v;
label:
return;
}
long storedPermitsToWaitTime(double, double)
{
long v;
byte v;
double v, v, v, v, v, v, v, v, v, v, v, v, v;
oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp v;
v := @this: oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp;
v := @parameter: double;
v := @parameter: double;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double thresholdPermits>;
v = v - v;
v = v cmpl 0.0;
if v <= 0 goto label;
v = staticinvoke <java.lang.Math: double min(double,double)>(v, v);
v = specialinvoke v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double permitsToTime(double)>(v);
v = v - v;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double permitsToTime(double)>(v);
v = v + v;
v = v * v;
v = v / 2.0;
v = v - v;
label:
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double stableIntervalMicros>;
v = v * v;
v = v + v;
return v;
}
private double permitsToTime(double)
{
oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp v;
double v, v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp;
v := @parameter: double;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double stableIntervalMicros>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double slope>;
v = v * v;
v = v + v;
return v;
}
double coolDownIntervalMicros()
{
oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp v;
long v;
double v, v;
v := @this: oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: long warmupPeriodMicros>;
v = v.<oadd.com.google.common.util.concurrent.SmoothRateLimiter$SmoothWarmingUp: double maxPermits>;
v = v / v;
return v;
}
}