public class com.netflix.hystrix.util.HystrixRollingNumber
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.hystrix.util.HystrixRollingNumber
super_class: java.lang.Object
{
private static final com.netflix.hystrix.util.HystrixRollingNumber$Time ACTUAL_TIME;
descriptor: Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final com.netflix.hystrix.util.HystrixRollingNumber$Time time;
descriptor: Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final int timeInMilliseconds;
descriptor: I
flags: (0x0010) ACC_FINAL
final int numberOfBuckets;
descriptor: I
flags: (0x0010) ACC_FINAL
final int bucketSizeInMillseconds;
descriptor: I
flags: (0x0010) ACC_FINAL
final com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray buckets;
descriptor: Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
flags: (0x0010) ACC_FINAL
private final com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum cumulativeSum;
descriptor: Lcom/netflix/hystrix/util/HystrixRollingNumber$CumulativeSum;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.locks.ReentrantLock newBucketLock;
descriptor: Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new com.netflix.hystrix.util.HystrixRollingNumber$ActualTime
dup
invokespecial com.netflix.hystrix.util.HystrixRollingNumber$ActualTime.<init>:()V
putstatic com.netflix.hystrix.util.HystrixRollingNumber.ACTUAL_TIME:Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Integer>, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Integer>);
descriptor: (Lcom/netflix/hystrix/strategy/properties/HystrixProperty;Lcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
aload 2
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
invokespecial com.netflix.hystrix.util.HystrixRollingNumber.<init>:(II)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 2 1 timeInMilliseconds Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;
0 2 2 numberOfBuckets Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;
Signature: (Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;)V
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
timeInMilliseconds
numberOfBuckets
public void <init>(int, int);
descriptor: (II)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getstatic com.netflix.hystrix.util.HystrixRollingNumber.ACTUAL_TIME:Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
iload 1
iload 2
invokespecial com.netflix.hystrix.util.HystrixRollingNumber.<init>:(Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;II)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 2 1 timeInMilliseconds I
0 2 2 numberOfBuckets I
MethodParameters:
Name Flags
timeInMilliseconds
numberOfBuckets
void <init>(com.netflix.hystrix.util.HystrixRollingNumber$Time, int, int);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;II)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum
dup
invokespecial com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum.<init>:()V
putfield com.netflix.hystrix.util.HystrixRollingNumber.cumulativeSum:Lcom/netflix/hystrix/util/HystrixRollingNumber$CumulativeSum;
2: aload 0
new java.util.concurrent.locks.ReentrantLock
dup
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
putfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
3: aload 0
aload 1
putfield com.netflix.hystrix.util.HystrixRollingNumber.time:Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
4: aload 0
iload 2
putfield com.netflix.hystrix.util.HystrixRollingNumber.timeInMilliseconds:I
5: aload 0
iload 3
putfield com.netflix.hystrix.util.HystrixRollingNumber.numberOfBuckets:I
6: iload 2
iload 3
irem
ifeq 8
7: new java.lang.IllegalArgumentException
dup
ldc "The timeInMilliseconds must divide equally into numberOfBuckets. For example 1000/10 is ok, 1000/11 is not."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber com.netflix.hystrix.util.HystrixRollingNumber$Time int int
StackMap stack:
aload 0
iload 2
iload 3
idiv
putfield com.netflix.hystrix.util.HystrixRollingNumber.bucketSizeInMillseconds:I
9: aload 0
new com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray
dup
iload 3
invokespecial com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.<init>:(I)V
putfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 11 1 time Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
0 11 2 timeInMilliseconds I
0 11 3 numberOfBuckets I
MethodParameters:
Name Flags
time
timeInMilliseconds
numberOfBuckets
public void increment(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getAdder:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongAdder;
invokevirtual com.netflix.hystrix.util.LongAdder.increment:()V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 2 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
MethodParameters:
Name Flags
type
public void add(com.netflix.hystrix.util.HystrixRollingNumberEvent, long);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getAdder:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongAdder;
lload 2
invokevirtual com.netflix.hystrix.util.LongAdder.add:(J)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 2 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
0 2 2 value J
MethodParameters:
Name Flags
type
value
public void updateRollingMax(com.netflix.hystrix.util.HystrixRollingNumberEvent, long);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getMaxUpdater:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongMaxUpdater;
lload 2
invokevirtual com.netflix.hystrix.util.LongMaxUpdater.update:(J)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 2 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
0 2 2 value J
MethodParameters:
Name Flags
type
value
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 1
start local 1 1: aload 1
ifnull 3
2: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.cumulativeSum:Lcom/netflix/hystrix/util/HystrixRollingNumber$CumulativeSum;
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum.addBucket:(Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;)V
3: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.clear:()V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
1 5 1 lastBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
public long getCumulativeSum(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getValueOfLatestBucket:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.cumulativeSum:Lcom/netflix/hystrix/util/HystrixRollingNumber$CumulativeSum;
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum.get:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
ladd
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 1 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
MethodParameters:
Name Flags
type
public long getRollingSum(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: lconst_0
lreturn
3: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
lconst_0
lstore 3
start local 3 4: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.iterator:()Ljava/util/Iterator;
astore 6
goto 7
StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber com.netflix.hystrix.util.HystrixRollingNumberEvent com.netflix.hystrix.util.HystrixRollingNumber$Bucket long top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.netflix.hystrix.util.HystrixRollingNumber$Bucket
astore 5
start local 5 6: lload 3
aload 5
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getAdder:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongAdder;
invokevirtual com.netflix.hystrix.util.LongAdder.sum:()J
ladd
lstore 3
end local 5 7: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
8: lload 3
lreturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 9 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
1 9 2 lastBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
4 9 3 sum J
6 7 5 b Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
MethodParameters:
Name Flags
type
public long getValueOfLatestBucket(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: lconst_0
lreturn
3: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
aload 2
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.get:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
lreturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 4 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
1 4 2 lastBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
MethodParameters:
Name Flags
type
public long[] getValues(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)[J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: iconst_0
newarray 11
areturn
3: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.getArray:()[Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 3
start local 3 4: aload 3
arraylength
newarray 11
astore 4
start local 4 5: iconst_0
istore 5
start local 5 6: aload 3
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 14
StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber com.netflix.hystrix.util.HystrixRollingNumberEvent com.netflix.hystrix.util.HystrixRollingNumber$Bucket com.netflix.hystrix.util.HystrixRollingNumber$Bucket[] long[] int top int int com.netflix.hystrix.util.HystrixRollingNumber$Bucket[]
StackMap stack:
7: aload 9
iload 7
aaload
astore 6
start local 6 8: aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumberEvent.isCounter:()Z
ifeq 11
9: aload 4
iload 5
iinc 5 1
aload 6
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getAdder:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongAdder;
invokevirtual com.netflix.hystrix.util.LongAdder.sum:()J
lastore
10: goto 13
StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber com.netflix.hystrix.util.HystrixRollingNumberEvent com.netflix.hystrix.util.HystrixRollingNumber$Bucket com.netflix.hystrix.util.HystrixRollingNumber$Bucket[] long[] int com.netflix.hystrix.util.HystrixRollingNumber$Bucket int int com.netflix.hystrix.util.HystrixRollingNumber$Bucket[]
StackMap stack:
11: aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumberEvent.isMaxUpdater:()Z
ifeq 13
12: aload 4
iload 5
iinc 5 1
aload 6
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$Bucket.getMaxUpdater:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)Lcom/netflix/hystrix/util/LongMaxUpdater;
invokevirtual com.netflix.hystrix.util.LongMaxUpdater.max:()J
lastore
end local 6 13: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber com.netflix.hystrix.util.HystrixRollingNumberEvent com.netflix.hystrix.util.HystrixRollingNumber$Bucket com.netflix.hystrix.util.HystrixRollingNumber$Bucket[] long[] int top int int com.netflix.hystrix.util.HystrixRollingNumber$Bucket[]
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
14: iload 7
iload 8
if_icmplt 7
15: aload 4
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 16 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
1 16 2 lastBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
4 16 3 bucketArray [Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
5 16 4 values [J
6 16 5 i I
8 13 6 bucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
MethodParameters:
Name Flags
type
public long getRollingMaxValue(com.netflix.hystrix.util.HystrixRollingNumberEvent);
descriptor: (Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getValues:(Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;)[J
astore 2
start local 2 1: aload 2
arraylength
ifne 3
2: lconst_0
lreturn
3: StackMap locals: long[]
StackMap stack:
aload 2
invokestatic java.util.Arrays.sort:([J)V
4: aload 2
aload 2
arraylength
iconst_1
isub
laload
lreturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
0 5 1 type Lcom/netflix/hystrix/util/HystrixRollingNumberEvent;
1 5 2 values [J
MethodParameters:
Name Flags
type
com.netflix.hystrix.util.HystrixRollingNumber$Bucket getCurrentBucket();
descriptor: ()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
flags: (0x0000)
Code:
stack=7, locals=8, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.time:Lcom/netflix/hystrix/util/HystrixRollingNumber$Time;
invokeinterface com.netflix.hystrix.util.HystrixRollingNumber$Time.getCurrentTimeInMillis:()J
lstore 1
start local 1 1: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 3
start local 3 2: aload 3
ifnull 4
lload 1
aload 3
getfield com.netflix.hystrix.util.HystrixRollingNumber$Bucket.windowStart:J
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.bucketSizeInMillseconds:I
i2l
ladd
lcmp
ifge 4
3: aload 3
areturn
4: StackMap locals: long com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.tryLock:()Z
ifeq 33
5: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
ifnonnull 11
6: new com.netflix.hystrix.util.HystrixRollingNumber$Bucket
dup
lload 1
invokespecial com.netflix.hystrix.util.HystrixRollingNumber$Bucket.<init>:(J)V
astore 4
start local 4 7: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
aload 4
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.addLast:(Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;)V
8: aload 4
astore 7
9: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
10: aload 7
areturn
end local 4 11: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 12: goto 26
13: StackMap locals: int
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 5
start local 5 14: lload 1
aload 5
getfield com.netflix.hystrix.util.HystrixRollingNumber$Bucket.windowStart:J
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.bucketSizeInMillseconds:I
i2l
ladd
lcmp
ifge 18
15: aload 5
astore 7
16: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
17: aload 7
areturn
18: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack:
lload 1
aload 5
getfield com.netflix.hystrix.util.HystrixRollingNumber$Bucket.windowStart:J
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.bucketSizeInMillseconds:I
i2l
ladd
lsub
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.timeInMilliseconds:I
i2l
lcmp
ifle 23
19: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.reset:()V
20: aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 7
21: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
22: aload 7
areturn
23: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
new com.netflix.hystrix.util.HystrixRollingNumber$Bucket
dup
aload 5
getfield com.netflix.hystrix.util.HystrixRollingNumber$Bucket.windowStart:J
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.bucketSizeInMillseconds:I
i2l
ladd
invokespecial com.netflix.hystrix.util.HystrixRollingNumber$Bucket.<init>:(J)V
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.addLast:(Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;)V
24: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.cumulativeSum:Lcom/netflix/hystrix/util/HystrixRollingNumber$CumulativeSum;
aload 5
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum.addBucket:(Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;)V
end local 5 25: iinc 4 1
StackMap locals:
StackMap stack:
26: iload 4
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.numberOfBuckets:I
if_icmplt 13
end local 4 27: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 7
28: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
29: aload 7
areturn
30: StackMap locals: com.netflix.hystrix.util.HystrixRollingNumber long com.netflix.hystrix.util.HystrixRollingNumber$Bucket
StackMap stack: java.lang.Throwable
astore 6
31: aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
32: aload 6
athrow
33: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.HystrixRollingNumber.buckets:Lcom/netflix/hystrix/util/HystrixRollingNumber$BucketCircularArray;
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
astore 3
34: aload 3
ifnull 36
35: aload 3
areturn
36: StackMap locals:
StackMap stack:
ldc 5
invokestatic java.lang.Thread.sleep:(J)V
37: goto 39
StackMap locals:
StackMap stack: java.lang.Exception
38: pop
39: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.netflix.hystrix.util.HystrixRollingNumber.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lcom/netflix/hystrix/util/HystrixRollingNumber;
1 40 1 currentTime J
2 40 3 currentBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
7 11 4 newBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
12 27 4 i I
14 25 5 lastBucket Lcom/netflix/hystrix/util/HystrixRollingNumber$Bucket;
Exception table:
from to target type
5 9 30 any
11 16 30 any
18 21 30 any
23 28 30 any
36 37 38 Class java.lang.Exception
}
SourceFile: "HystrixRollingNumber.java"
NestMembers:
com.netflix.hystrix.util.HystrixRollingNumber$ActualTime com.netflix.hystrix.util.HystrixRollingNumber$Bucket com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray$ListState com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum com.netflix.hystrix.util.HystrixRollingNumber$Time
InnerClasses:
private ActualTime = com.netflix.hystrix.util.HystrixRollingNumber$ActualTime of com.netflix.hystrix.util.HystrixRollingNumber
Bucket = com.netflix.hystrix.util.HystrixRollingNumber$Bucket of com.netflix.hystrix.util.HystrixRollingNumber
BucketCircularArray = com.netflix.hystrix.util.HystrixRollingNumber$BucketCircularArray of com.netflix.hystrix.util.HystrixRollingNumber
CumulativeSum = com.netflix.hystrix.util.HystrixRollingNumber$CumulativeSum of com.netflix.hystrix.util.HystrixRollingNumber
abstract Time = com.netflix.hystrix.util.HystrixRollingNumber$Time of com.netflix.hystrix.util.HystrixRollingNumber