class sun.nio.ch.EPollPort$EventHandlerTask implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.nio.ch.EPollPort$EventHandlerTask
super_class: java.lang.Object
{
final sun.nio.ch.EPollPort this$0;
descriptor: Lsun/nio/ch/EPollPort;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(sun.nio.ch.EPollPort);
descriptor: (Lsun/nio/ch/EPollPort;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
0: .line 190
aload 0 /* this */
aload 1
putfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/EPollPort$EventHandlerTask;
MethodParameters:
Name Flags
this$0 final
private sun.nio.ch.EPollPort$Event poll();
descriptor: ()Lsun/nio/ch/EPollPort$Event;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=11, args_size=1
start local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
0: .line 194
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.epfd:I
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.address:J
sipush 512
invokestatic sun.nio.ch.EPoll.epollWait:(IJI)I
istore 1 /* n */
start local 1 // int n
1: .line 201
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannelLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
2: .line 203
goto 26
3: .line 204
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.address:J
iload 1 /* n */
invokestatic sun.nio.ch.EPoll.getEvent:(JI)J
lstore 2 /* eventAddress */
start local 2 // long eventAddress
4: .line 205
lload 2 /* eventAddress */
invokestatic sun.nio.ch.EPoll.getDescriptor:(J)I
istore 4 /* fd */
start local 4 // int fd
5: .line 208
iload 4 /* fd */
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.sp:[I
iconst_0
iaload
if_icmpne 15
6: .line 209
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.wakeupCount:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
ifne 8
7: .line 211
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.sp:[I
iconst_0
iaload
invokestatic sun.nio.ch.EPollPort.drain1:(I)V
8: .line 216
StackMap locals: long int
StackMap stack:
iload 1 /* n */
ifle 11
9: .line 217
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.EXECUTE_TASK_OR_SHUTDOWN:Lsun/nio/ch/EPollPort$Event;
invokevirtual java.util.concurrent.ArrayBlockingQueue.offer:(Ljava/lang/Object;)Z
pop
10: .line 218
goto 26
11: .line 220
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.EXECUTE_TASK_OR_SHUTDOWN:Lsun/nio/ch/EPollPort$Event;
astore 9
12: .line 238
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannelLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
13: .line 244
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.NEED_TO_POLL:Lsun/nio/ch/EPollPort$Event;
invokevirtual java.util.concurrent.ArrayBlockingQueue.offer:(Ljava/lang/Object;)Z
pop
14: .line 220
aload 9
areturn
15: .line 223
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannel:Ljava/util/Map;
iload 4 /* fd */
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.nio.ch.Port$PollableChannel
astore 5 /* channel */
start local 5 // sun.nio.ch.Port$PollableChannel channel
16: .line 224
aload 5 /* channel */
ifnull 26
17: .line 225
lload 2 /* eventAddress */
invokestatic sun.nio.ch.EPoll.getEvents:(J)I
istore 6 /* events */
start local 6 // int events
18: .line 226
new sun.nio.ch.EPollPort$Event
dup
aload 5 /* channel */
iload 6 /* events */
invokespecial sun.nio.ch.EPollPort$Event.<init>:(Lsun/nio/ch/Port$PollableChannel;I)V
astore 7 /* ev */
start local 7 // sun.nio.ch.EPollPort$Event ev
19: .line 230
iload 1 /* n */
ifle 22
20: .line 231
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
aload 7 /* ev */
invokevirtual java.util.concurrent.ArrayBlockingQueue.offer:(Ljava/lang/Object;)Z
pop
21: .line 232
goto 26
22: .line 233
StackMap locals: sun.nio.ch.Port$PollableChannel int sun.nio.ch.EPollPort$Event
StackMap stack:
aload 7 /* ev */
astore 9
23: .line 238
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannelLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
24: .line 244
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.NEED_TO_POLL:Lsun/nio/ch/EPollPort$Event;
invokevirtual java.util.concurrent.ArrayBlockingQueue.offer:(Ljava/lang/Object;)Z
pop
25: .line 233
aload 9
areturn
end local 7 // sun.nio.ch.EPollPort$Event ev
end local 6 // int events
end local 5 // sun.nio.ch.Port$PollableChannel channel
end local 4 // int fd
end local 2 // long eventAddress
26: .line 203
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask int
StackMap stack:
iload 1 /* n */
iinc 1 /* n */ -1
ifgt 3
27: .line 237
goto 31
StackMap locals:
StackMap stack: java.lang.Throwable
28: astore 8
29: .line 238
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannelLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
30: .line 239
aload 8
athrow
31: .line 238
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.fdToChannelLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
end local 1 // int n
32: .line 193
goto 0
33: .line 241
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask
StackMap stack: java.lang.Throwable
astore 10
34: .line 244
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.NEED_TO_POLL:Lsun/nio/ch/EPollPort$Event;
invokevirtual java.util.concurrent.ArrayBlockingQueue.offer:(Ljava/lang/Object;)Z
pop
35: .line 245
aload 10
athrow
end local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lsun/nio/ch/EPollPort$EventHandlerTask;
1 32 1 n I
4 26 2 eventAddress J
5 26 4 fd I
16 26 5 channel Lsun/nio/ch/Port$PollableChannel;
18 26 6 events I
19 26 7 ev Lsun/nio/ch/EPollPort$Event;
Exception table:
from to target type
2 12 28 any
15 23 28 any
26 28 28 any
0 13 33 any
15 24 33 any
26 33 33 any
Exceptions:
throws java.io.IOException
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=1
start local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
0: .line 250
invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
1: .line 249
astore 1 /* myGroupAndInvokeCount */
start local 1 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
2: .line 251
aload 1 /* myGroupAndInvokeCount */
ifnull 3
iconst_1
goto 4
StackMap locals: sun.nio.ch.Invoker$GroupAndInvokeCount
StackMap stack:
3: iconst_0
StackMap locals:
StackMap stack: int
4: istore 2 /* isPooledThread */
start local 2 // boolean isPooledThread
5: .line 252
iconst_0
istore 3 /* replaceMe */
start local 3 // boolean replaceMe
6: .line 257
StackMap locals: int int
StackMap stack:
iload 2 /* isPooledThread */
ifeq 8
7: .line 258
aload 1 /* myGroupAndInvokeCount */
invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.resetInvokeCount:()V
8: .line 261
StackMap locals:
StackMap stack:
iconst_0
istore 3 /* replaceMe */
9: .line 262
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.queue:Ljava/util/concurrent/ArrayBlockingQueue;
invokevirtual java.util.concurrent.ArrayBlockingQueue.take:()Ljava/lang/Object;
checkcast sun.nio.ch.EPollPort$Event
astore 4 /* ev */
start local 4 // sun.nio.ch.EPollPort$Event ev
10: .line 266
aload 4 /* ev */
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.NEED_TO_POLL:Lsun/nio/ch/EPollPort$Event;
if_acmpne 21
11: .line 268
aload 0 /* this */
invokevirtual sun.nio.ch.EPollPort$EventHandlerTask.poll:()Lsun/nio/ch/EPollPort$Event;
astore 4 /* ev */
12: .line 269
goto 21
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int sun.nio.ch.EPollPort$Event
StackMap stack: java.io.IOException
13: astore 5 /* x */
start local 5 // java.io.IOException x
14: .line 270
aload 5 /* x */
invokevirtual java.io.IOException.printStackTrace:()V
15: .line 302
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.EPollPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 7 /* remaining */
start local 7 // int remaining
16: .line 303
iload 7 /* remaining */
ifne 18
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.isShutdown:()Z
ifeq 18
17: .line 304
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.implClose:()V
end local 7 // int remaining
18: .line 271
StackMap locals: java.io.IOException
StackMap stack:
return
end local 5 // java.io.IOException x
end local 4 // sun.nio.ch.EPollPort$Event ev
19: .line 274
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int
StackMap stack: java.lang.InterruptedException
pop
20: .line 275
goto 6
start local 4 // sun.nio.ch.EPollPort$Event ev
21: .line 279
StackMap locals: sun.nio.ch.EPollPort$Event
StackMap stack:
aload 4 /* ev */
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
getfield sun.nio.ch.EPollPort.EXECUTE_TASK_OR_SHUTDOWN:Lsun/nio/ch/EPollPort$Event;
if_acmpne 31
22: .line 280
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.pollTask:()Ljava/lang/Runnable;
astore 5 /* task */
start local 5 // java.lang.Runnable task
23: .line 281
aload 5 /* task */
ifnonnull 28
24: .line 302
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.EPollPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 7 /* remaining */
start local 7 // int remaining
25: .line 303
iload 7 /* remaining */
ifne 27
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.isShutdown:()Z
ifeq 27
26: .line 304
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.implClose:()V
end local 7 // int remaining
27: .line 283
StackMap locals: java.lang.Runnable
StackMap stack:
return
28: .line 286
StackMap locals:
StackMap stack:
iconst_1
istore 3 /* replaceMe */
29: .line 287
aload 5 /* task */
invokeinterface java.lang.Runnable.run:()V
30: .line 288
goto 6
end local 5 // java.lang.Runnable task
31: .line 293
StackMap locals:
StackMap stack:
aload 4 /* ev */
invokevirtual sun.nio.ch.EPollPort$Event.channel:()Lsun/nio/ch/Port$PollableChannel;
aload 4 /* ev */
invokevirtual sun.nio.ch.EPollPort$Event.events:()I
iload 2 /* isPooledThread */
invokeinterface sun.nio.ch.Port$PollableChannel.onEvent:(IZ)V
32: .line 294
goto 6
StackMap locals:
StackMap stack: java.lang.Error
33: astore 5 /* x */
start local 5 // java.lang.Error x
34: .line 295
iconst_1
istore 3 /* replaceMe */
aload 5 /* x */
athrow
end local 5 // java.lang.Error x
35: .line 296
StackMap locals:
StackMap stack: java.lang.RuntimeException
astore 5 /* x */
start local 5 // java.lang.RuntimeException x
36: .line 297
iconst_1
istore 3 /* replaceMe */
aload 5 /* x */
athrow
end local 5 // java.lang.RuntimeException x
end local 4 // sun.nio.ch.EPollPort$Event ev
37: .line 300
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int
StackMap stack: java.lang.Throwable
astore 6
38: .line 302
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.EPollPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 7 /* remaining */
start local 7 // int remaining
39: .line 303
iload 7 /* remaining */
ifne 41
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.isShutdown:()Z
ifeq 41
40: .line 304
aload 0 /* this */
getfield sun.nio.ch.EPollPort$EventHandlerTask.this$0:Lsun/nio/ch/EPollPort;
invokevirtual sun.nio.ch.EPollPort.implClose:()V
end local 7 // int remaining
41: .line 306
StackMap locals: sun.nio.ch.EPollPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int top top java.lang.Throwable
StackMap stack:
aload 6
athrow
end local 3 // boolean replaceMe
end local 2 // boolean isPooledThread
end local 1 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
end local 0 // sun.nio.ch.EPollPort$EventHandlerTask this
LocalVariableTable:
Start End Slot Name Signature
0 42 0 this Lsun/nio/ch/EPollPort$EventHandlerTask;
2 42 1 myGroupAndInvokeCount Lsun/nio/ch/Invoker$GroupAndInvokeCount;
5 42 2 isPooledThread Z
6 42 3 replaceMe Z
10 19 4 ev Lsun/nio/ch/EPollPort$Event;
21 37 4 ev Lsun/nio/ch/EPollPort$Event;
14 19 5 x Ljava/io/IOException;
23 31 5 task Ljava/lang/Runnable;
34 35 5 x Ljava/lang/Error;
36 37 5 x Ljava/lang/RuntimeException;
16 18 7 remaining I
25 27 7 remaining I
39 41 7 remaining I
Exception table:
from to target type
11 12 13 Class java.io.IOException
8 15 19 Class java.lang.InterruptedException
31 32 33 Class java.lang.Error
31 32 35 Class java.lang.RuntimeException
6 15 37 any
19 24 37 any
28 37 37 any
}
SourceFile: "EPollPort.java"
NestHost: sun.nio.ch.EPollPort
InnerClasses:
Event = sun.nio.ch.EPollPort$Event of sun.nio.ch.EPollPort
private EventHandlerTask = sun.nio.ch.EPollPort$EventHandlerTask of sun.nio.ch.EPollPort
GroupAndInvokeCount = sun.nio.ch.Invoker$GroupAndInvokeCount of sun.nio.ch.Invoker
abstract PollableChannel = sun.nio.ch.Port$PollableChannel of sun.nio.ch.Port