class sun.nio.ch.UnixAsynchronousSocketChannelImpl extends sun.nio.ch.AsynchronousSocketChannelImpl implements sun.nio.ch.Port$PollableChannel
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.nio.ch.UnixAsynchronousSocketChannelImpl
super_class: sun.nio.ch.AsynchronousSocketChannelImpl
{
private static final sun.nio.ch.NativeDispatcher nd;
descriptor: Lsun/nio/ch/NativeDispatcher;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean disableSynchronousRead;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final sun.nio.ch.Port port;
descriptor: Lsun/nio/ch/Port;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int fdVal;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.Object updateLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean connectPending;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.CompletionHandler<java.lang.Void, java.lang.Object> connectHandler;
descriptor: Ljava/nio/channels/CompletionHandler;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
private java.lang.Object connectAttachment;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private sun.nio.ch.PendingFuture<java.lang.Void, java.lang.Object> connectFuture;
descriptor: Lsun/nio/ch/PendingFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Void;Ljava/lang/Object;>;
private java.net.SocketAddress pendingRemote;
descriptor: Ljava/net/SocketAddress;
flags: (0x0002) ACC_PRIVATE
private boolean readPending;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean isScatteringRead;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer readBuffer;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer[] readBuffers;
descriptor: [Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.CompletionHandler<java.lang.Number, java.lang.Object> readHandler;
descriptor: Ljava/nio/channels/CompletionHandler;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
private java.lang.Object readAttachment;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private sun.nio.ch.PendingFuture<java.lang.Number, java.lang.Object> readFuture;
descriptor: Lsun/nio/ch/PendingFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
private java.util.concurrent.Future<?> readTimer;
descriptor: Ljava/util/concurrent/Future;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/Future<*>;
private boolean writePending;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean isGatheringWrite;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer writeBuffer;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer[] writeBuffers;
descriptor: [Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.CompletionHandler<java.lang.Number, java.lang.Object> writeHandler;
descriptor: Ljava/nio/channels/CompletionHandler;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
private java.lang.Object writeAttachment;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private sun.nio.ch.PendingFuture<java.lang.Number, java.lang.Object> writeFuture;
descriptor: Lsun/nio/ch/PendingFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
private java.util.concurrent.Future<?> writeTimer;
descriptor: Ljava/util/concurrent/Future;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/Future<*>;
private java.lang.Runnable readTimeoutTask;
descriptor: Ljava/lang/Runnable;
flags: (0x0002) ACC_PRIVATE
private java.lang.Runnable writeTimeoutTask;
descriptor: Ljava/lang/Runnable;
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=2, locals=1, args_size=0
0: ldc Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
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.UnixAsynchronousSocketChannelImpl.$assertionsDisabled:Z
3: new sun.nio.ch.SocketDispatcher
dup
invokespecial sun.nio.ch.SocketDispatcher.<init>:()V
putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
4: ldc "sun.nio.ch.disableSynchronousRead"
ldc "false"
5: invokestatic sun.security.action.GetPropertyAction.privilegedGetProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 0
start local 0 6: aload 0
invokevirtual java.lang.String.isEmpty:()Z
ifeq 8
7: iconst_1
goto 9
StackMap locals: java.lang.String
StackMap stack:
8: aload 0
invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
9: StackMap locals:
StackMap stack: int
putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
end local 0 10: invokestatic sun.nio.ch.IOUtil.load:()V
11: return
LocalVariableTable:
Start End Slot Name Signature
6 10 0 propValue Ljava/lang/String;
void <init>(sun.nio.ch.Port);
descriptor: (Lsun/nio/ch/Port;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
2: aload 0
new sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
dup
aload 0
invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$1.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
3: aload 0
new sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
dup
aload 0
invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$2.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
4: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
iconst_0
invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
5: goto 9
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl sun.nio.ch.Port
StackMap stack: java.io.IOException
6: astore 2
start local 2 7: getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
8: aload 2
athrow
end local 2 9: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
10: aload 0
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
11: aload 1
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
aload 0
invokevirtual sun.nio.ch.Port.register:(ILsun/nio/ch/Port$PollableChannel;)V
12: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 13 1 port Lsun/nio/ch/Port;
7 9 2 x Ljava/io/IOException;
Exception table:
from to target type
4 5 6 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
port
void <init>(sun.nio.ch.Port, java.io.FileDescriptor, java.net.InetSocketAddress);
descriptor: (Lsun/nio/ch/Port;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
flags: (0x0000)
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
2: aload 0
new sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
dup
aload 0
invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$1.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
3: aload 0
new sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
dup
aload 0
invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$2.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
4: aload 0
aload 2
invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
5: aload 2
iconst_0
invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
6: aload 1
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
aload 0
invokevirtual sun.nio.ch.Port.register:(ILsun/nio/ch/Port$PollableChannel;)V
7: goto 10
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl sun.nio.ch.Port java.io.FileDescriptor java.net.InetSocketAddress
StackMap stack: java.nio.channels.ShutdownChannelGroupException
8: astore 4
start local 4 9: new java.io.IOException
dup
aload 4
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 4 10: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 12 1 port Lsun/nio/ch/Port;
0 12 2 fd Ljava/io/FileDescriptor;
0 12 3 remote Ljava/net/InetSocketAddress;
9 10 4 x Ljava/nio/channels/ShutdownChannelGroupException;
Exception table:
from to target type
6 7 8 Class java.nio.channels.ShutdownChannelGroupException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
port
fd
remote
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.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
private void updateEvents();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
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:
iconst_0
istore 1
start local 1 2: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
ifeq 4
3: iload 1
getstatic sun.nio.ch.Net.POLLIN:S
ior
istore 1
4: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
ifne 5
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
ifeq 6
5: StackMap locals:
StackMap stack:
iload 1
getstatic sun.nio.ch.Net.POLLOUT:S
ior
istore 1
6: StackMap locals:
StackMap stack:
iload 1
ifeq 8
7: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
iload 1
invokevirtual sun.nio.ch.Port.startPoll:(II)V
8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
2 9 1 events I
private void lockAndUpdateEvents();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
2: aload 1
monitorexit
3: goto 6
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
Exception table:
from to target type
1 3 4 any
4 5 4 any
private void finish(boolean, boolean, boolean);
descriptor: (ZZZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: iconst_0
istore 5
start local 5 2: iconst_0
istore 6
start local 6 3: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 7
monitorenter
4: iload 2
ifeq 7
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
ifeq 7
5: aload 0
iconst_0
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
6: iconst_1
istore 4
7: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int int int int int java.lang.Object
StackMap stack:
iload 3
ifeq 15
8: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
ifeq 12
9: aload 0
iconst_0
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
10: iconst_1
istore 5
11: goto 15
StackMap locals:
StackMap stack:
12: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
ifeq 15
13: aload 0
iconst_0
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
14: iconst_1
istore 6
15: StackMap locals:
StackMap stack:
aload 7
monitorexit
16: goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
17: aload 7
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
iload 4
ifeq 24
20: iload 5
ifeq 22
21: aload 0
iconst_0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
22: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead:(Z)V
23: return
24: StackMap locals:
StackMap stack:
iload 5
ifeq 26
25: aload 0
iload 1
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
26: StackMap locals:
StackMap stack:
iload 6
ifeq 28
27: aload 0
iload 1
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect:(Z)V
28: StackMap locals:
StackMap stack:
return
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 29 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 29 1 mayInvokeDirect Z
0 29 2 readable Z
0 29 3 writable Z
1 29 4 finishRead Z
2 29 5 finishWrite Z
3 29 6 finishConnect Z
Exception table:
from to target type
4 16 17 any
17 18 17 any
MethodParameters:
Name Flags
mayInvokeDirect
readable
writable
public void onEvent(int, boolean);
descriptor: (IZ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 1
getstatic sun.nio.ch.Net.POLLIN:S
iand
ifle 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: istore 3
start local 3 3: iload 1
getstatic sun.nio.ch.Net.POLLOUT:S
iand
ifle 4
iconst_1
goto 5
StackMap locals: int
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 4
start local 4 6: iload 1
getstatic sun.nio.ch.Net.POLLERR:S
getstatic sun.nio.ch.Net.POLLHUP:S
ior
iand
ifle 9
7: iconst_1
istore 3
8: iconst_1
istore 4
9: StackMap locals: int
StackMap stack:
aload 0
iload 2
iload 3
iload 4
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 11 1 events I
0 11 2 mayInvokeDirect Z
3 11 3 readable Z
6 11 4 writable Z
MethodParameters:
Name Flags
events
mayInvokeDirect
void implClose();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
invokevirtual sun.nio.ch.Port.unregister:(I)V
1: getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
2: aload 0
iconst_0
iconst_1
iconst_1
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
Exceptions:
throws java.io.IOException
public void onCancel(sun.nio.ch.PendingFuture<?, ?>);
descriptor: (Lsun/nio/ch/PendingFuture;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.CONNECT:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
if_acmpne 2
1: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killConnect:()V
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.READ:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
if_acmpne 4
3: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killReading:()V
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.WRITE:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
if_acmpne 6
5: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killWriting:()V
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 7 1 task Lsun/nio/ch/PendingFuture<**>;
Signature: (Lsun/nio/ch/PendingFuture<**>;)V
MethodParameters:
Name Flags
task
private void setConnected();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
iconst_2
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
2: aload 0
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
3: aload 0
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
checkcast java.net.InetSocketAddress
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
4: aload 1
monitorexit
5: goto 8
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 1
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
Exception table:
from to target type
1 5 6 any
6 7 6 any
Exceptions:
throws java.io.IOException
private void finishConnect(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
2: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
invokestatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect:(I)V
3: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
4: goto 13
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
StackMap stack: java.lang.Throwable
5: astore 3
start local 3 6: aload 3
instanceof java.nio.channels.ClosedChannelException
ifeq 8
7: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 3
8: StackMap locals: java.lang.Throwable
StackMap stack:
aload 3
astore 2
end local 3 9: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 14
10: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
StackMap stack: java.lang.Throwable
astore 4
11: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
12: aload 4
athrow
13: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
14: StackMap locals:
StackMap stack:
aload 2
ifnull 22
15: aload 2
instanceof java.io.IOException
ifeq 18
16: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
checkcast java.net.InetSocketAddress
astore 3
start local 3 17: aload 2
checkcast java.io.IOException
aload 3
invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
astore 2
end local 3 18: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
19: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
20: astore 3
start local 3 21: aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
end local 3 22: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
astore 3
start local 3 23: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
24: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
astore 4
start local 4 25: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
astore 5
start local 5 26: aload 3
ifnonnull 29
27: aload 5
aconst_null
aload 2
invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
28: goto 33
29: StackMap locals: java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture
StackMap stack:
iload 1
ifeq 32
30: aload 3
aload 4
aconst_null
aload 2
invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
31: goto 33
32: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 4
aconst_null
aload 2
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
33: StackMap locals:
StackMap stack:
return
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 34 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 34 1 mayInvokeDirect Z
1 34 2 e Ljava/lang/Throwable;
6 9 3 x Ljava/lang/Throwable;
17 18 3 isa Ljava/net/InetSocketAddress;
21 22 3 suppressed Ljava/lang/Throwable;
23 34 3 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
25 34 4 att Ljava/lang/Object;
26 34 5 future Lsun/nio/ch/PendingFuture<Ljava/lang/Void;Ljava/lang/Object;>;
Exception table:
from to target type
1 4 5 Class java.lang.Throwable
1 9 10 any
18 19 20 Class java.lang.Throwable
MethodParameters:
Name Flags
mayInvokeDirect
<A> java.util.concurrent.Future<java.lang.Void> implConnect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
descriptor: (Ljava/net/SocketAddress;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=5, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.isOpen:()Z
ifne 6
1: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
astore 4
start local 4 2: aload 3
ifnonnull 4
3: aload 4
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 3
aload 2
aconst_null
aload 4
invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
5: aconst_null
areturn
end local 4 6: StackMap locals:
StackMap stack:
aload 1
invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
astore 4
start local 4 7: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 5
start local 5 8: aload 5
ifnull 10
9: aload 5
aload 4
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
aload 4
invokevirtual java.net.InetSocketAddress.getPort:()I
invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
10: StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
dup
astore 7
monitorenter
11: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
iconst_2
if_icmpne 13
12: new java.nio.channels.AlreadyConnectedException
dup
invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
athrow
13: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager top java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
iconst_1
if_icmpne 15
14: new java.nio.channels.ConnectionPendingException
dup
invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
athrow
15: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
16: aload 0
aload 1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
17: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
ifnonnull 18
iconst_1
goto 19
StackMap locals:
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 6
start local 6 20: aload 7
monitorexit
21: goto 24
end local 6 StackMap locals:
StackMap stack: java.lang.Throwable
22: aload 7
monitorexit
23: athrow
start local 6 24: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int
StackMap stack:
aconst_null
astore 7
start local 7 25: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
26: iload 6
ifeq 28
27: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 4
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
aload 4
invokevirtual java.net.InetSocketAddress.getPort:()I
invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
28: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 4
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
aload 4
invokevirtual java.net.InetSocketAddress.getPort:()I
invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
istore 8
start local 8 29: iload 8
bipush -2
if_icmpne 47
30: aconst_null
astore 9
start local 9 31: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 10
monitorenter
32: aload 3
ifnonnull 36
33: new sun.nio.ch.PendingFuture
dup
aload 0
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.CONNECT:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
astore 9
34: aload 0
aload 9
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
35: goto 38
36: StackMap locals: int sun.nio.ch.PendingFuture java.lang.Object
StackMap stack:
aload 0
aload 3
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
37: aload 0
aload 2
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
38: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
39: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
40: aload 10
monitorexit
41: goto 44
StackMap locals:
StackMap stack: java.lang.Throwable
42: aload 10
monitorexit
43: athrow
44: StackMap locals:
StackMap stack:
aload 9
astore 12
45: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
46: aload 12
areturn
end local 9 47: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
end local 8 48: goto 57
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int java.lang.Throwable
StackMap stack: java.lang.Throwable
49: astore 8
start local 8 50: aload 8
instanceof java.nio.channels.ClosedChannelException
ifeq 52
51: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 8
52: StackMap locals: java.lang.Throwable
StackMap stack:
aload 8
astore 7
end local 8 53: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 58
54: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int java.lang.Throwable
StackMap stack: java.lang.Throwable
astore 11
55: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
56: aload 11
athrow
57: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
58: StackMap locals:
StackMap stack:
aload 7
ifnull 65
59: aload 7
instanceof java.io.IOException
ifeq 61
60: aload 7
checkcast java.io.IOException
aload 4
invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
astore 7
61: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
62: goto 65
StackMap locals:
StackMap stack: java.lang.Throwable
63: astore 8
start local 8 64: aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
end local 8 65: StackMap locals:
StackMap stack:
aload 3
ifnonnull 67
66: aconst_null
aload 7
invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
67: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 2
aconst_null
aload 7
invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
68: aconst_null
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 69 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 69 1 remote Ljava/net/SocketAddress;
0 69 2 attachment TA;
0 69 3 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;
2 6 4 e Ljava/lang/Throwable;
7 69 4 isa Ljava/net/InetSocketAddress;
8 69 5 sm Ljava/lang/SecurityManager;
20 22 6 notifyBeforeTcpConnect Z
24 69 6 notifyBeforeTcpConnect Z
25 69 7 e Ljava/lang/Throwable;
29 48 8 n I
31 47 9 result Lsun/nio/ch/PendingFuture<Ljava/lang/Void;TA;>;
50 53 8 x Ljava/lang/Throwable;
64 65 8 suppressed Ljava/lang/Throwable;
Exception table:
from to target type
11 21 22 any
22 23 22 any
32 41 42 any
42 43 42 any
25 45 49 Class java.lang.Throwable
47 48 49 Class java.lang.Throwable
25 45 54 any
47 53 54 any
61 62 63 Class java.lang.Throwable
Signature: <A:Ljava/lang/Object;>(Ljava/net/SocketAddress;TA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Void;>;
MethodParameters:
Name Flags
remote
attachment
handler
private void finishRead(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: iconst_m1
istore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
istore 4
start local 4 3: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
astore 5
start local 5 4: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
astore 6
start local 6 5: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
astore 7
start local 7 6: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimer:Ljava/util/concurrent/Future;
astore 8
start local 8 7: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
8: iload 4
ifeq 11
9: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
l2i
istore 2
10: goto 12
11: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
ldc -1
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
istore 2
12: StackMap locals:
StackMap stack:
iload 2
bipush -2
if_icmpne 23
13: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 9
monitorenter
14: aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
15: aload 9
monitorexit
16: goto 19
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future java.lang.Object
StackMap stack: java.lang.Throwable
17: aload 9
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 21
20: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
21: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
22: return
23: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
24: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
25: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
26: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
27: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
28: goto 42
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 9
start local 9 30: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
31: aload 9
instanceof java.nio.channels.ClosedChannelException
ifeq 33
32: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 9
33: StackMap locals: java.lang.Throwable
StackMap stack:
aload 9
astore 3
end local 9 34: aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 36
35: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
36: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 45
37: StackMap locals:
StackMap stack: java.lang.Throwable
astore 10
38: aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 40
39: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
40: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
41: aload 10
athrow
42: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
StackMap stack:
aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 44
43: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
44: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
45: StackMap locals:
StackMap stack:
aload 8
ifnull 47
46: aload 8
iconst_0
invokeinterface java.util.concurrent.Future.cancel:(Z)Z
pop
47: StackMap locals:
StackMap stack:
aload 3
ifnull 48
aconst_null
goto 51
StackMap locals:
StackMap stack:
48: iload 4
ifeq 50
49: iload 2
i2l
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
goto 51
StackMap locals:
StackMap stack:
50: iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
51: StackMap locals:
StackMap stack: java.lang.Number
astore 9
start local 9 52: aload 5
ifnonnull 55
53: aload 7
aload 9
aload 3
invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
54: goto 59
55: StackMap locals: java.lang.Number
StackMap stack:
iload 1
ifeq 58
56: aload 5
aload 6
aload 9
aload 3
invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
57: goto 59
58: StackMap locals:
StackMap stack:
aload 0
aload 5
aload 6
aload 9
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
59: StackMap locals:
StackMap stack:
return
end local 9 end local 8 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 60 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 60 1 mayInvokeDirect Z
1 60 2 n I
2 60 3 exc Ljava/lang/Throwable;
3 60 4 scattering Z
4 60 5 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
5 60 6 att Ljava/lang/Object;
6 60 7 future Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
7 60 8 timeout Ljava/util/concurrent/Future<*>;
30 34 9 x Ljava/lang/Throwable;
52 60 9 result Ljava/lang/Number;
Exception table:
from to target type
14 16 17 any
17 18 17 any
7 19 29 Class java.lang.Throwable
23 28 29 Class java.lang.Throwable
7 19 37 any
23 34 37 any
MethodParameters:
Name Flags
mayInvokeDirect
<V extends java.lang.Number, A> java.util.concurrent.Future<V> implRead(boolean, java.nio.ByteBuffer, java.nio.ByteBuffer[], long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<V, ? super A>);
descriptor: (ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=6, locals=19, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 start local 7 start local 8 0: aconst_null
astore 9
start local 9 1: iconst_0
istore 10
start local 10 2: iconst_0
istore 11
start local 11 3: getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
ifne 12
4: aload 8
ifnonnull 7
5: iconst_1
istore 11
6: goto 12
7: StackMap locals: sun.nio.ch.Invoker$GroupAndInvokeCount int int
StackMap stack:
invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
astore 9
8: aload 9
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
invokestatic sun.nio.ch.Invoker.mayInvokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Lsun/nio/ch/AsynchronousChannelGroupImpl;)Z
istore 10
9: iload 10
ifne 10
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
ifeq 10
iconst_0
goto 11
StackMap locals:
StackMap stack:
10: iconst_1
StackMap locals:
StackMap stack: int
11: istore 11
12: StackMap locals:
StackMap stack:
bipush -2
istore 12
start local 12 13: aconst_null
astore 13
start local 13 14: iconst_0
istore 14
start local 14 15: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
16: iload 11
ifeq 21
17: iload 1
ifeq 20
18: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 3
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
l2i
istore 12
19: goto 21
20: StackMap locals: int java.lang.Throwable int
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 2
ldc -1
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
istore 12
21: StackMap locals:
StackMap stack:
iload 12
bipush -2
if_icmpne 62
22: aconst_null
astore 15
start local 15 23: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 16
monitorenter
24: aload 0
iload 1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
25: aload 0
aload 2
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
26: aload 0
aload 3
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
27: aload 8
ifnonnull 33
28: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
29: new sun.nio.ch.PendingFuture
dup
aload 0
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.READ:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
astore 15
30: aload 0
aload 15
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
31: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
32: goto 36
33: StackMap locals: sun.nio.ch.PendingFuture java.lang.Object
StackMap stack:
aload 0
aload 8
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
34: aload 0
aload 7
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
35: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
36: StackMap locals:
StackMap stack:
lload 4
lconst_0
lcmp
ifle 38
37: aload 0
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
lload 4
aload 6
invokevirtual sun.nio.ch.Port.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimer:Ljava/util/concurrent/Future;
38: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
39: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
40: aload 16
monitorexit
41: goto 44
StackMap locals:
StackMap stack: java.lang.Throwable
42: aload 16
monitorexit
43: athrow
44: StackMap locals:
StackMap stack:
iconst_1
istore 14
45: aload 15
astore 18
46: iload 14
ifne 48
47: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
48: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int sun.nio.ch.PendingFuture top top java.util.concurrent.Future
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
49: aload 18
areturn
end local 15 50: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
StackMap stack: java.lang.Throwable
astore 15
start local 15 51: aload 15
instanceof java.nio.channels.ClosedChannelException
ifeq 53
52: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 15
53: StackMap locals: java.lang.Throwable
StackMap stack:
aload 15
astore 13
end local 15 54: iload 14
ifne 56
55: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
56: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 65
57: StackMap locals:
StackMap stack: java.lang.Throwable
astore 17
58: iload 14
ifne 60
59: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
60: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int top top java.lang.Throwable
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
61: aload 17
athrow
62: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
StackMap stack:
iload 14
ifne 64
63: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
64: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
65: StackMap locals:
StackMap stack:
aload 13
ifnull 66
aconst_null
goto 69
StackMap locals:
StackMap stack:
66: iload 1
ifeq 68
67: iload 12
i2l
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
goto 69
StackMap locals:
StackMap stack:
68: iload 12
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
69: StackMap locals:
StackMap stack: java.lang.Number
astore 15
start local 15 70: aload 8
ifnull 76
71: iload 10
ifeq 74
72: aload 9
aload 8
aload 7
aload 15
aload 13
invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
73: goto 75
74: StackMap locals: java.lang.Number
StackMap stack:
aload 0
aload 8
aload 7
aload 15
aload 13
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
75: StackMap locals:
StackMap stack:
aconst_null
areturn
76: StackMap locals:
StackMap stack:
aload 15
aload 13
invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 77 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 77 1 isScatteringRead Z
0 77 2 dst Ljava/nio/ByteBuffer;
0 77 3 dsts [Ljava/nio/ByteBuffer;
0 77 4 timeout J
0 77 6 unit Ljava/util/concurrent/TimeUnit;
0 77 7 attachment TA;
0 77 8 handler Ljava/nio/channels/CompletionHandler<TV;-TA;>;
1 77 9 myGroupAndInvokeCount Lsun/nio/ch/Invoker$GroupAndInvokeCount;
2 77 10 invokeDirect Z
3 77 11 attemptRead Z
13 77 12 n I
14 77 13 exc Ljava/lang/Throwable;
15 77 14 pending Z
23 50 15 result Lsun/nio/ch/PendingFuture<TV;TA;>;
51 54 15 x Ljava/lang/Throwable;
70 77 15 result Ljava/lang/Number;
Exception table:
from to target type
24 41 42 any
42 43 42 any
15 46 50 Class java.lang.Throwable
15 46 57 any
50 54 57 any
Signature: <V:Ljava/lang/Number;A:Ljava/lang/Object;>(ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<TV;-TA;>;)Ljava/util/concurrent/Future<TV;>;
MethodParameters:
Name Flags
isScatteringRead
dst
dsts
timeout
unit
attachment
handler
private void finishWrite(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: iconst_m1
istore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
istore 4
start local 4 3: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
astore 5
start local 5 4: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
astore 6
start local 6 5: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
astore 7
start local 7 6: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimer:Ljava/util/concurrent/Future;
astore 8
start local 8 7: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
8: iload 4
ifeq 11
9: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
l2i
istore 2
10: goto 12
11: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
ldc -1
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
istore 2
12: StackMap locals:
StackMap stack:
iload 2
bipush -2
if_icmpne 23
13: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 9
monitorenter
14: aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
15: aload 9
monitorexit
16: goto 19
StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future java.lang.Object
StackMap stack: java.lang.Throwable
17: aload 9
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 21
20: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
21: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
22: return
23: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
24: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
25: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
26: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
27: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
28: goto 42
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 9
start local 9 30: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
31: aload 9
instanceof java.nio.channels.ClosedChannelException
ifeq 33
32: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 9
33: StackMap locals: java.lang.Throwable
StackMap stack:
aload 9
astore 3
end local 9 34: aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 36
35: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
36: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 45
37: StackMap locals:
StackMap stack: java.lang.Throwable
astore 10
38: aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 40
39: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
40: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
41: aload 10
athrow
42: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
StackMap stack:
aload 3
instanceof java.nio.channels.AsynchronousCloseException
ifne 44
43: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
44: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
45: StackMap locals:
StackMap stack:
aload 8
ifnull 47
46: aload 8
iconst_0
invokeinterface java.util.concurrent.Future.cancel:(Z)Z
pop
47: StackMap locals:
StackMap stack:
aload 3
ifnull 48
aconst_null
goto 51
StackMap locals:
StackMap stack:
48: iload 4
ifeq 50
49: iload 2
i2l
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
goto 51
StackMap locals:
StackMap stack:
50: iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
51: StackMap locals:
StackMap stack: java.lang.Number
astore 9
start local 9 52: aload 5
ifnonnull 55
53: aload 7
aload 9
aload 3
invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
54: goto 59
55: StackMap locals: java.lang.Number
StackMap stack:
iload 1
ifeq 58
56: aload 5
aload 6
aload 9
aload 3
invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
57: goto 59
58: StackMap locals:
StackMap stack:
aload 0
aload 5
aload 6
aload 9
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
59: StackMap locals:
StackMap stack:
return
end local 9 end local 8 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 60 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 60 1 mayInvokeDirect Z
1 60 2 n I
2 60 3 exc Ljava/lang/Throwable;
3 60 4 gathering Z
4 60 5 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
5 60 6 att Ljava/lang/Object;
6 60 7 future Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
7 60 8 timer Ljava/util/concurrent/Future<*>;
30 34 9 x Ljava/lang/Throwable;
52 60 9 result Ljava/lang/Number;
Exception table:
from to target type
14 16 17 any
17 18 17 any
7 19 29 Class java.lang.Throwable
23 28 29 Class java.lang.Throwable
7 19 37 any
23 34 37 any
MethodParameters:
Name Flags
mayInvokeDirect
<V extends java.lang.Number, A> java.util.concurrent.Future<V> implWrite(boolean, java.nio.ByteBuffer, java.nio.ByteBuffer[], long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<V, ? super A>);
descriptor: (ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=6, locals=19, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 start local 7 start local 8 0: invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
1: astore 9
start local 9 2: aload 9
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
invokestatic sun.nio.ch.Invoker.mayInvokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Lsun/nio/ch/AsynchronousChannelGroupImpl;)Z
istore 10
start local 10 3: aload 8
ifnull 6
iload 10
ifne 6
4: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
ifeq 6
5: iconst_0
goto 7
StackMap locals: sun.nio.ch.Invoker$GroupAndInvokeCount int
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: istore 11
start local 11 8: bipush -2
istore 12
start local 12 9: aconst_null
astore 13
start local 13 10: iconst_0
istore 14
start local 14 11: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
12: iload 11
ifeq 17
13: iload 1
ifeq 16
14: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 3
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
l2i
istore 12
15: goto 17
16: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
StackMap stack:
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
aload 2
ldc -1
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
istore 12
17: StackMap locals:
StackMap stack:
iload 12
bipush -2
if_icmpne 58
18: aconst_null
astore 15
start local 15 19: aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
dup
astore 16
monitorenter
20: aload 0
iload 1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
21: aload 0
aload 2
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
22: aload 0
aload 3
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
23: aload 8
ifnonnull 29
24: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
25: new sun.nio.ch.PendingFuture
dup
aload 0
getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.WRITE:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
astore 15
26: aload 0
aload 15
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
27: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
28: goto 32
29: StackMap locals: sun.nio.ch.PendingFuture java.lang.Object
StackMap stack:
aload 0
aload 8
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
30: aload 0
aload 7
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
31: aload 0
aconst_null
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
32: StackMap locals:
StackMap stack:
lload 4
lconst_0
lcmp
ifle 34
33: aload 0
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
aload 0
getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
lload 4
aload 6
invokevirtual sun.nio.ch.Port.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimer:Ljava/util/concurrent/Future;
34: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
35: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
36: aload 16
monitorexit
37: goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
38: aload 16
monitorexit
39: athrow
40: StackMap locals:
StackMap stack:
iconst_1
istore 14
41: aload 15
astore 18
42: iload 14
ifne 44
43: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
44: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int sun.nio.ch.PendingFuture top top java.util.concurrent.Future
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
45: aload 18
areturn
end local 15 46: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
StackMap stack: java.lang.Throwable
astore 15
start local 15 47: aload 15
instanceof java.nio.channels.ClosedChannelException
ifeq 49
48: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
astore 15
49: StackMap locals: java.lang.Throwable
StackMap stack:
aload 15
astore 13
end local 15 50: iload 14
ifne 52
51: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
52: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
goto 61
53: StackMap locals:
StackMap stack: java.lang.Throwable
astore 17
54: iload 14
ifne 56
55: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
56: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int top top java.lang.Throwable
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
57: aload 17
athrow
58: StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
StackMap stack:
iload 14
ifne 60
59: aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
60: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
61: StackMap locals:
StackMap stack:
aload 13
ifnull 62
aconst_null
goto 65
StackMap locals:
StackMap stack:
62: iload 1
ifeq 64
63: iload 12
i2l
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
goto 65
StackMap locals:
StackMap stack:
64: iload 12
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
65: StackMap locals:
StackMap stack: java.lang.Number
astore 15
start local 15 66: aload 8
ifnull 72
67: iload 10
ifeq 70
68: aload 9
aload 8
aload 7
aload 15
aload 13
invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
69: goto 71
70: StackMap locals: java.lang.Number
StackMap stack:
aload 0
aload 8
aload 7
aload 15
aload 13
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
71: StackMap locals:
StackMap stack:
aconst_null
areturn
72: StackMap locals:
StackMap stack:
aload 15
aload 13
invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 73 0 this Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
0 73 1 isGatheringWrite Z
0 73 2 src Ljava/nio/ByteBuffer;
0 73 3 srcs [Ljava/nio/ByteBuffer;
0 73 4 timeout J
0 73 6 unit Ljava/util/concurrent/TimeUnit;
0 73 7 attachment TA;
0 73 8 handler Ljava/nio/channels/CompletionHandler<TV;-TA;>;
2 73 9 myGroupAndInvokeCount Lsun/nio/ch/Invoker$GroupAndInvokeCount;
3 73 10 invokeDirect Z
8 73 11 attemptWrite Z
9 73 12 n I
10 73 13 exc Ljava/lang/Throwable;
11 73 14 pending Z
19 46 15 result Lsun/nio/ch/PendingFuture<TV;TA;>;
47 50 15 x Ljava/lang/Throwable;
66 73 15 result Ljava/lang/Number;
Exception table:
from to target type
20 37 38 any
38 39 38 any
11 42 46 Class java.lang.Throwable
11 42 53 any
46 50 53 any
Signature: <V:Ljava/lang/Number;A:Ljava/lang/Object;>(ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<TV;-TA;>;)Ljava/util/concurrent/Future<TV;>;
MethodParameters:
Name Flags
isGatheringWrite
src
srcs
timeout
unit
attachment
handler
private static native void checkConnect(int);
descriptor: (I)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fdVal
}
SourceFile: "UnixAsynchronousSocketChannelImpl.java"
NestMembers:
sun.nio.ch.UnixAsynchronousSocketChannelImpl$1 sun.nio.ch.UnixAsynchronousSocketChannelImpl$2 sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType
InnerClasses:
GroupAndInvokeCount = sun.nio.ch.Invoker$GroupAndInvokeCount of sun.nio.ch.Invoker
abstract PollableChannel = sun.nio.ch.Port$PollableChannel of sun.nio.ch.Port
sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
private final OpType = sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType of sun.nio.ch.UnixAsynchronousSocketChannelImpl