final class io.netty.util.HashedWheelTimer$Worker implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.netty.util.HashedWheelTimer$Worker
super_class: java.lang.Object
{
private final java.util.Set<io.netty.util.Timeout> unprocessedTimeouts;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Lio/netty/util/Timeout;>;
private long tick;
descriptor: J
flags: (0x0002) ACC_PRIVATE
final io.netty.util.HashedWheelTimer this$0;
descriptor: Lio/netty/util/HashedWheelTimer;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(io.netty.util.HashedWheelTimer);
descriptor: (Lio/netty/util/HashedWheelTimer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/HashedWheelTimer$Worker;
MethodParameters:
Name Flags
this$0 final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=1
start local 0 0: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
invokestatic java.lang.System.nanoTime:()J
putfield io.netty.util.HashedWheelTimer.startTime:J
1: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.startTime:J
lconst_0
lcmp
ifne 3
2: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
lconst_1
putfield io.netty.util.HashedWheelTimer.startTime:J
3: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.startTimeInitialized:Ljava/util/concurrent/CountDownLatch;
invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.netty.util.HashedWheelTimer$Worker.waitForNextTick:()J
lstore 1
start local 1 5: lload 1
lconst_0
lcmp
ifle 13
6: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.tick:J
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.mask:I
i2l
land
l2i
istore 3
start local 3 7: aload 0
invokevirtual io.netty.util.HashedWheelTimer$Worker.processCancelledTasks:()V
8: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
iload 3
aaload
9: astore 4
start local 4 10: aload 0
invokevirtual io.netty.util.HashedWheelTimer$Worker.transferTimeoutsToBuckets:()V
11: aload 4
lload 1
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts:(J)V
12: aload 0
dup
getfield io.netty.util.HashedWheelTimer$Worker.tick:J
lconst_1
ladd
putfield io.netty.util.HashedWheelTimer$Worker.tick:J
end local 4 end local 3 end local 1 13: StackMap locals:
StackMap stack:
getstatic io.netty.util.HashedWheelTimer.WORKER_STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
iconst_1
if_icmpeq 4
14: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 18
StackMap locals: io.netty.util.HashedWheelTimer$Worker top int int io.netty.util.HashedWheelTimer$HashedWheelBucket[]
StackMap stack:
15: aload 4
iload 2
aaload
astore 1
start local 1 16: aload 1
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.clearTimeouts:(Ljava/util/Set;)V
end local 1 17: iinc 2 1
StackMap locals:
StackMap stack:
18: iload 2
iload 3
if_icmplt 15
19: StackMap locals: io.netty.util.HashedWheelTimer$Worker
StackMap stack:
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.timeouts:Ljava/util/Queue;
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
astore 1
start local 1 20: aload 1
ifnonnull 22
21: goto 25
22: StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
StackMap stack:
aload 1
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.isCancelled:()Z
ifne 19
23: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 1 24: goto 19
25: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.netty.util.HashedWheelTimer$Worker.processCancelledTasks:()V
26: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lio/netty/util/HashedWheelTimer$Worker;
5 13 1 deadline J
7 13 3 idx I
10 13 4 bucket Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
16 17 1 bucket Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
20 24 1 timeout Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
private void transferTimeoutsToBuckets();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 14
2: StackMap locals: int
StackMap stack:
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.timeouts:Ljava/util/Queue;
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
astore 2
start local 2 3: aload 2
ifnonnull 5
4: goto 15
5: StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
StackMap stack:
aload 2
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:()I
iconst_1
if_icmpne 7
6: goto 13
7: StackMap locals:
StackMap stack:
aload 2
getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.deadline:J
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.tickDuration:J
ldiv
lstore 3
start local 3 8: aload 2
lload 3
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.tick:J
lsub
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
arraylength
i2l
ldiv
putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.remainingRounds:J
9: lload 3
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.tick:J
invokestatic java.lang.Math.max:(JJ)J
lstore 5
start local 5 10: lload 5
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.mask:I
i2l
land
l2i
istore 7
start local 7 11: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
iload 7
aaload
astore 8
start local 8 12: aload 8
aload 2
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.addTimeout:(Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;)V
end local 8 end local 7 end local 5 end local 3 end local 2 13: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
14: iload 1
ldc 100000
if_icmplt 2
end local 1 15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lio/netty/util/HashedWheelTimer$Worker;
1 15 1 i I
3 13 2 timeout Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
8 13 3 calculated J
10 13 5 ticks J
11 13 7 stopIndex I
12 13 8 bucket Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
private void processCancelledTasks();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.cancelledTimeouts:Ljava/util/Queue;
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
astore 1
start local 1 1: aload 1
ifnonnull 3
2: goto 9
3: StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
StackMap stack:
aload 1
invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.remove:()V
4: goto 0
StackMap locals:
StackMap stack: java.lang.Throwable
5: astore 2
start local 2 6: getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isWarnEnabled:()Z
ifeq 0
7: getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "An exception was thrown while process a cancellation task"
aload 2
invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 end local 1 8: goto 0
9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/netty/util/HashedWheelTimer$Worker;
1 8 1 timeout Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
6 8 2 t Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
private long waitForNextTick();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=7, args_size=1
start local 0 0: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.tickDuration:J
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.tick:J
lconst_1
ladd
lmul
lstore 1
start local 1 1: StackMap locals: long
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
getfield io.netty.util.HashedWheelTimer.startTime:J
lsub
lstore 3
start local 3 2: lload 1
lload 3
lsub
ldc 999999
ladd
ldc 1000000
ldiv
lstore 5
start local 5 3: lload 5
lconst_0
lcmp
ifgt 7
4: lload 3
ldc -9223372036854775808
lcmp
ifne 6
5: ldc -9223372036854775807
lreturn
6: StackMap locals: long long
StackMap stack:
lload 3
lreturn
7: StackMap locals:
StackMap stack:
invokestatic io.netty.util.internal.PlatformDependent.isWindows:()Z
ifeq 9
8: lload 5
ldc 10
ldiv
ldc 10
lmul
lstore 5
9: StackMap locals:
StackMap stack:
lload 5
invokestatic java.lang.Thread.sleep:(J)V
10: goto 1
StackMap locals:
StackMap stack: java.lang.InterruptedException
11: pop
12: getstatic io.netty.util.HashedWheelTimer.WORKER_STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
aload 0
getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
iconst_2
if_icmpne 1
13: ldc -9223372036854775808
lreturn
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/netty/util/HashedWheelTimer$Worker;
1 14 1 deadline J
2 14 3 currentTime J
3 14 5 sleepTimeMs J
Exception table:
from to target type
9 10 11 Class java.lang.InterruptedException
public java.util.Set<io.netty.util.Timeout> unprocessedTimeouts();
descriptor: ()Ljava/util/Set;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/util/HashedWheelTimer$Worker;
Signature: ()Ljava/util/Set<Lio/netty/util/Timeout;>;
}
SourceFile: "HashedWheelTimer.java"
NestHost: io.netty.util.HashedWheelTimer
InnerClasses:
private final HashedWheelBucket = io.netty.util.HashedWheelTimer$HashedWheelBucket of io.netty.util.HashedWheelTimer
private final HashedWheelTimeout = io.netty.util.HashedWheelTimer$HashedWheelTimeout of io.netty.util.HashedWheelTimer
private final Worker = io.netty.util.HashedWheelTimer$Worker of io.netty.util.HashedWheelTimer