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:Lsun/misc/Unsafe;
getstatic sun.nio.ch.SolarisEventPort.SIZEOF_PORT_EVENT:I
i2l
invokevirtual sun.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 167
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)V
11: .line 168
goto 19
StackMap locals:
StackMap stack: java.io.IOException
12: astore 6 /* x */
start local 6 // java.io.IOException x
13: .line 169
aload 6 /* x */
invokevirtual java.io.IOException.printStackTrace:()V
14: .line 214
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
invokevirtual sun.misc.Unsafe.freeMemory:(J)V
15: .line 216
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
16: .line 217
iload 12 /* remaining */
ifne 18
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 18
17: .line 218
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
18: .line 170
StackMap locals: java.io.IOException
StackMap stack:
return
end local 6 // java.io.IOException x
19: .line 174
StackMap locals:
StackMap stack:
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
ldc 4
ladd
invokevirtual sun.misc.Unsafe.getShort:(J)S
istore 6 /* source */
start local 6 // short source
20: .line 175
iload 6 /* source */
iconst_4
if_icmpeq 32
21: .line 177
iload 6 /* source */
iconst_3
if_icmpne 7
22: .line 178
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
23: .line 179
aload 7 /* task */
ifnonnull 29
24: .line 214
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
invokevirtual sun.misc.Unsafe.freeMemory:(J)V
25: .line 216
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
26: .line 217
iload 12 /* remaining */
ifne 28
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 28
27: .line 218
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
28: .line 181
StackMap locals: int java.lang.Runnable
StackMap stack:
return
29: .line 184
StackMap locals:
StackMap stack:
iconst_1
istore 3 /* replaceMe */
30: .line 185
aload 7 /* task */
invokeinterface java.lang.Runnable.run:()V
end local 7 // java.lang.Runnable task
31: .line 188
goto 7
32: .line 192
StackMap locals:
StackMap stack:
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
ldc 8
ladd
invokevirtual sun.misc.Unsafe.getAddress:(J)J
l2i
istore 7 /* fd */
start local 7 // int fd
33: .line 194
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
lconst_0
ladd
invokevirtual sun.misc.Unsafe.getInt:(J)I
istore 8 /* events */
start local 8 // int events
34: .line 198
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
35: .line 200
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
36: .line 201
goto 40
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
37: astore 10
38: .line 202
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
39: .line 203
aload 10
athrow
start local 9 // sun.nio.ch.Port$PollableChannel ch
40: .line 202
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
41: .line 206
aload 9 /* ch */
ifnull 7
42: .line 207
iconst_1
istore 3 /* replaceMe */
43: .line 209
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
44: .line 158
goto 7
45: .line 212
StackMap locals: sun.nio.ch.SolarisEventPort$EventHandlerTask sun.nio.ch.Invoker$GroupAndInvokeCount int int long
StackMap stack: java.lang.Throwable
astore 11
46: .line 214
getstatic sun.nio.ch.SolarisEventPort.unsafe:Lsun/misc/Unsafe;
lload 4 /* address */
invokevirtual sun.misc.Unsafe.freeMemory:(J)V
47: .line 216
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
48: .line 217
iload 12 /* remaining */
ifne 50
aload 0 /* this */
getfield sun.nio.ch.SolarisEventPort$EventHandlerTask.this$0:Lsun/nio/ch/SolarisEventPort;
invokevirtual sun.nio.ch.SolarisEventPort.isShutdown:()Z
ifeq 50
49: .line 218
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
50: .line 219
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 51 0 this Lsun/nio/ch/SolarisEventPort$EventHandlerTask;
2 51 1 myGroupAndInvokeCount Lsun/nio/ch/Invoker$GroupAndInvokeCount;
5 51 2 isPooledThread Z
6 51 3 replaceMe Z
7 51 4 address J
13 19 6 x Ljava/io/IOException;
20 44 6 source S
23 31 7 task Ljava/lang/Runnable;
33 44 7 fd I
34 44 8 events I
36 37 9 ch Lsun/nio/ch/Port$PollableChannel;
40 44 9 ch Lsun/nio/ch/Port$PollableChannel;
16 18 12 remaining I
26 28 12 remaining I
48 50 12 remaining I
Exception table:
from to target type
10 11 12 Class java.io.IOException
35 37 37 any
7 14 45 any
19 24 45 any
29 45 45 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