class sun.nio.ch.SolarisEventPort$EventHandlerTask implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.nio.ch.SolarisEventPort$EventHandlerTask
super_class: java.lang.Object
{
final sun.nio.ch.SolarisEventPort this$0;
descriptor: Lsun/nio/ch/SolarisEventPort;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(sun.nio.ch.SolarisEventPort);
descriptor: (Lsun/nio/ch/SolarisEventPort;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // sun.nio.ch.SolarisEventPort$EventHandlerTask this
0: .line 150
aload 0 /* this */
aload 1
putfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // sun.nio.ch.SolarisEventPort$EventHandlerTask this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/SolarisEventPort$EventHandlerTask;
MethodParameters:
Name Flags
this$0 final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=13, args_size=1
start local 0 // sun.nio.ch.SolarisEventPort$EventHandlerTask this
0: .line 153
invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
1: .line 152
astore 1 /* myGroupAndInvokeCount */
start local 1 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
2: .line 154
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 155
iconst_0
istore 3 /* replaceMe */
start local 3 // boolean replaceMe
6: .line 156
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
getstatic sun.nio.ch.SolarisEventPort.SIZEOF_PORT_EVENT:I
i2l
invokevirtual jdk.internal.misc.Unsafe.allocateMemory:(J)J
lstore 4 /* address */
start local 4 // long address
7: .line 160
StackMap locals: int int long
StackMap stack:
iload 2 /* isPooledThread */
ifeq 9
8: .line 161
aload 1 /* myGroupAndInvokeCount */
invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.resetInvokeCount:()V
9: .line 165
StackMap locals:
StackMap stack:
iconst_0
istore 3 /* replaceMe */
10: .line 169
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
getfield sun.nio.ch.SolarisEventPort.port:I
lload 4 /* address */
invokestatic sun.nio.ch.SolarisEventPort.port_get:(IJ)I
istore 6 /* n */
start local 6 // int n
11: .line 170
iload 6 /* n */
bipush -3
if_icmpeq 10
end local 6 // int n
12: .line 171
goto 20
StackMap locals:
StackMap stack: java.io.IOException
13: astore 6 /* x */
start local 6 // java.io.IOException x
14: .line 172
aload 6 /* x */
invokevirtual java.io.IOException.printStackTrace:()V
15: .line 217
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
invokevirtual jdk.internal.misc.Unsafe.freeMemory:(J)V
16: .line 219
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.SolarisEventPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 12 /* remaining */
start local 12 // int remaining
17: .line 220
iload 12 /* remaining */
ifne 19
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 19
18: .line 221
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.implClose:()V
end local 12 // int remaining
19: .line 173
StackMap locals: java.io.IOException
StackMap stack:
return
end local 6 // java.io.IOException x
20: .line 177
StackMap locals:
StackMap stack:
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
ldc 4
ladd
invokevirtual jdk.internal.misc.Unsafe.getShort:(J)S
istore 6 /* source */
start local 6 // short source
21: .line 178
iload 6 /* source */
iconst_4
if_icmpeq 33
22: .line 180
iload 6 /* source */
iconst_3
if_icmpne 7
23: .line 181
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.pollTask:()Ljava/lang/Runnable;
astore 7 /* task */
start local 7 // java.lang.Runnable task
24: .line 182
aload 7 /* task */
ifnonnull 30
25: .line 217
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
invokevirtual jdk.internal.misc.Unsafe.freeMemory:(J)V
26: .line 219
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.SolarisEventPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 12 /* remaining */
start local 12 // int remaining
27: .line 220
iload 12 /* remaining */
ifne 29
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 29
28: .line 221
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.implClose:()V
end local 12 // int remaining
29: .line 184
StackMap locals: int java.lang.Runnable
StackMap stack:
return
30: .line 187
StackMap locals:
StackMap stack:
iconst_1
istore 3 /* replaceMe */
31: .line 188
aload 7 /* task */
invokeinterface java.lang.Runnable.run:()V
end local 7 // java.lang.Runnable task
32: .line 191
goto 7
33: .line 195
StackMap locals:
StackMap stack:
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
ldc 8
ladd
invokevirtual jdk.internal.misc.Unsafe.getAddress:(J)J
l2i
istore 7 /* fd */
start local 7 // int fd
34: .line 197
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
lconst_0
ladd
invokevirtual jdk.internal.misc.Unsafe.getInt:(J)I
istore 8 /* events */
start local 8 // int events
35: .line 201
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
getfield sun.nio.ch.SolarisEventPort.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
36: .line 203
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
getfield sun.nio.ch.SolarisEventPort.fdToChannel:Ljava/util/Map;
iload 7 /* 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 9 /* ch */
start local 9 // sun.nio.ch.Port$PollableChannel ch
37: .line 204
goto 41
end local 9 // sun.nio.ch.Port$PollableChannel ch
StackMap locals: sun.nio.ch.SolarisEventPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int long int int int
StackMap stack: java.lang.Throwable
38: astore 10
39: .line 205
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
getfield sun.nio.ch.SolarisEventPort.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
40: .line 206
aload 10
athrow
start local 9 // sun.nio.ch.Port$PollableChannel ch
41: .line 205
StackMap locals: sun.nio.ch.Port$PollableChannel
StackMap stack:
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
getfield sun.nio.ch.SolarisEventPort.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
42: .line 209
aload 9 /* ch */
ifnull 7
43: .line 210
iconst_1
istore 3 /* replaceMe */
44: .line 212
aload 9 /* ch */
iload 8 /* events */
iload 2 /* isPooledThread */
invokeinterface sun.nio.ch.Port$PollableChannel.onEvent:(IZ)V
end local 9 // sun.nio.ch.Port$PollableChannel ch
end local 8 // int events
end local 7 // int fd
end local 6 // short source
45: .line 158
goto 7
46: .line 215
StackMap locals: sun.nio.ch.SolarisEventPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int long
StackMap stack: java.lang.Throwable
astore 11
47: .line 217
getstatic sun.nio.ch.SolarisEventPort.unsafe:Ljdk/internal/misc/Unsafe;
lload 4 /* address */
invokevirtual jdk.internal.misc.Unsafe.freeMemory:(J)V
48: .line 219
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
aload 0 /* this */
iload 3 /* replaceMe */
invokevirtual sun.nio.ch.SolarisEventPort.threadExit:(Ljava/lang/Runnable;Z)I
istore 12 /* remaining */
start local 12 // int remaining
49: .line 220
iload 12 /* remaining */
ifne 51
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 51
50: .line 221
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.implClose:()V
end local 12 // int remaining
51: .line 222
StackMap locals: sun.nio.ch.SolarisEventPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int long top top top top top java.lang.Throwable
StackMap stack:
aload 11
athrow
end local 4 // long address
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.SolarisEventPort$EventHandlerTask this
LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lsun/nio/ch/SolarisEventPort$EventHandlerTask;
2 52 1 myGroupAndInvokeCount Lsun/nio/ch/Invoker$GroupAndInvokeCount;
5 52 2 isPooledThread Z
6 52 3 replaceMe Z
7 52 4 address J
11 12 6 n I
14 20 6 x Ljava/io/IOException;
21 45 6 source S
24 32 7 task Ljava/lang/Runnable;
34 45 7 fd I
35 45 8 events I
37 38 9 ch Lsun/nio/ch/Port$PollableChannel;
41 45 9 ch Lsun/nio/ch/Port$PollableChannel;
17 19 12 remaining I
27 29 12 remaining I
49 51 12 remaining I
Exception table:
from to target type
10 12 13 Class java.io.IOException
36 38 38 any
7 15 46 any
20 25 46 any
30 46 46 any
}
SourceFile: "SolarisEventPort.java"
NestHost: sun.nio.ch.SolarisEventPort
InnerClasses:
GroupAndInvokeCount = sun.nio.ch.Invoker$GroupAndInvokeCount of sun.nio.ch.Invoker
abstract PollableChannel = sun.nio.ch.Port$PollableChannel of sun.nio.ch.Port
private EventHandlerTask = sun.nio.ch.SolarisEventPort$EventHandlerTask of sun.nio.ch.SolarisEventPort