class sun.nio.ch.WindowsSelectorImpl extends sun.nio.ch.SelectorImpl
minor version: 0
major version: 59
flags: flags: (0x0020) 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 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 java.lang.Object updateLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Deque<sun.nio.ch.SelectionKeyImpl> newKeys;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Lsun/nio/ch/SelectionKeyImpl;>;
private final java.util.Deque<sun.nio.ch.SelectionKeyImpl> updateKeys;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Lsun/nio/ch/SelectionKeyImpl;>;
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 problem: \n\tsc cannot be resolved or is not a field\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
private void ensureOpen();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.isOpen:()Z
ifne 2
1: new java.nio.channels.ClosedSelectorException
dup
invokespecial java.nio.channels.ClosedSelectorException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/nio/ch/WindowsSelectorImpl;
protected int doSelect(java.util.function.Consumer<java.nio.channels.SelectionKey>, );
descriptor: (Ljava/util/function/Consumer;J)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
lload 2
putfield sun.nio.ch.WindowsSelectorImpl.timeout:J
2: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.processUpdateQueue:()V
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 4
start local 4 14: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.finishLock:Lsun/nio/ch/WindowsSelectorImpl$FinishLock;
aload 4
invokevirtual sun.nio.ch.WindowsSelectorImpl$FinishLock.setException:(Ljava/io/IOException;)V
end local 4 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 5
19: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.end:()V
20: aload 5
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
aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys:(Ljava/util/function/Consumer;)I
istore 4
start local 4 25: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.resetWakeupSocket:()V
26: iload 4
ireturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 27 1 action Ljava/util/function/Consumer<Ljava/nio/channels/SelectionKey;>;
0 27 2 timeout J
14 15 4 e Ljava/io/IOException;
25 27 4 updated I
Exception table:
from to target type
11 12 13 Class java.io.IOException
10 18 18 any
Exceptions:
throws java.io.IOException
Signature: (Ljava/util/function/Consumer<Ljava/nio/channels/SelectionKey;>;J)I
MethodParameters:
Name Flags
action
timeout
private void processUpdateQueue();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=1
start local 0 0: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
2: goto 11
start local 2 3: StackMap locals: java.lang.Object sun.nio.ch.SelectionKeyImpl
StackMap stack:
aload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.isValid:()Z
ifeq 11
4: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.growIfNeeded:()V
5: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
aload 2
aastore
6: aload 2
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
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
aload 2
invokevirtual sun.nio.ch.PollArrayWrapper.putEntry:(ILsun/nio/ch/SelectionKeyImpl;)V
8: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
iadd
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
9: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.fdMap:Lsun/nio/ch/WindowsSelectorImpl$FdMap;
aload 2
invokevirtual sun.nio.ch.WindowsSelectorImpl$FdMap.put:(Lsun/nio/ch/SelectionKeyImpl;)Lsun/nio/ch/WindowsSelectorImpl$MapEntry;
astore 3
start local 3 10: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 11
aload 3
ifnull 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 3 end local 2 11: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.newKeys:Ljava/util/Deque;
invokeinterface java.util.Deque.pollFirst:()Ljava/lang/Object;
checkcast sun.nio.ch.SelectionKeyImpl
dup
astore 2
start local 2 12: ifnonnull 3
13: goto 21
14: StackMap locals: sun.nio.ch.SelectionKeyImpl
StackMap stack:
aload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.translateInterestOps:()I
istore 3
start local 3 15: aload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.getFDVal:()I
istore 4
start local 4 16: aload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.isValid:()Z
ifeq 21
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.fdMap:Lsun/nio/ch/WindowsSelectorImpl$FdMap;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual sun.nio.ch.WindowsSelectorImpl$FdMap.containsKey:(Ljava/lang/Object;)Z
ifeq 21
17: aload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.getIndex:()I
istore 5
start local 5 18: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 20
iload 5
iflt 19
iload 5
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
if_icmplt 20
StackMap locals: int int int
StackMap stack:
19: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
iload 5
iload 3
invokevirtual sun.nio.ch.PollArrayWrapper.putEventOps:(II)V
end local 5 end local 4 end local 3 21: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateKeys:Ljava/util/Deque;
invokeinterface java.util.Deque.pollFirst:()Ljava/lang/Object;
checkcast sun.nio.ch.SelectionKeyImpl
dup
astore 2
ifnonnull 14
end local 2 22: aload 1
monitorexit
23: goto 26
StackMap locals: sun.nio.ch.WindowsSelectorImpl java.lang.Object
StackMap stack: java.lang.Throwable
24: aload 1
monitorexit
25: athrow
26: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lsun/nio/ch/WindowsSelectorImpl;
3 11 2 ski Lsun/nio/ch/SelectionKeyImpl;
12 22 2 ski Lsun/nio/ch/SelectionKeyImpl;
10 11 3 previous Lsun/nio/ch/WindowsSelectorImpl$MapEntry;
15 21 3 events I
16 21 4 fd I
18 21 5 index I
Exception table:
from to target type
2 23 24 any
24 25 24 any
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(java.util.function.Consumer<java.nio.channels.SelectionKey>);
descriptor: (Ljava/util/function/Consumer;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 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 2
start local 2 2: iload 2
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.subSelector:Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl$SubSelector.processSelectedKeys:(JLjava/util/function/Consumer;)I
iadd
istore 2
3: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 6
StackMap locals: sun.nio.ch.WindowsSelectorImpl java.util.function.Consumer int top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.nio.ch.WindowsSelectorImpl$SelectThread
astore 3
start local 3 5: iload 2
aload 3
getfield sun.nio.ch.WindowsSelectorImpl$SelectThread.subSelector:Lsun/nio/ch/WindowsSelectorImpl$SubSelector;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateCount:J
aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl$SubSelector.processSelectedKeys:(JLjava/util/function/Consumer;)I
iadd
istore 2
end local 3 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 8 1 action Ljava/util/function/Consumer<Ljava/nio/channels/SelectionKey;>;
2 8 2 numKeysUpdated I
5 6 3 t Lsun/nio/ch/WindowsSelectorImpl$SelectThread;
Signature: (Ljava/util/function/Consumer<Ljava/nio/channels/SelectionKey;>;)I
MethodParameters:
Name Flags
action
protected void implClose();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=1
start local 0 0: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.isOpen:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 2
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.interruptLock:Ljava/lang/Object;
dup
astore 1
monitorenter
3: aload 0
iconst_1
putfield sun.nio.ch.WindowsSelectorImpl.interruptTriggered:Z
4: aload 1
monitorexit
5: goto 8
StackMap locals: sun.nio.ch.WindowsSelectorImpl java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 1
monitorexit
7: athrow
8: 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
9: 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
10: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
invokevirtual sun.nio.ch.PollArrayWrapper.free:()V
11: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.threads:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 2
goto 14
StackMap locals: sun.nio.ch.WindowsSelectorImpl top java.util.Iterator
StackMap stack:
12: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.nio.ch.WindowsSelectorImpl$SelectThread
astore 1
start local 1 13: aload 1
invokevirtual sun.nio.ch.WindowsSelectorImpl$SelectThread.makeZombie:()V
end local 1 14: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
15: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.startLock:Lsun/nio/ch/WindowsSelectorImpl$StartLock;
invokevirtual sun.nio.ch.WindowsSelectorImpl$StartLock.startThreads:()V
16: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/nio/ch/WindowsSelectorImpl;
13 14 1 t Lsun/nio/ch/WindowsSelectorImpl$SelectThread;
Exception table:
from to target type
3 5 6 any
6 7 6 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=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.ensureOpen:()V
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
2: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.newKeys:Ljava/util/Deque;
aload 1
invokeinterface java.util.Deque.addLast:(Ljava/lang/Object;)V
3: aload 2
monitorexit
4: goto 7
StackMap locals: sun.nio.ch.WindowsSelectorImpl sun.nio.ch.SelectionKeyImpl java.lang.Object
StackMap stack: java.lang.Throwable
5: aload 2
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 8 1 ski Lsun/nio/ch/SelectionKeyImpl;
Exception table:
from to target type
2 4 5 any
5 6 5 any
MethodParameters:
Name Flags
ski
private void growIfNeeded();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
arraylength
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
if_icmpne 6
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_2
imul
istore 1
start local 1 2: iload 1
anewarray sun.nio.ch.SelectionKeyImpl
astore 2
start local 2 3: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
iconst_1
aload 2
iconst_1
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: aload 0
aload 2
putfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
5: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
iload 1
invokevirtual sun.nio.ch.PollArrayWrapper.grow:(I)V
end local 2 end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
sipush 1024
irem
ifne 10
7: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.wakeupSourceFd:I
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
invokevirtual sun.nio.ch.PollArrayWrapper.addWakeupSocket:(II)V
8: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
iadd
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
9: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
iconst_1
iadd
putfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
10: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/WindowsSelectorImpl;
2 6 1 newSize I
3 6 2 temp [Lsun/nio/ch/SelectionKeyImpl;
protected void implDereg(sun.nio.ch.SelectionKeyImpl);
descriptor: (Lsun/nio/ch/SelectionKeyImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 1
aload 1
invokevirtual sun.nio.ch.SelectionKeyImpl.isValid:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 2
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: 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;
ifnull 16
3: aload 1
invokevirtual sun.nio.ch.SelectionKeyImpl.getIndex:()I
istore 2
start local 2 4: getstatic sun.nio.ch.WindowsSelectorImpl.$assertionsDisabled:Z
ifne 5
iload 2
ifge 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: int
StackMap stack:
iload 2
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
if_icmpeq 10
6: 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 3
start local 3 7: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.channelArray:[Lsun/nio/ch/SelectionKeyImpl;
iload 2
aload 3
aastore
8: aload 3
iload 2
invokevirtual sun.nio.ch.SelectionKeyImpl.setIndex:(I)V
9: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.pollWrapper:Lsun/nio/ch/PollArrayWrapper;
iload 2
invokevirtual sun.nio.ch.PollArrayWrapper.replaceEntry:(Lsun/nio/ch/PollArrayWrapper;ILsun/nio/ch/PollArrayWrapper;I)V
end local 3 10: StackMap locals:
StackMap stack:
aload 1
iconst_m1
invokevirtual sun.nio.ch.SelectionKeyImpl.setIndex:(I)V
11: 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
12: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
13: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
if_icmpeq 16
aload 0
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
sipush 1024
irem
iconst_1
if_icmpne 16
14: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.totalChannels:I
15: aload 0
dup
getfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
iconst_1
isub
putfield sun.nio.ch.WindowsSelectorImpl.threadsCount:I
end local 2 16: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 17 1 ski Lsun/nio/ch/SelectionKeyImpl;
4 16 2 i I
7 10 3 endChannel Lsun/nio/ch/SelectionKeyImpl;
MethodParameters:
Name Flags
ski
public void setEventOps(sun.nio.ch.SelectionKeyImpl);
descriptor: (Lsun/nio/ch/SelectionKeyImpl;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.nio.ch.WindowsSelectorImpl.ensureOpen:()V
1: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
2: aload 0
getfield sun.nio.ch.WindowsSelectorImpl.updateKeys:Ljava/util/Deque;
aload 1
invokeinterface java.util.Deque.addLast:(Ljava/lang/Object;)V
3: aload 2
monitorexit
4: goto 7
StackMap locals: sun.nio.ch.WindowsSelectorImpl sun.nio.ch.SelectionKeyImpl java.lang.Object
StackMap stack: java.lang.Throwable
5: aload 2
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/nio/ch/WindowsSelectorImpl;
0 8 1 ski Lsun/nio/ch/SelectionKeyImpl;
Exception table:
from to target type
2 4 5 any
5 6 5 any
MethodParameters:
Name Flags
ski
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