final class sun.nio.ch.WindowsSelectorImpl extends sun.nio.ch.SelectorImpl
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.nio.ch.WindowsSelectorImpl
super_class: sun.nio.ch.SelectorImpl
{
private final int INIT_CAP;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 8
private static final int MAX_SELECTABLE_FDS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1024
private sun.nio.ch.SelectionKeyImpl[] channelArray;
descriptor: [Lsun/nio/ch/SelectionKeyImpl;
flags: (0x0002) ACC_PRIVATE
private sun.nio.ch.PollArrayWrapper pollWrapper;
descriptor: Lsun/nio/ch/PollArrayWrapper;
flags: (0x0002) ACC_PRIVATE
private int totalChannels;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int threadsCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final java.util.List<sun.nio.ch.WindowsSelectorImpl$SelectThread> threads;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lsun/nio/ch/WindowsSelectorImpl$SelectThread;>;
private final java.nio.channels.Pipe wakeupPipe;
descriptor: Ljava/nio/channels/Pipe;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int wakeupSourceFd;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int wakeupSinkFd;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.lang.Object closeLock;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private final sun.nio.ch.WindowsSelectorImpl$FdMap fdMap;
descriptor: Lsun/nio/ch/WindowsSelectorImpl$FdMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.nio.ch.WindowsSelectorImpl$SubSelector subSelector;
descriptor: Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long timeout;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final java.lang.Object interruptLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile boolean interruptTriggered;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private final sun.nio.ch.WindowsSelectorImpl$StartLock startLock;
descriptor: Lsun/nio/ch/WindowsSelectorImpl$StartLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.nio.ch.WindowsSelectorImpl$FinishLock finishLock;
descriptor: Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long updateCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lsun/nio/ch/WindowsSelectorImpl;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
3: invokestatic sun.nio.ch.IOUtil.load:()V
4: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.nio.channels.spi.SelectorProvider);
descriptor: (Ljava/nio/channels/spi/SelectorProvider;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tsc cannot be resolved or is not a field\n\tThe method addWakeupSocket(int, int) is undefined for the type PollArrayWrapper\n\tThe method addEntry(SelChImpl) in the type PollArrayWrapper is not applicable for the arguments (int, SelectionKeyImpl)\n\tThe method addWakeupSocket(int, int) is undefined for the type PollArrayWrapper\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/WindowsSelectorImpl;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sp
protected int doSelect(long);
descriptor: (J)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
ifnonnull 2
1: new java.nio.channels.ClosedSelectorException
dup
invokespecial java.nio.channels.ClosedSelectorException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield sun.nio.ch.WindowsSelectorImpl.timeout:J
3: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.processDeregisterQueue:()V
4: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
ifeq 7
5: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket:()V
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.adjustThreadsCount:()V
8: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.finishLock:Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$FinishLock.reset:()V
9: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.startLock:Lsun/nio/ch/WindowsSelectorImpl$StartLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$StartLock.startThreads:()V
10: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.begin:()V
11: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.subSelector:Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
invokevirtual sun.nio.ch.WindowsSelectorImpl$SubSelector.poll:()I
pop
12: goto 15
StackMap locals:
StackMap stack: java.io.IOException
13: astore 3
start local 3 14: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.finishLock:Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
aload 3
invokevirtual sun.nio.ch.WindowsSelectorImpl$FinishLock.setException:(Ljava/io/IOException;)V
end local 3 15: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifle 21
16: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.finishLock:Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$FinishLock.waitForHelperThreads:()V
17: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
18: astore 4
19: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.end:()V
20: aload 4
athrow
21: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.end:()V
22: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.finishLock:Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$FinishLock.checkForException:()V
23: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.processDeregisterQueue:()V
24: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys:()I
istore 3
start local 3 25: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket:()V
26: iload 3
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 27 1 timeout J
14 15 3 e Ljava/io/IOException;
25 27 3 updated I
Exception table:
from to target type
11 12 13 Class java.io.IOException
10 18 18 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
timeout
private void adjustThreadsCount();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmple 10
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 1
start local 1 2: goto 8
3: StackMap locals: int
StackMap stack:
new sun.nio.ch.WindowsSelectorImpl$SelectThread
dup
aload 0
iload 1
invokespecial sun.nio.ch.WindowsSelectorImpl$SelectThread.<init>:(Lsun/nio/ch/WindowsSelectorImpl;I)V
astore 2
start local 2 4: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
5: aload 2
iconst_1
invokevirtual sun.nio.ch.WindowsSelectorImpl$SelectThread.setDaemon:(Z)V
6: aload 2
invokevirtual sun.nio.ch.WindowsSelectorImpl$SelectThread.start:()V
end local 2 7: iinc 1 1
StackMap locals:
StackMap stack:
8: iload 1
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
if_icmplt 3
end local 1 9: goto 16
StackMap locals:
StackMap stack:
10: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmpge 16
11: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 1
start local 1 12: goto 15
13: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
iload 1
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
checkcast sun.nio.ch.WindowsSelectorImpl$SelectThread
invokevirtual sun.nio.ch.WindowsSelectorImpl$SelectThread.makeZombie:()V
14: iinc 1 -1
StackMap locals:
StackMap stack:
15: iload 1
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
if_icmpge 13
end local 1 16: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/nio/ch/WindowsSelectorImpl;
2 9 1 i I
4 7 2 newThread Lsun/nio/ch/WindowsSelectorImpl$SelectThread;
12 16 1 i I
private void setWakeupSocket();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.wakeupSinkFd:I
invokevirtual sun.nio.ch.WindowsSelectorImpl.setWakeupSocket0:(I)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/WindowsSelectorImpl;
private native void setWakeupSocket0(int);
descriptor: (I)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
wakeupSinkFd
private void resetWakeupSocket();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
ifne 4
2: aload 1
monitorexit
3: return
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.wakeupSourceFd:I
invokevirtual sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket0:(I)V
5: aload 0
iconst_0
putfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
6: aload 1
monitorexit
7: goto 10
StackMap locals:
StackMap stack: java.lang.Throwable
8: aload 1
monitorexit
9: athrow
10: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/WindowsSelectorImpl;
Exception table:
from to target type
1 3 8 any
4 7 8 any
8 9 8 any
private native void resetWakeupSocket0(int);
descriptor: (I)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
wakeupSourceFd
private native boolean discardUrgentData(int);
descriptor: (I)Z
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
fd
private int updateSelectedKeys();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
lconst_1
ladd
putfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
1: iconst_0
istore 1
start local 1 2: iload 1
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.subSelector:Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
invokevirtual sun.nio.ch.WindowsSelectorImpl$SubSelector.processSelectedKeys:(J)I
iadd
istore 1
3: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 6
StackMap locals: sun.nio.ch.WindowsSelectorImpl int top java.util.Iterator
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.nio.ch.WindowsSelectorImpl$SelectThread
astore 2
start local 2 5: iload 1
aload 2
getfield sun.nio.ch.WindowsSelectorImpl$SelectThread.subSelector:Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
invokevirtual sun.nio.ch.WindowsSelectorImpl$SubSelector.processSelectedKeys:(J)I
iadd
istore 1
end local 2 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/nio/ch/WindowsSelectorImpl;
2 8 1 numKeysUpdated I
5 6 2 t Lsun/nio/ch/WindowsSelectorImpl$SelectThread;
protected void implClose();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.closeLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
ifnull 29
2: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
ifnull 29
3: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptLock:Ljava/lang/Object;
dup
astore 2
monitorenter
4: aload 0
iconst_1
putfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
5: aload 2
monitorexit
6: goto 9
StackMap locals: sun.nio.ch.WindowsSelectorImpl java.lang.Object java.lang.Object
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.wakeupPipe:Ljava/nio/channels/Pipe;
invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
invokevirtual java.nio.channels.Pipe$SinkChannel.close:()V
10: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.wakeupPipe:Ljava/nio/channels/Pipe;
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokevirtual java.nio.channels.Pipe$SourceChannel.close:()V
11: iconst_1
istore 2
start local 2 12: goto 19
13: StackMap locals: int
StackMap stack:
iload 2
sipush 1024
irem
ifeq 18
14: aload 0
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
iload 2
aaload
invokevirtual sun.nio.ch.WindowsSelectorImpl.deregister:(Ljava/nio/channels/spi/AbstractSelectionKey;)V
15: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
iload 2
aaload
invokevirtual sun.nio.ch.SelectionKeyImpl.channel:()Ljava/nio/channels/SelectableChannel;
astore 3
start local 3 16: aload 3
invokevirtual java.nio.channels.SelectableChannel.isOpen:()Z
ifne 18
aload 3
invokevirtual java.nio.channels.SelectableChannel.isRegistered:()Z
ifne 18
17: aload 3
checkcast sun.nio.ch.SelChImpl
invokeinterface sun.nio.ch.SelChImpl.kill:()V
end local 3 18: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
19: iload 2
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
if_icmplt 13
end local 2 20: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
invokevirtual sun.nio.ch.PollArrayWrapper.free:()V
21: aload 0
aconst_null
putfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
22: aload 0
aconst_null
putfield sun.nio.ch.WindowsSelectorImpl.selectedKeys:Ljava/util/Set;
23: aload 0
aconst_null
putfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
24: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 27
StackMap locals: sun.nio.ch.WindowsSelectorImpl java.lang.Object top java.util.Iterator
StackMap stack:
25: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.nio.ch.WindowsSelectorImpl$SelectThread
astore 2
start local 2 26: aload 2
invokevirtual sun.nio.ch.WindowsSelectorImpl$SelectThread.makeZombie:()V
end local 2 27: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 25
28: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.startLock:Lsun/nio/ch/WindowsSelectorImpl$StartLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$StartLock.startThreads:()V
29: StackMap locals: sun.nio.ch.WindowsSelectorImpl java.lang.Object
StackMap stack:
aload 1
monitorexit
30: goto 33
StackMap locals:
StackMap stack: java.lang.Throwable
31: aload 1
monitorexit
32: athrow
33: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lsun/nio/ch/WindowsSelectorImpl;
12 20 2 i I
16 18 3 selch Ljava/nio/channels/SelectableChannel;
26 27 2 t Lsun/nio/ch/WindowsSelectorImpl$SelectThread;
Exception table:
from to target type
4 6 7 any
7 8 7 any
1 30 31 any
31 32 31 any
Exceptions:
throws java.io.IOException
protected void implRegister(sun.nio.ch.SelectionKeyImpl);
descriptor: (Lsun/nio/ch/SelectionKeyImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tThe method addEntry(SelChImpl) in the type PollArrayWrapper is not applicable for the arguments (int, SelectionKeyImpl)\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/WindowsSelectorImpl;
MethodParameters:
Name Flags
ski
private void growIfNeeded();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tThe method addWakeupSocket(int, int) is undefined for the type PollArrayWrapper\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/WindowsSelectorImpl;
protected void implDereg(sun.nio.ch.SelectionKeyImpl);
descriptor: (Lsun/nio/ch/SelectionKeyImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual sun.nio.ch.SelectionKeyImpl.getIndex:()I
istore 2
start local 2 1: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 2
iload 2
ifge 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.closeLock:Ljava/lang/Object;
dup
astore 3
monitorenter
3: iload 2
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
if_icmpeq 10
4: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
aaload
astore 4
start local 4 5: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
iload 2
aload 4
aastore
6: aload 4
iload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.setIndex:(I)V
7: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
8: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
iload 2
9: invokestatic sun.nio.ch.PollArrayWrapper.replaceEntry:(Lsun/nio/ch/PollArrayWrapper;ILsun/nio/ch/PollArrayWrapper;I)V
end local 4 10: StackMap locals: java.lang.Object
StackMap stack:
aload 1
iconst_m1
invokevirtual sun.nio.ch.SelectionKeyImpl.setIndex:(I)V
11: aload 3
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 3
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
aconst_null
aastore
16: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
17: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
if_icmpeq 20
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
sipush 1024
irem
iconst_1
if_icmpne 20
18: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
19: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.fdMap:Lsun/nio/ch/WindowsSelectorImpl$FdMap;
aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl$FdMap.remove:(Lsun/nio/ch/SelectionKeyImpl;)Lsun/nio/ch/WindowsSelectorImpl$MapEntry;
pop
21: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.keys:Ljava/util/HashSet;
aload 1
invokevirtual java.util.HashSet.remove:(Ljava/lang/Object;)Z
pop
22: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.selectedKeys:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
23: aload 0
aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl.deregister:(Ljava/nio/channels/spi/AbstractSelectionKey;)V
24: aload 1
invokevirtual sun.nio.ch.SelectionKeyImpl.channel:()Ljava/nio/channels/SelectableChannel;
astore 3
start local 3 25: aload 3
invokevirtual java.nio.channels.SelectableChannel.isOpen:()Z
ifne 27
aload 3
invokevirtual java.nio.channels.SelectableChannel.isRegistered:()Z
ifne 27
26: aload 3
checkcast sun.nio.ch.SelChImpl
invokeinterface sun.nio.ch.SelChImpl.kill:()V
27: StackMap locals: java.nio.channels.SelectableChannel
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 28 1 ski Lsun/nio/ch/SelectionKeyImpl;
1 28 2 i I
5 10 4 endChannel Lsun/nio/ch/SelectionKeyImpl;
25 28 3 selch Ljava/nio/channels/SelectableChannel;
Exception table:
from to target type
3 12 13 any
13 14 13 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
ski
void putEventOps(sun.nio.ch.SelectionKeyImpl, int);
descriptor: (Lsun/nio/ch/SelectionKeyImpl;I)V
flags: (0x0000)
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.closeLock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
ifnonnull 3
2: new java.nio.channels.ClosedSelectorException
dup
invokespecial java.nio.channels.ClosedSelectorException.<init>:()V
athrow
3: StackMap locals: java.lang.Object
StackMap stack:
aload 1
invokevirtual sun.nio.ch.SelectionKeyImpl.getIndex:()I
istore 4
start local 4 4: iload 4
iconst_m1
if_icmpne 6
5: new java.nio.channels.CancelledKeyException
dup
invokespecial java.nio.channels.CancelledKeyException.<init>:()V
athrow
6: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
iload 4
iload 2
invokevirtual sun.nio.ch.PollArrayWrapper.putEventOps:(II)V
end local 4 7: aload 3
monitorexit
8: goto 11
StackMap locals: sun.nio.ch.WindowsSelectorImpl sun.nio.ch.SelectionKeyImpl int java.lang.Object
StackMap stack: java.lang.Throwable
9: aload 3
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 12 1 sk Lsun/nio/ch/SelectionKeyImpl;
0 12 2 ops I
4 7 4 index I
Exception table:
from to target type
1 8 9 any
9 10 9 any
MethodParameters:
Name Flags
sk
ops
public java.nio.channels.Selector wakeup();
descriptor: ()Ljava/nio/channels/Selector;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
ifne 4
2: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.setWakeupSocket:()V
3: aload 0
iconst_1
putfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
4: StackMap locals: java.lang.Object
StackMap stack:
aload 1
monitorexit
5: goto 8
StackMap locals:
StackMap stack: java.lang.Throwable
6: aload 1
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/nio/ch/WindowsSelectorImpl;
Exception table:
from to target type
1 5 6 any
6 7 6 any
}
SourceFile: "WindowsSelectorImpl.java"
NestMembers:
sun.nio.ch.WindowsSelectorImpl$FdMap sun.nio.ch.WindowsSelectorImpl$FinishLock sun.nio.ch.WindowsSelectorImpl$MapEntry sun.nio.ch.WindowsSelectorImpl$SelectThread sun.nio.ch.WindowsSelectorImpl$StartLock sun.nio.ch.WindowsSelectorImpl$SubSelector
InnerClasses:
public abstract SinkChannel = java.nio.channels.Pipe$SinkChannel of java.nio.channels.Pipe
public abstract SourceChannel = java.nio.channels.Pipe$SourceChannel of java.nio.channels.Pipe
private final FdMap = sun.nio.ch.WindowsSelectorImpl$FdMap of sun.nio.ch.WindowsSelectorImpl
private final FinishLock = sun.nio.ch.WindowsSelectorImpl$FinishLock of sun.nio.ch.WindowsSelectorImpl
private final MapEntry = sun.nio.ch.WindowsSelectorImpl$MapEntry of sun.nio.ch.WindowsSelectorImpl
private final SelectThread = sun.nio.ch.WindowsSelectorImpl$SelectThread of sun.nio.ch.WindowsSelectorImpl
private final StartLock = sun.nio.ch.WindowsSelectorImpl$StartLock of sun.nio.ch.WindowsSelectorImpl
private final SubSelector = sun.nio.ch.WindowsSelectorImpl$SubSelector of sun.nio.ch.WindowsSelectorImpl