class sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl extends sun.nio.ch.AsynchronousServerSocketChannelImpl implements sun.nio.ch.Iocp$OverlappedChannel
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl
super_class: sun.nio.ch.AsynchronousServerSocketChannelImpl
{
private static final sun.misc.Unsafe unsafe;
descriptor: Lsun/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DATA_BUFFER_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 88
private final long handle;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int completionKey;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.nio.ch.Iocp iocp;
descriptor: Lsun/nio/ch/Iocp;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.nio.ch.PendingIoCache ioCache;
descriptor: Lsun/nio/ch/PendingIoCache;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long dataBuffer;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.atomic.AtomicBoolean accepting;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
putstatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.unsafe:Lsun/misc/Unsafe;
1: invokestatic sun.nio.ch.IOUtil.load:()V
2: invokestatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.initIDs:()V
3: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(sun.nio.ch.Iocp);
descriptor: (Lsun/nio/ch/Iocp;)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial sun.nio.ch.AsynchronousServerSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.accepting:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
i2l
lstore 2
start local 2 3: aload 1
aload 0
lload 2
invokevirtual sun.nio.ch.Iocp.associate:(Lsun/nio/ch/Iocp$OverlappedChannel;J)I
istore 4
start local 4 4: goto 8
end local 4 StackMap locals: sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl sun.nio.ch.Iocp long
StackMap stack: java.io.IOException
5: astore 5
start local 5 6: lload 2
invokestatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.closesocket0:(J)V
7: aload 5
athrow
end local 5 start local 4 8: StackMap locals: int
StackMap stack:
aload 0
lload 2
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.handle:J
9: aload 0
iload 4
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.completionKey:I
10: aload 0
aload 1
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.iocp:Lsun/nio/ch/Iocp;
11: aload 0
new sun.nio.ch.PendingIoCache
dup
invokespecial sun.nio.ch.PendingIoCache.<init>:()V
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
12: aload 0
getstatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.unsafe:Lsun/misc/Unsafe;
ldc 88
invokevirtual sun.misc.Unsafe.allocateMemory:(J)J
putfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.dataBuffer:J
13: return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;
0 14 1 iocp Lsun/nio/ch/Iocp;
3 14 2 h J
4 5 4 key I
8 14 4 key I
6 8 5 x Ljava/io/IOException;
Exception table:
from to target type
3 4 5 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
iocp
public <V, A> sun.nio.ch.PendingFuture<V, A> getByOverlapped(long);
descriptor: (J)Lsun/nio/ch/PendingFuture;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
lload 1
invokevirtual sun.nio.ch.PendingIoCache.remove:(J)Lsun/nio/ch/PendingFuture;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;
0 1 1 overlapped J
Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(J)Lsun/nio/ch/PendingFuture<TV;TA;>;
MethodParameters:
Name Flags
overlapped
void implClose();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.handle:J
invokestatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.closesocket0:(J)V
1: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.ioCache:Lsun/nio/ch/PendingIoCache;
invokevirtual sun.nio.ch.PendingIoCache.close:()V
2: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.iocp:Lsun/nio/ch/Iocp;
aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.completionKey:I
invokevirtual sun.nio.ch.Iocp.disassociate:(I)V
3: getstatic sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.unsafe:Lsun/misc/Unsafe;
aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.dataBuffer:J
invokevirtual sun.misc.Unsafe.freeMemory:(J)V
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;
Exceptions:
throws java.io.IOException
public sun.nio.ch.AsynchronousChannelGroupImpl group();
descriptor: ()Lsun/nio/ch/AsynchronousChannelGroupImpl;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.iocp:Lsun/nio/ch/Iocp;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;
java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> implAccept(, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel, java.lang.Object>);
descriptor: (Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=6, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.isOpen:()Z
ifne 6
1: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
astore 3
start local 3 2: aload 2
ifnonnull 4
3: aload 3
invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
4: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
aload 2
aload 1
aconst_null
aload 3
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
5: aconst_null
areturn
end local 3 6: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.isAcceptKilled:()Z
ifeq 8
7: new java.lang.RuntimeException
dup
ldc "Accept not allowed due to cancellation"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
ifnonnull 10
9: new java.nio.channels.NotYetBoundException
dup
invokespecial java.nio.channels.NotYetBoundException.<init>:()V
athrow
10: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 11: aconst_null
astore 4
start local 4 12: aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.begin:()V
13: new sun.nio.ch.WindowsAsynchronousSocketChannelImpl
dup
aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.iocp:Lsun/nio/ch/Iocp;
iconst_0
invokespecial sun.nio.ch.WindowsAsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/Iocp;Z)V
astore 3
14: goto 21
StackMap locals: sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.WindowsAsynchronousSocketChannelImpl java.io.IOException
StackMap stack: java.io.IOException
15: astore 5
start local 5 16: aload 5
astore 4
end local 5 17: aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.end:()V
goto 22
18: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
19: aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.end:()V
20: aload 6
athrow
21: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.end:()V
22: StackMap locals:
StackMap stack:
aload 4
ifnull 27
23: aload 2
ifnonnull 25
24: aload 4
invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
25: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 1
aconst_null
aload 4
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
26: aconst_null
areturn
27: StackMap locals:
StackMap stack:
invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
ifnonnull 29
28: aconst_null
goto 30
StackMap locals:
StackMap stack:
29: invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
30: StackMap locals:
StackMap stack: java.security.AccessControlContext
astore 5
start local 5 31: new sun.nio.ch.PendingFuture
dup
aload 0
aload 2
aload 1
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;)V
32: astore 6
start local 6 33: new sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask
dup
aload 0
aload 3
aload 5
aload 6
invokespecial sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask.<init>:(Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;Ljava/security/AccessControlContext;Lsun/nio/ch/PendingFuture;)V
astore 7
start local 7 34: aload 6
aload 7
invokevirtual sun.nio.ch.PendingFuture.setContext:(Ljava/lang/Object;)V
35: aload 0
getfield sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.accepting:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifne 37
36: new java.nio.channels.AcceptPendingException
dup
invokespecial java.nio.channels.AcceptPendingException.<init>:()V
athrow
37: StackMap locals: java.security.AccessControlContext sun.nio.ch.PendingFuture sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask
StackMap stack:
invokestatic sun.nio.ch.Iocp.supportsThreadAgnosticIo:()Z
ifeq 40
38: aload 7
invokevirtual sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask.run:()V
39: goto 41
40: StackMap locals:
StackMap stack:
aload 0
aload 7
invokestatic sun.nio.ch.Invoker.invokeOnThreadInThreadPool:(Lsun/nio/ch/Groupable;Ljava/lang/Runnable;)V
41: StackMap locals:
StackMap stack:
aload 6
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 42 0 this Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl;
0 42 1 attachment Ljava/lang/Object;
0 42 2 handler Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/AsynchronousSocketChannel;Ljava/lang/Object;>;
2 6 3 exc Ljava/lang/Throwable;
11 42 3 ch Lsun/nio/ch/WindowsAsynchronousSocketChannelImpl;
12 42 4 ioe Ljava/io/IOException;
16 17 5 x Ljava/io/IOException;
31 42 5 acc Ljava/security/AccessControlContext;
33 42 6 result Lsun/nio/ch/PendingFuture<Ljava/nio/channels/AsynchronousSocketChannel;Ljava/lang/Object;>;
34 42 7 task Lsun/nio/ch/WindowsAsynchronousServerSocketChannelImpl$AcceptTask;
Exception table:
from to target type
12 14 15 Class java.io.IOException
12 17 18 any
Signature: (Ljava/lang/Object;Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/AsynchronousSocketChannel;Ljava/lang/Object;>;)Ljava/util/concurrent/Future<Ljava/nio/channels/AsynchronousSocketChannel;>;
MethodParameters:
Name Flags
attachment
handler final
private static native void initIDs();
descriptor: ()V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
private static native int accept0(long, long, long, long);
descriptor: (JJJJ)I
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
listenSocket
acceptSocket
overlapped
dataBuffer
private static native void updateAcceptContext(long, long);
descriptor: (JJ)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
listenSocket
acceptSocket
private static native void closesocket0(long);
descriptor: (J)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
socket
}
SourceFile: "WindowsAsynchronousServerSocketChannelImpl.java"
NestMembers:
sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask$1
InnerClasses:
abstract OverlappedChannel = sun.nio.ch.Iocp$OverlappedChannel of sun.nio.ch.Iocp
private AcceptTask = sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl$AcceptTask of sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl