class io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow
super_class: java.lang.Object
{
private final io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary history;
descriptor: Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary[] buckets;
descriptor: [Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long bucketSizeInNs;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(long, int);
descriptor: (JI)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: lload 1
iload 3
i2l
lrem
lconst_0
lcmp
ifeq 3
2: new java.lang.IllegalArgumentException
dup
ldc "Window size should be divisible by number of buckets."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow long int
StackMap stack:
aload 0
iload 3
anewarray io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
putfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
4: iconst_0
istore 4
start local 4 5: goto 8
6: StackMap locals: int
StackMap stack:
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iload 4
new io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
dup
invokespecial io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.<init>:()V
aastore
7: iinc 4 1
StackMap locals:
StackMap stack:
8: iload 4
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
if_icmplt 6
end local 4 9: aload 0
ldc 1000000
lload 1
lmul
iload 3
i2l
ldiv
putfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.bucketSizeInNs:J
10: aload 0
new io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
dup
invokespecial io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.<init>:()V
putfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.history:Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
11: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
0 12 1 windowSizeInMs J
0 12 3 numberOfBuckets I
5 9 4 i I
MethodParameters:
Name Flags
windowSizeInMs
numberOfBuckets
public void add(io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$Operation);
descriptor: (Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$Operation;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$Operation.end:J
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.getBucket:(J)Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
aload 1
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.add:(Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$Operation;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
0 2 1 operation Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$Operation;
MethodParameters:
Name Flags
operation
public io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary totalSummary();
descriptor: ()Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: new io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
dup
invokespecial io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.<init>:()V
astore 1
start local 1 1: aload 1
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.history:Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.add:(Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;)V
2: aload 1
aload 0
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.windowSummary:()Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.add:(Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;)V
3: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
1 4 1 total Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
public io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary windowSummary();
descriptor: ()Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: new io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
dup
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iconst_0
aaload
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.bucketIndex:J
invokespecial io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.<init>:(J)V
astore 1
start local 1 1: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 5
StackMap locals: io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary top int int io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary[]
StackMap stack:
2: aload 5
iload 3
aaload
astore 2
start local 2 3: aload 1
aload 2
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.add:(Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;)V
end local 2 4: iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
iload 4
if_icmplt 2
6: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
1 7 1 window Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
3 4 2 bucket Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
public void updateTime();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokestatic java.lang.System.nanoTime:()J
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.getBucket:(J)Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
pop
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
private io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary getBucket(long);
descriptor: (J)Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: lload 1
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.bucketSizeInNs:J
ldiv
lstore 3
start local 3 1: lload 3
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iconst_0
aaload
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.bucketIndex:J
lcmp
ifge 3
2: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.history:Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
areturn
3: StackMap locals: long
StackMap stack:
aload 0
lload 3
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.shiftIfNecessary:(J)V
4: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
lload 3
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iconst_0
aaload
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.bucketIndex:J
lsub
l2i
aaload
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
0 5 1 timeInNs J
1 5 3 bucketIndex J
MethodParameters:
Name Flags
timeInNs
private void shiftIfNecessary(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=7, args_size=2
start local 0 start local 1 0: lload 1
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
iconst_1
isub
aaload
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.bucketIndex:J
lsub
lstore 3
start local 3 1: lload 3
lconst_0
lcmp
ifgt 3
2: return
3: StackMap locals: long
StackMap stack:
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
i2l
lload 3
invokestatic java.lang.Long.min:(JJ)J
l2i
istore 5
start local 5 4: iconst_0
istore 6
start local 6 5: goto 8
6: StackMap locals: int int
StackMap stack:
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.history:Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iload 6
aaload
invokevirtual io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.add:(Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;)V
7: iinc 6 1
StackMap locals:
StackMap stack:
8: iload 6
iload 5
if_icmplt 6
end local 6 9: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iload 5
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iconst_0
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
iload 5
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
10: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
iload 5
isub
istore 6
start local 6 11: goto 14
12: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
iload 6
new io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary
dup
lload 1
iload 6
i2l
ladd
lconst_1
ladd
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
i2l
lsub
invokespecial io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary.<init>:(J)V
aastore
13: iinc 6 1
StackMap locals:
StackMap stack:
14: iload 6
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
if_icmplt 12
end local 6 15: return
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
0 16 1 bucketIndex J
1 16 3 shiftUnlimited J
4 16 5 shift I
5 9 6 i I
11 15 6 i I
MethodParameters:
Name Flags
bucketIndex
public long getMetricRollingWindowSizeInMs();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.bucketSizeInNs:J
aload 0
getfield io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow.buckets:[Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow$Summary;
arraylength
i2l
lmul
ldc 1000000
ldiv
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/circuitbreaker/impl/CircuitBreakerMetrics$RollingWindow;
}
SourceFile: "CircuitBreakerMetrics.java"
NestHost: io.vertx.circuitbreaker.impl.CircuitBreakerMetrics
InnerClasses:
Operation = io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$Operation of io.vertx.circuitbreaker.impl.CircuitBreakerMetrics
private RollingWindow = io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow of io.vertx.circuitbreaker.impl.CircuitBreakerMetrics
private Summary = io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow$Summary of io.vertx.circuitbreaker.impl.CircuitBreakerMetrics$RollingWindow