public final class sun.nio.ch.NioSocketImpl extends java.net.SocketImpl implements sun.net.PlatformSocketImpl
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.nio.ch.NioSocketImpl
super_class: java.net.SocketImpl
{
private static final sun.nio.ch.NativeDispatcher nd;
descriptor: Lsun/nio/ch/NativeDispatcher;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MAX_BUFFER_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 131072
private final boolean server;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.locks.ReentrantLock readLock;
descriptor: Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.locks.ReentrantLock writeLock;
descriptor: Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.Object stateLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final int ST_NEW;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int ST_UNCONNECTED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int ST_CONNECTING;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int ST_CONNECTED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int ST_CLOSING;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private static final int ST_CLOSED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private volatile int state;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private boolean stream;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private sun.nio.ch.NioSocketImpl$FileDescriptorCloser closer;
descriptor: Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
flags: (0x0002) ACC_PRIVATE
private volatile boolean nonBlocking;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private long readerThread;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long writerThread;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean isReuseAddress;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private volatile int timeout;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean isInputClosed;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean isOutputClosed;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private boolean readEOF;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean connectionReset;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private static volatile java.util.Set<java.net.SocketOption<?>> clientSocketOptions;
descriptor: Ljava/util/Set;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
Signature: Ljava/util/Set<Ljava/net/SocketOption<*>;>;
private static volatile java.util.Set<java.net.SocketOption<?>> serverSocketOptions;
descriptor: Ljava/util/Set;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
Signature: Ljava/util/Set<Ljava/net/SocketOption<*>;>;
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=0, args_size=0
0: ldc Lsun/nio/ch/NioSocketImpl;
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.NioSocketImpl.$assertionsDisabled:Z
3: new sun.nio.ch.SocketDispatcher
dup
invokespecial sun.nio.ch.SocketDispatcher.<init>:()V
putstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
4: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.net.SocketImpl.<init>:()V
1: aload 0
new java.util.concurrent.locks.ReentrantLock
dup
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
putfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
2: aload 0
new java.util.concurrent.locks.ReentrantLock
dup
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
putfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
3: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
4: aload 0
iload 1
putfield sun.nio.ch.NioSocketImpl.server:Z
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/nio/ch/NioSocketImpl;
0 6 1 server Z
MethodParameters:
Name Flags
server
private boolean isOpen();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
iconst_4
if_icmpge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/NioSocketImpl;
private void ensureOpen();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 1
start local 1 1: iload 1
ifne 3
2: new java.net.SocketException
dup
ldc "Socket not created"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: int
StackMap stack:
iload 1
iconst_4
if_icmplt 5
4: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/nio/ch/NioSocketImpl;
1 6 1 state I
Exceptions:
throws java.net.SocketException
private void ensureOpenAndConnected();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 1
start local 1 1: iload 1
iconst_3
if_icmpge 3
2: new java.net.SocketException
dup
ldc "Not connected"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: int
StackMap stack:
iload 1
iconst_3
if_icmple 5
4: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/nio/ch/NioSocketImpl;
1 6 1 state I
Exceptions:
throws java.net.SocketException
private void park(java.io.FileDescriptor, int, long);
descriptor: (Ljava/io/FileDescriptor;IJ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: lload 3
lconst_0
lcmp
ifne 3
1: ldc -1
lstore 5
start local 5 2: goto 4
end local 5 3: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 3
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 5
start local 5 4: StackMap locals: long
StackMap stack:
aload 1
iload 2
lload 5
invokestatic sun.nio.ch.Net.poll:(Ljava/io/FileDescriptor;IJ)I
pop
5: return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/nio/ch/NioSocketImpl;
0 6 1 fd Ljava/io/FileDescriptor;
0 6 2 event I
0 6 3 nanos J
2 3 5 millis J
4 6 5 millis J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
event
nanos
private void park(java.io.FileDescriptor, int);
descriptor: (Ljava/io/FileDescriptor;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
iload 2
lconst_0
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/NioSocketImpl;
0 2 1 fd Ljava/io/FileDescriptor;
0 2 2 event I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
event
private void configureBlocking(java.io.FileDescriptor);
descriptor: (Ljava/io/FileDescriptor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()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.NioSocketImpl.nonBlocking:Z
ifeq 10
2: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
3: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
4: aload 1
iconst_1
invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
5: aload 0
iconst_0
putfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
6: aload 2
monitorexit
7: goto 10
StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.lang.Object
StackMap stack: java.lang.Throwable
8: aload 2
monitorexit
9: athrow
10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/NioSocketImpl;
0 11 1 fd Ljava/io/FileDescriptor;
Exception table:
from to target type
3 7 8 any
8 9 8 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
private void configureNonBlocking(java.io.FileDescriptor);
descriptor: (Ljava/io/FileDescriptor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()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.NioSocketImpl.nonBlocking:Z
ifne 10
2: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
3: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
4: aload 1
iconst_0
invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
5: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
6: aload 2
monitorexit
7: goto 10
StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.lang.Object
StackMap stack: java.lang.Throwable
8: aload 2
monitorexit
9: athrow
10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/NioSocketImpl;
0 11 1 fd Ljava/io/FileDescriptor;
Exception table:
from to target type
3 7 8 any
8 9 8 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
private java.io.FileDescriptor beginRead();
descriptor: ()Ljava/io/FileDescriptor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
2: aload 0
invokestatic sun.nio.ch.NativeThread.current:()J
putfield sun.nio.ch.NioSocketImpl.readerThread:J
3: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
monitorexit
4: areturn
5: StackMap locals: sun.nio.ch.NioSocketImpl java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
6: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 4 5 any
5 6 5 any
Exceptions:
throws java.net.SocketException
private void endRead(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
lconst_0
putfield sun.nio.ch.NioSocketImpl.readerThread:J
2: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 3
start local 3 3: iload 3
iconst_4
if_icmpne 5
4: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 1
ifne 7
iload 3
iconst_4
if_icmplt 7
6: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 3 7: StackMap locals:
StackMap stack:
aload 2
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 2
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/NioSocketImpl;
0 12 1 completed Z
3 7 3 state I
Exception table:
from to target type
1 8 9 any
9 10 9 any
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
completed
private int tryRead(java.io.FileDescriptor, byte[], int, int);
descriptor: (Ljava/io/FileDescriptor;[BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iload 4
invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
astore 5
start local 5 1: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 2
aload 5
invokevirtual java.nio.ByteBuffer.position:()I
ifeq 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals: java.nio.ByteBuffer
StackMap stack:
getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 1
aload 5
checkcast sun.nio.ch.DirectBuffer
invokeinterface sun.nio.ch.DirectBuffer.address:()J
iload 4
invokevirtual sun.nio.ch.NativeDispatcher.read:(Ljava/io/FileDescriptor;JI)I
istore 6
start local 6 3: iload 6
ifle 5
4: aload 5
aload 2
iload 3
iload 6
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
5: StackMap locals: int
StackMap stack:
iload 6
istore 8
6: aload 5
invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
7: iload 8
ireturn
end local 6 8: StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor byte[] int int java.nio.ByteBuffer
StackMap stack: java.lang.Throwable
astore 7
9: aload 5
invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
10: aload 7
athrow
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 11 0 this Lsun/nio/ch/NioSocketImpl;
0 11 1 fd Ljava/io/FileDescriptor;
0 11 2 b [B
0 11 3 off I
0 11 4 len I
1 11 5 dst Ljava/nio/ByteBuffer;
3 8 6 n I
Exception table:
from to target type
2 6 8 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
b
off
len
private int timedRead(java.io.FileDescriptor, byte[], int, int, long);
descriptor: (Ljava/io/FileDescriptor;[BIIJ)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=12, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: invokestatic java.lang.System.nanoTime:()J
lstore 7
start local 7 1: aload 0
aload 1
aload 2
iload 3
iload 4
invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
istore 9
start local 9 2: goto 8
3: StackMap locals: long int
StackMap stack:
lload 5
invokestatic java.lang.System.nanoTime:()J
lload 7
lsub
lsub
lstore 10
start local 10 4: lload 10
lconst_0
lcmp
ifgt 6
5: new java.net.SocketTimeoutException
dup
ldc "Read timed out"
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: long
StackMap stack:
aload 0
aload 1
getstatic sun.nio.ch.Net.POLLIN:S
lload 10
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
7: aload 0
aload 1
aload 2
iload 3
iload 4
invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
istore 9
end local 10 8: StackMap locals:
StackMap stack:
iload 9
bipush -2
if_icmpne 9
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 3
9: StackMap locals:
StackMap stack:
iload 9
ireturn
end local 9 end local 7 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 10 0 this Lsun/nio/ch/NioSocketImpl;
0 10 1 fd Ljava/io/FileDescriptor;
0 10 2 b [B
0 10 3 off I
0 10 4 len I
0 10 5 nanos J
1 10 7 startNanos J
2 10 9 n I
4 8 10 remainingNanos J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
b
off
len
nanos
private int implRead(byte[], int, int);
descriptor: ([BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.beginRead:()Ljava/io/FileDescriptor;
astore 5
start local 5 2: aload 0
getfield sun.nio.ch.NioSocketImpl.connectionReset:Z
ifeq 4
3: new java.net.SocketException
dup
ldc "Connection reset"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: int java.io.FileDescriptor
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
ifeq 9
5: aload 0
iload 4
ifle 6
iconst_1
goto 7
StackMap locals:
StackMap stack: sun.nio.ch.NioSocketImpl
6: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
StackMap stack: sun.nio.ch.NioSocketImpl int
7: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
8: iconst_m1
ireturn
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.timeout:I
istore 6
start local 6 10: iload 6
ifle 14
11: aload 0
aload 5
invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
12: aload 0
aload 5
aload 1
iload 2
iload 3
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
iload 6
i2l
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
invokevirtual sun.nio.ch.NioSocketImpl.timedRead:(Ljava/io/FileDescriptor;[BIIJ)I
istore 4
13: goto 19
14: StackMap locals: int
StackMap stack:
aload 0
aload 5
aload 1
iload 2
iload 3
invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
istore 4
15: goto 18
16: StackMap locals:
StackMap stack:
aload 0
aload 5
getstatic sun.nio.ch.Net.POLLIN:S
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
17: aload 0
aload 5
aload 1
iload 2
iload 3
invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
istore 4
18: StackMap locals:
StackMap stack:
iload 4
i2l
invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
ifeq 19
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 16
19: StackMap locals:
StackMap stack:
iload 4
istore 8
20: aload 0
iload 4
ifle 21
iconst_1
goto 22
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor int top int
StackMap stack: sun.nio.ch.NioSocketImpl
21: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor int top int
StackMap stack: sun.nio.ch.NioSocketImpl int
22: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
23: iload 8
ireturn
end local 6 24: StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
StackMap stack: java.net.SocketTimeoutException
astore 6
start local 6 25: aload 6
athrow
end local 6 26: StackMap locals:
StackMap stack: sun.net.ConnectionResetException
pop
27: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.connectionReset:Z
28: new java.net.SocketException
dup
ldc "Connection reset"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack: java.io.IOException
astore 6
start local 6 30: new java.net.SocketException
dup
aload 6
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 6 31: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
32: aload 0
iload 4
ifle 33
iconst_1
goto 34
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl
33: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl int
34: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
35: aload 7
athrow
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 36 0 this Lsun/nio/ch/NioSocketImpl;
0 36 1 b [B
0 36 2 off I
0 36 3 len I
1 36 4 n I
2 36 5 fd Ljava/io/FileDescriptor;
10 24 6 timeout I
25 26 6 e Ljava/net/SocketTimeoutException;
30 31 6 ioe Ljava/io/IOException;
Exception table:
from to target type
2 5 24 Class java.net.SocketTimeoutException
9 20 24 Class java.net.SocketTimeoutException
2 5 26 Class sun.net.ConnectionResetException
9 20 26 Class sun.net.ConnectionResetException
2 5 29 Class java.io.IOException
9 20 29 Class java.io.IOException
2 5 31 any
9 20 31 any
24 31 31 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
b
off
len
private int read(byte[], int, int);
descriptor: ([BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iload 3
aload 1
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
1: iload 3
ifne 3
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
4: aload 0
getfield sun.nio.ch.NioSocketImpl.readEOF:Z
ifeq 7
5: aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
6: iconst_m1
ireturn
7: StackMap locals:
StackMap stack:
iload 3
ldc 131072
invokestatic java.lang.Math.min:(II)I
istore 4
start local 4 8: aload 0
aload 1
iload 2
iload 4
invokevirtual sun.nio.ch.NioSocketImpl.implRead:([BII)I
istore 5
start local 5 9: iload 5
iconst_m1
if_icmpne 11
10: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.readEOF:Z
11: StackMap locals: int int
StackMap stack:
iload 5
istore 7
12: aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
13: iload 7
ireturn
end local 5 end local 4 14: StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int
StackMap stack: java.lang.Throwable
astore 6
15: aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
16: aload 6
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/nio/ch/NioSocketImpl;
0 17 1 b [B
0 17 2 off I
0 17 3 len I
8 14 4 size I
9 14 5 n I
Exception table:
from to target type
4 5 14 any
7 12 14 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
b
off
len
private java.io.FileDescriptor beginWrite();
descriptor: ()Ljava/io/FileDescriptor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
2: aload 0
invokestatic sun.nio.ch.NativeThread.current:()J
putfield sun.nio.ch.NioSocketImpl.writerThread:J
3: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
monitorexit
4: areturn
5: StackMap locals: sun.nio.ch.NioSocketImpl java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
6: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 4 5 any
5 6 5 any
Exceptions:
throws java.net.SocketException
private void endWrite(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
lconst_0
putfield sun.nio.ch.NioSocketImpl.writerThread:J
2: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 3
start local 3 3: iload 3
iconst_4
if_icmpne 5
4: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 1
ifne 7
iload 3
iconst_4
if_icmplt 7
6: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 3 7: StackMap locals:
StackMap stack:
aload 2
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 2
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/NioSocketImpl;
0 12 1 completed Z
3 7 3 state I
Exception table:
from to target type
1 8 9 any
9 10 9 any
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
completed
private int tryWrite(java.io.FileDescriptor, byte[], int, int);
descriptor: (Ljava/io/FileDescriptor;[BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iload 4
invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
astore 5
start local 5 1: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 2
aload 5
invokevirtual java.nio.ByteBuffer.position:()I
ifeq 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals: java.nio.ByteBuffer
StackMap stack:
aload 5
aload 2
iload 3
iload 4
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
3: getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 1
aload 5
checkcast sun.nio.ch.DirectBuffer
invokeinterface sun.nio.ch.DirectBuffer.address:()J
iload 4
invokevirtual sun.nio.ch.NativeDispatcher.write:(Ljava/io/FileDescriptor;JI)I
istore 7
4: aload 5
invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
5: iload 7
ireturn
6: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
7: aload 5
invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
8: aload 6
athrow
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 9 0 this Lsun/nio/ch/NioSocketImpl;
0 9 1 fd Ljava/io/FileDescriptor;
0 9 2 b [B
0 9 3 off I
0 9 4 len I
1 9 5 src Ljava/nio/ByteBuffer;
Exception table:
from to target type
2 4 6 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
b
off
len
private int implWrite(byte[], int, int);
descriptor: ([BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.beginWrite:()Ljava/io/FileDescriptor;
astore 5
start local 5 2: aload 0
aload 5
aload 1
iload 2
iload 3
invokevirtual sun.nio.ch.NioSocketImpl.tryWrite:(Ljava/io/FileDescriptor;[BII)I
istore 4
3: goto 6
4: StackMap locals: int java.io.FileDescriptor
StackMap stack:
aload 0
aload 5
getstatic sun.nio.ch.Net.POLLOUT:S
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
5: aload 0
aload 5
aload 1
iload 2
iload 3
invokevirtual sun.nio.ch.NioSocketImpl.tryWrite:(Ljava/io/FileDescriptor;[BII)I
istore 4
6: StackMap locals:
StackMap stack:
iload 4
i2l
invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
ifeq 7
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 4
7: StackMap locals:
StackMap stack:
iload 4
istore 8
8: aload 0
iload 4
ifle 9
iconst_1
goto 10
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top top int
StackMap stack: sun.nio.ch.NioSocketImpl
9: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top top int
StackMap stack: sun.nio.ch.NioSocketImpl int
10: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
11: iload 8
ireturn
12: StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
StackMap stack: java.io.IOException
astore 6
start local 6 13: new java.net.SocketException
dup
aload 6
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 6 14: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
15: aload 0
iload 4
ifle 16
iconst_1
goto 17
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl
16: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl int
17: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
18: aload 7
athrow
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 19 0 this Lsun/nio/ch/NioSocketImpl;
0 19 1 b [B
0 19 2 off I
0 19 3 len I
1 19 4 n I
2 19 5 fd Ljava/io/FileDescriptor;
13 14 6 ioe Ljava/io/IOException;
Exception table:
from to target type
2 8 12 Class java.io.IOException
2 8 14 any
12 14 14 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
b
off
len
private void write(byte[], int, int);
descriptor: ([BII)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iload 3
aload 1
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
1: iload 3
ifle 15
2: aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
3: iload 2
istore 4
start local 4 4: iload 2
iload 3
iadd
istore 5
start local 5 5: goto 9
6: StackMap locals: int int
StackMap stack:
iload 5
iload 4
isub
ldc 131072
invokestatic java.lang.Math.min:(II)I
istore 6
start local 6 7: aload 0
aload 1
iload 4
iload 6
invokevirtual sun.nio.ch.NioSocketImpl.implWrite:([BII)I
istore 7
start local 7 8: iload 4
iload 7
iadd
istore 4
end local 7 end local 6 9: StackMap locals:
StackMap stack:
iload 4
iload 5
if_icmplt 6
end local 5 end local 4 10: goto 14
StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int
StackMap stack: java.lang.Throwable
11: astore 8
12: aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
13: aload 8
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
15: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/nio/ch/NioSocketImpl;
0 16 1 b [B
0 16 2 off I
0 16 3 len I
4 10 4 pos I
5 10 5 end I
7 9 6 size I
8 9 7 n I
Exception table:
from to target type
3 11 11 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
b
off
len
protected void create(boolean);
descriptor: (Z)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
ifeq 3
2: new java.io.IOException
dup
ldc "Already created"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.lang.Object
StackMap stack:
iload 1
ifne 5
4: invokestatic sun.net.ResourceManager.beforeUdpCreate:()V
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.server:Z
ifeq 9
6: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 7
iload 1
ifne 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
iconst_1
invokestatic sun.nio.ch.Net.serverSocket:(Z)Ljava/io/FileDescriptor;
astore 3
start local 3 8: goto 15
end local 3 9: StackMap locals:
StackMap stack:
iload 1
invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
astore 3
start local 3 10: goto 15
end local 3 StackMap locals:
StackMap stack: java.io.IOException
11: astore 4
start local 4 12: iload 1
ifne 14
13: invokestatic sun.net.ResourceManager.afterUdpClose:()V
14: StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object top java.io.IOException
StackMap stack:
aload 4
athrow
end local 4 start local 3 15: StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object java.io.FileDescriptor
StackMap stack:
aload 0
aload 3
putfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
16: aload 0
iload 1
putfield sun.nio.ch.NioSocketImpl.stream:Z
17: aload 0
aload 0
invokestatic sun.nio.ch.NioSocketImpl$FileDescriptorCloser.create:(Lsun/nio/ch/NioSocketImpl;)Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
putfield sun.nio.ch.NioSocketImpl.closer:Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
18: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.state:I
end local 3 19: aload 2
monitorexit
20: goto 23
StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object
StackMap stack: java.lang.Throwable
21: aload 2
monitorexit
22: athrow
23: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lsun/nio/ch/NioSocketImpl;
0 24 1 stream Z
8 9 3 fd Ljava/io/FileDescriptor;
10 11 3 fd Ljava/io/FileDescriptor;
15 19 3 fd Ljava/io/FileDescriptor;
12 15 4 ioe Ljava/io/IOException;
Exception table:
from to target type
5 10 11 Class java.io.IOException
1 20 21 any
21 22 21 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
stream
private java.io.FileDescriptor beginConnect(java.net.InetAddress, int);
descriptor: (Ljava/net/InetAddress;I)Ljava/io/FileDescriptor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 4
start local 4 2: iload 4
iconst_1
if_icmpeq 12
3: iload 4
ifne 5
4: new java.net.SocketException
dup
ldc "Not created"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 4
iconst_2
if_icmpne 7
6: new java.net.SocketException
dup
ldc "Connection in progress"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
iload 4
iconst_3
if_icmpne 9
8: new java.net.SocketException
dup
ldc "Already connected"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
iload 4
iconst_4
if_icmplt 11
10: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals:
StackMap stack:
aload 0
iconst_2
putfield sun.nio.ch.NioSocketImpl.state:I
13: aload 0
getfield sun.nio.ch.NioSocketImpl.localport:I
ifne 15
14: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
iload 2
invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
15: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
16: aload 0
iload 2
putfield sun.nio.ch.NioSocketImpl.port:I
17: aload 0
invokestatic sun.nio.ch.NativeThread.current:()J
putfield sun.nio.ch.NioSocketImpl.readerThread:J
18: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 3
monitorexit
19: areturn
end local 4 20: StackMap locals: sun.nio.ch.NioSocketImpl java.net.InetAddress int java.lang.Object
StackMap stack: java.lang.Throwable
aload 3
monitorexit
21: athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/nio/ch/NioSocketImpl;
0 22 1 address Ljava/net/InetAddress;
0 22 2 port I
2 20 4 state I
Exception table:
from to target type
1 19 20 any
20 21 20 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
address
port
private void endConnect(java.io.FileDescriptor, boolean);
descriptor: (Ljava/io/FileDescriptor;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
lconst_0
putfield sun.nio.ch.NioSocketImpl.readerThread:J
2: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 4
start local 4 3: iload 4
iconst_4
if_icmpne 5
4: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 2
ifeq 9
iload 4
iconst_2
if_icmpne 9
6: aload 0
iconst_3
putfield sun.nio.ch.NioSocketImpl.state:I
7: aload 0
aload 1
invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
invokevirtual java.net.InetSocketAddress.getPort:()I
putfield sun.nio.ch.NioSocketImpl.localport:I
8: goto 11
StackMap locals:
StackMap stack:
9: iload 2
ifne 11
iload 4
iconst_4
if_icmplt 11
10: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 4 11: StackMap locals:
StackMap stack:
aload 3
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 3
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/nio/ch/NioSocketImpl;
0 16 1 fd Ljava/io/FileDescriptor;
0 16 2 completed Z
3 11 4 state I
Exception table:
from to target type
1 12 13 any
13 14 13 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
completed
private boolean timedFinishConnect(java.io.FileDescriptor, long);
descriptor: (Ljava/io/FileDescriptor;J)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: invokestatic java.lang.System.nanoTime:()J
lstore 4
start local 4 1: aload 1
invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
istore 6
start local 6 2: goto 8
3: StackMap locals: long int
StackMap stack:
lload 2
invokestatic java.lang.System.nanoTime:()J
lload 4
lsub
lsub
lstore 7
start local 7 4: lload 7
lconst_0
lcmp
ifgt 6
5: new java.net.SocketTimeoutException
dup
ldc "Connect timed out"
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: long
StackMap stack:
aload 0
aload 1
getstatic sun.nio.ch.Net.POLLOUT:S
lload 7
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
7: aload 1
invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
istore 6
end local 7 8: StackMap locals:
StackMap stack:
iload 6
ifne 9
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 3
9: StackMap locals:
StackMap stack:
iload 6
ifeq 10
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifeq 10
iconst_1
ireturn
StackMap locals:
StackMap stack:
10: iconst_0
ireturn
end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/NioSocketImpl;
0 11 1 fd Ljava/io/FileDescriptor;
0 11 2 nanos J
1 11 4 startNanos J
2 11 6 polled Z
4 8 7 remainingNanos J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
nanos
protected void connect(java.net.SocketAddress, int);
descriptor: (Ljava/net/SocketAddress;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=14, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof java.net.InetSocketAddress
ifne 2
1: new java.io.IOException
dup
ldc "Unsupported address type"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast java.net.InetSocketAddress
astore 3
start local 3 3: aload 3
invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
ifeq 5
4: new java.net.UnknownHostException
dup
aload 3
invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
invokespecial java.net.UnknownHostException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: java.net.InetSocketAddress
StackMap stack:
aload 3
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
astore 4
start local 4 6: aload 4
invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
ifeq 8
7: invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
astore 4
8: StackMap locals: java.net.InetAddress
StackMap stack:
aload 3
invokevirtual java.net.InetSocketAddress.getPort:()I
istore 5
start local 5 9: aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 6
start local 6 10: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
11: iconst_0
istore 7
start local 7 12: aload 0
aload 4
iload 5
invokevirtual sun.nio.ch.NioSocketImpl.beginConnect:(Ljava/net/InetAddress;I)Ljava/io/FileDescriptor;
astore 8
start local 8 13: iload 2
ifle 15
14: aload 0
aload 8
invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
15: StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock int java.io.FileDescriptor
StackMap stack:
aload 8
aload 4
iload 5
invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
istore 9
start local 9 16: iload 9
ifle 19
17: iconst_1
istore 7
18: goto 32
19: StackMap locals: int
StackMap stack:
getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 20
iload 9
i2l
invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
ifne 20
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
20: StackMap locals:
StackMap stack:
iload 2
ifle 24
21: getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
iload 2
i2l
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 10
start local 10 22: aload 0
aload 8
lload 10
invokevirtual sun.nio.ch.NioSocketImpl.timedFinishConnect:(Ljava/io/FileDescriptor;J)Z
istore 7
end local 10 23: goto 32
24: StackMap locals:
StackMap stack:
iconst_0
istore 10
start local 10 25: goto 28
26: StackMap locals: int
StackMap stack:
aload 0
aload 8
getstatic sun.nio.ch.Net.POLLOUT:S
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
27: aload 8
invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
istore 10
28: StackMap locals:
StackMap stack:
iload 10
ifne 29
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 26
29: StackMap locals:
StackMap stack:
iload 10
ifeq 30
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifeq 30
iconst_1
goto 31
StackMap locals:
StackMap stack:
30: iconst_0
StackMap locals:
StackMap stack: int
31: istore 7
end local 10 32: StackMap locals:
StackMap stack:
iload 7
ifeq 38
iload 2
ifle 38
33: aload 0
aload 8
invokevirtual sun.nio.ch.NioSocketImpl.configureBlocking:(Ljava/io/FileDescriptor;)V
end local 9 34: goto 38
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock int java.io.FileDescriptor
StackMap stack: java.lang.Throwable
35: astore 12
36: aload 0
aload 8
iload 7
invokevirtual sun.nio.ch.NioSocketImpl.endConnect:(Ljava/io/FileDescriptor;Z)V
37: aload 12
athrow
38: StackMap locals:
StackMap stack:
aload 0
aload 8
iload 7
invokevirtual sun.nio.ch.NioSocketImpl.endConnect:(Ljava/io/FileDescriptor;Z)V
end local 8 end local 7 39: goto 43
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
40: astore 13
41: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
42: aload 13
athrow
43: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
44: goto 48
StackMap locals:
StackMap stack: java.io.IOException
45: astore 7
start local 7 46: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.close:()V
47: aload 7
aload 3
invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
athrow
end local 7 48: 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 49 0 this Lsun/nio/ch/NioSocketImpl;
0 49 1 remote Ljava/net/SocketAddress;
0 49 2 millis I
3 49 3 isa Ljava/net/InetSocketAddress;
6 49 4 address Ljava/net/InetAddress;
9 49 5 port I
10 49 6 connectLock Ljava/util/concurrent/locks/ReentrantLock;
12 39 7 connected Z
13 39 8 fd Ljava/io/FileDescriptor;
16 34 9 n I
22 23 10 nanos J
25 32 10 polled Z
46 48 7 ioe Ljava/io/IOException;
Exception table:
from to target type
13 35 35 any
11 40 40 any
10 44 45 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
remote
millis
protected void connect(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new java.net.InetSocketAddress
dup
aload 1
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
iconst_0
invokevirtual sun.nio.ch.NioSocketImpl.connect:(Ljava/net/SocketAddress;I)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/NioSocketImpl;
0 2 1 host Ljava/lang/String;
0 2 2 port I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
port
protected void connect(java.net.InetAddress, int);
descriptor: (Ljava/net/InetAddress;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new java.net.InetSocketAddress
dup
aload 1
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
iconst_0
invokevirtual sun.nio.ch.NioSocketImpl.connect:(Ljava/net/SocketAddress;I)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/NioSocketImpl;
0 2 1 address Ljava/net/InetAddress;
0 2 2 port I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
address
port
protected void bind(java.net.InetAddress, int);
descriptor: (Ljava/net/InetAddress;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.localport:I
ifeq 4
3: new java.net.SocketException
dup
ldc "Already bound"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
iload 2
invokestatic sun.net.NetHooks.beforeTcpBind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
5: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
iload 2
invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
6: aload 0
aload 1
putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
7: aload 0
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
invokevirtual java.net.InetSocketAddress.getPort:()I
putfield sun.nio.ch.NioSocketImpl.localport:I
8: aload 3
monitorexit
9: goto 12
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 3
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/nio/ch/NioSocketImpl;
0 13 1 host Ljava/net/InetAddress;
0 13 2 port I
Exception table:
from to target type
1 9 10 any
10 11 10 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
port
protected void listen(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.localport:I
ifne 4
3: new java.net.SocketException
dup
ldc "Not bound"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
iload 1
iconst_1
if_icmpge 5
bipush 50
goto 6
StackMap locals:
StackMap stack: java.io.FileDescriptor
5: iload 1
StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object
StackMap stack: java.io.FileDescriptor int
6: invokestatic sun.nio.ch.Net.listen:(Ljava/io/FileDescriptor;I)V
7: aload 2
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 2
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/NioSocketImpl;
0 12 1 backlog I
Exception table:
from to target type
1 8 9 any
9 10 9 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
backlog
private java.io.FileDescriptor beginAccept();
descriptor: ()Ljava/io/FileDescriptor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.stream:Z
ifne 4
3: new java.net.SocketException
dup
ldc "Not a stream socket"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.localport:I
ifne 6
5: new java.net.SocketException
dup
ldc "Not bound"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.nio.ch.NativeThread.current:()J
putfield sun.nio.ch.NioSocketImpl.readerThread:J
7: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
monitorexit
8: areturn
9: StackMap locals:
StackMap stack: java.lang.Throwable
aload 1
monitorexit
10: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 8 9 any
9 10 9 any
Exceptions:
throws java.net.SocketException
private void endAccept(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 3
start local 3 2: aload 0
lconst_0
putfield sun.nio.ch.NioSocketImpl.readerThread:J
3: iload 3
iconst_4
if_icmpne 5
4: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 1
ifne 7
iload 3
iconst_4
if_icmplt 7
6: new java.net.SocketException
dup
ldc "Socket closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 3 7: StackMap locals:
StackMap stack:
aload 2
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 2
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/NioSocketImpl;
0 12 1 completed Z
2 7 3 state I
Exception table:
from to target type
1 8 9 any
9 10 9 any
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
completed
private int timedAccept(java.io.FileDescriptor, java.io.FileDescriptor, java.net.InetSocketAddress[], long);
descriptor: (Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;J)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: invokestatic java.lang.System.nanoTime:()J
lstore 6
start local 6 1: aload 1
aload 2
aload 3
invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
istore 8
start local 8 2: goto 8
3: StackMap locals: long int
StackMap stack:
lload 4
invokestatic java.lang.System.nanoTime:()J
lload 6
lsub
lsub
lstore 9
start local 9 4: lload 9
lconst_0
lcmp
ifgt 6
5: new java.net.SocketTimeoutException
dup
ldc "Accept timed out"
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: long
StackMap stack:
aload 0
aload 1
getstatic sun.nio.ch.Net.POLLIN:S
lload 9
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
7: aload 1
aload 2
aload 3
invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
istore 8
end local 9 8: StackMap locals:
StackMap stack:
iload 8
bipush -2
if_icmpne 9
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 3
9: StackMap locals:
StackMap stack:
iload 8
ireturn
end local 8 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 10 0 this Lsun/nio/ch/NioSocketImpl;
0 10 1 fd Ljava/io/FileDescriptor;
0 10 2 newfd Ljava/io/FileDescriptor;
0 10 3 isaa [Ljava/net/InetSocketAddress;
0 10 4 nanos J
1 10 6 startNanos J
2 10 8 n I
4 8 9 remainingNanos J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fd
newfd
isaa
nanos
protected void accept(java.net.SocketImpl);
descriptor: (Ljava/net/SocketImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=13, args_size=2
start local 0 start local 1 0: aload 1
checkcast sun.nio.ch.NioSocketImpl
astore 2
start local 2 1: aload 2
getfield sun.nio.ch.NioSocketImpl.state:I
ifeq 3
2: new java.net.SocketException
dup
ldc "Not a newly created SocketImpl"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: sun.nio.ch.NioSocketImpl
StackMap stack:
new java.io.FileDescriptor
dup
invokespecial java.io.FileDescriptor.<init>:()V
astore 3
start local 3 4: iconst_1
anewarray java.net.InetSocketAddress
astore 4
start local 4 5: aload 0
getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 5
start local 5 6: aload 0
getfield sun.nio.ch.NioSocketImpl.timeout:I
istore 6
start local 6 7: lconst_0
lstore 7
start local 7 8: iload 6
ifle 13
9: aload 5
iload 6
i2l
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokestatic sun.nio.ch.NioSocketImpl.tryLock:(Ljava/util/concurrent/locks/ReentrantLock;JLjava/util/concurrent/TimeUnit;)J
lstore 7
10: lload 7
lconst_0
lcmp
ifgt 14
11: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 12
aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()Z
ifeq 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long
StackMap stack:
new java.net.SocketTimeoutException
dup
ldc "Accept timed out"
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
14: StackMap locals:
StackMap stack:
iconst_0
istore 9
start local 9 15: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.beginAccept:()Ljava/io/FileDescriptor;
astore 10
start local 10 16: lload 7
lconst_0
lcmp
ifle 20
17: aload 0
aload 10
invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
18: aload 0
aload 10
aload 3
aload 4
lload 7
invokevirtual sun.nio.ch.NioSocketImpl.timedAccept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;J)I
istore 9
19: goto 32
20: StackMap locals: int java.io.FileDescriptor
StackMap stack:
aload 10
aload 3
aload 4
invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
istore 9
21: goto 24
22: StackMap locals:
StackMap stack:
aload 0
aload 10
getstatic sun.nio.ch.Net.POLLIN:S
invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
23: aload 10
aload 3
aload 4
invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
istore 9
24: StackMap locals:
StackMap stack:
iload 9
i2l
invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
ifeq 32
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 22
25: goto 32
StackMap locals:
StackMap stack: java.lang.Throwable
26: astore 11
27: aload 0
iload 9
ifle 28
iconst_1
goto 29
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl
28: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl int
29: invokevirtual sun.nio.ch.NioSocketImpl.endAccept:(Z)V
30: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 31
iload 9
invokestatic sun.nio.ch.IOStatus.check:(I)Z
ifne 31
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
31: StackMap locals:
StackMap stack:
aload 11
athrow
32: StackMap locals:
StackMap stack:
aload 0
iload 9
ifle 33
iconst_1
goto 34
StackMap locals:
StackMap stack: sun.nio.ch.NioSocketImpl
33: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor
StackMap stack: sun.nio.ch.NioSocketImpl int
34: invokevirtual sun.nio.ch.NioSocketImpl.endAccept:(Z)V
35: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 39
iload 9
invokestatic sun.nio.ch.IOStatus.check:(I)Z
ifne 39
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 10 end local 9 36: StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long
StackMap stack: java.lang.Throwable
astore 12
37: aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
38: aload 12
athrow
39: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
40: aload 3
invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
astore 9
start local 9 41: aload 3
iconst_1
invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
42: goto 46
end local 9 StackMap locals:
StackMap stack: java.io.IOException
43: astore 10
start local 10 44: getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 3
invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
45: aload 10
athrow
end local 10 start local 9 46: StackMap locals: java.net.InetSocketAddress
StackMap stack:
aload 2
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 10
monitorenter
47: aload 2
aload 3
putfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
48: aload 2
iconst_1
putfield sun.nio.ch.NioSocketImpl.stream:Z
49: aload 2
aload 2
invokestatic sun.nio.ch.NioSocketImpl$FileDescriptorCloser.create:(Lsun/nio/ch/NioSocketImpl;)Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
putfield sun.nio.ch.NioSocketImpl.closer:Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
50: aload 2
aload 9
invokevirtual java.net.InetSocketAddress.getPort:()I
putfield sun.nio.ch.NioSocketImpl.localport:I
51: aload 2
aload 4
iconst_0
aaload
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
52: aload 2
aload 4
iconst_0
aaload
invokevirtual java.net.InetSocketAddress.getPort:()I
putfield sun.nio.ch.NioSocketImpl.port:I
53: aload 2
iconst_3
putfield sun.nio.ch.NioSocketImpl.state:I
54: aload 10
monitorexit
55: goto 58
StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long java.net.InetSocketAddress java.lang.Object
StackMap stack: java.lang.Throwable
56: aload 10
monitorexit
57: athrow
58: StackMap locals:
StackMap stack:
return
end local 9 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 59 0 this Lsun/nio/ch/NioSocketImpl;
0 59 1 si Ljava/net/SocketImpl;
1 59 2 nsi Lsun/nio/ch/NioSocketImpl;
4 59 3 newfd Ljava/io/FileDescriptor;
5 59 4 isaa [Ljava/net/InetSocketAddress;
6 59 5 acceptLock Ljava/util/concurrent/locks/ReentrantLock;
7 59 6 timeout I
8 59 7 remainingNanos J
15 36 9 n I
16 36 10 fd Ljava/io/FileDescriptor;
41 43 9 localAddress Ljava/net/InetSocketAddress;
46 59 9 localAddress Ljava/net/InetSocketAddress;
44 46 10 ioe Ljava/io/IOException;
Exception table:
from to target type
16 26 26 any
14 36 36 any
40 42 43 Class java.io.IOException
47 55 56 any
56 57 56 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
si
protected java.io.InputStream getInputStream();
descriptor: ()Ljava/io/InputStream;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: new sun.nio.ch.NioSocketImpl$1
dup
aload 0
invokespecial sun.nio.ch.NioSocketImpl$1.<init>:(Lsun/nio/ch/NioSocketImpl;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/NioSocketImpl;
protected java.io.OutputStream getOutputStream();
descriptor: ()Ljava/io/OutputStream;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: new sun.nio.ch.NioSocketImpl$2
dup
aload 0
invokespecial sun.nio.ch.NioSocketImpl$2.<init>:(Lsun/nio/ch/NioSocketImpl;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/NioSocketImpl;
protected int available();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
ifeq 5
3: aload 1
monitorexit
4: iconst_0
ireturn
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.Net.available:(Ljava/io/FileDescriptor;)I
aload 1
monitorexit
6: ireturn
7: StackMap locals:
StackMap stack: java.lang.Throwable
aload 1
monitorexit
8: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 4 7 any
5 6 7 any
7 8 7 any
Exceptions:
throws java.io.IOException
private boolean tryClose();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 0: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 2
aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifeq 1
aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
iconst_4
if_icmpeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.readerThread:J
lconst_0
lcmp
ifne 12
aload 0
getfield sun.nio.ch.NioSocketImpl.writerThread:J
lconst_0
lcmp
ifne 12
3: aload 0
getfield sun.nio.ch.NioSocketImpl.closer:Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
invokevirtual sun.nio.ch.NioSocketImpl$FileDescriptorCloser.run:()V
4: goto 10
StackMap locals:
StackMap stack: java.io.UncheckedIOException
5: astore 1
start local 1 6: aload 1
invokevirtual java.io.UncheckedIOException.getCause:()Ljava/io/IOException;
athrow
end local 1 7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
8: aload 0
iconst_5
putfield sun.nio.ch.NioSocketImpl.state:I
9: aload 2
athrow
10: StackMap locals:
StackMap stack:
aload 0
iconst_5
putfield sun.nio.ch.NioSocketImpl.state:I
11: iconst_1
ireturn
12: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/nio/ch/NioSocketImpl;
6 7 1 ioe Ljava/io/UncheckedIOException;
Exception table:
from to target type
3 4 5 Class java.io.UncheckedIOException
3 7 7 any
Exceptions:
throws java.io.IOException
private void tryFinishClose();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryClose:()Z
pop
1: goto 3
StackMap locals:
StackMap stack: java.io.IOException
2: pop
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
0 1 2 Class java.io.IOException
protected void close();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=7, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield sun.nio.ch.NioSocketImpl.state:I
istore 2
start local 2 2: iload 2
iconst_4
if_icmplt 5
3: aload 1
monitorexit
4: return
5: StackMap locals: java.lang.Object int
StackMap stack:
iload 2
ifne 9
6: aload 0
iconst_5
putfield sun.nio.ch.NioSocketImpl.state:I
7: aload 1
monitorexit
8: return
9: StackMap locals:
StackMap stack:
aload 0
iconst_4
putfield sun.nio.ch.NioSocketImpl.state:I
10: getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
astore 3
start local 3 11: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 3
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
ifeq 15
12: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
iconst_1
invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
end local 3 13: goto 15
StackMap locals:
StackMap stack: java.io.IOException
14: pop
15: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.tryClose:()Z
ifne 23
16: getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.NativeDispatcher.preClose:(Ljava/io/FileDescriptor;)V
17: aload 0
getfield sun.nio.ch.NioSocketImpl.readerThread:J
lstore 3
start local 3 18: lload 3
lconst_0
lcmp
ifeq 20
19: lload 3
invokestatic sun.nio.ch.NativeThread.signal:(J)V
20: StackMap locals: long
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.writerThread:J
lstore 5
start local 5 21: lload 5
lconst_0
lcmp
ifeq 23
22: lload 5
invokestatic sun.nio.ch.NativeThread.signal:(J)V
end local 5 end local 3 end local 2 23: StackMap locals:
StackMap stack:
aload 1
monitorexit
24: goto 27
StackMap locals:
StackMap stack: java.lang.Throwable
25: aload 1
monitorexit
26: athrow
27: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/nio/ch/NioSocketImpl;
2 23 2 state I
11 13 3 SO_LINGER Ljava/net/SocketOption<Ljava/lang/Integer;>;
18 23 3 reader J
21 23 5 writer J
Exception table:
from to target type
10 13 14 Class java.io.IOException
1 4 25 any
5 8 25 any
9 24 25 any
25 26 25 any
Exceptions:
throws java.io.IOException
protected java.util.Set<java.net.SocketOption<?>> supportedOptions();
descriptor: ()Ljava/util/Set;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.server:Z
ifeq 1
getstatic sun.nio.ch.NioSocketImpl.serverSocketOptions:Ljava/util/Set;
goto 2
StackMap locals:
StackMap stack:
1: getstatic sun.nio.ch.NioSocketImpl.clientSocketOptions:Ljava/util/Set;
StackMap locals:
StackMap stack: java.util.Set
2: astore 1
start local 1 3: aload 1
ifnonnull 24
4: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
5: aload 1
getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
6: aload 1
getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
7: aload 0
getfield sun.nio.ch.NioSocketImpl.server:Z
ifeq 11
8: aload 1
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
9: aload 1
invokestatic sun.net.ext.ExtendedSocketOptions.serverSocketOptions:()Ljava/util/Set;
invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
pop
10: goto 17
11: StackMap locals: java.util.Set
StackMap stack:
aload 1
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
12: aload 1
getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
13: aload 1
getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
14: aload 1
getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
15: aload 1
getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
16: aload 1
invokestatic sun.net.ext.ExtendedSocketOptions.clientSocketOptions:()Ljava/util/Set;
invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
pop
17: StackMap locals:
StackMap stack:
invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
ifeq 19
18: aload 1
getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
19: StackMap locals:
StackMap stack:
aload 1
invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
astore 1
20: aload 0
getfield sun.nio.ch.NioSocketImpl.server:Z
ifeq 23
21: aload 1
putstatic sun.nio.ch.NioSocketImpl.serverSocketOptions:Ljava/util/Set;
22: goto 24
23: StackMap locals:
StackMap stack:
aload 1
putstatic sun.nio.ch.NioSocketImpl.clientSocketOptions:Ljava/util/Set;
24: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lsun/nio/ch/NioSocketImpl;
3 25 1 options Ljava/util/Set<Ljava/net/SocketOption<*>;>;
Signature: ()Ljava/util/Set<Ljava/net/SocketOption<*>;>;
protected <T> void setOption(java.net.SocketOption<T>, );
descriptor: (Ljava/net/SocketOption;Ljava/lang/Object;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.supportedOptions:()Ljava/util/Set;
aload 1
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 2
1: new java.lang.UnsupportedOperationException
dup
new java.lang.StringBuilder
dup
ldc "'"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' not supported"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.net.SocketOption.type:()Ljava/lang/Class;
aload 2
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifne 4
3: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Invalid value '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
5: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
6: aload 1
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
if_acmpne 9
7: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
aload 1
aload 2
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
8: goto 17
StackMap locals: java.lang.Object
StackMap stack:
9: aload 1
getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
if_acmpne 16
10: aload 2
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
istore 4
start local 4 11: invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
ifeq 14
12: aload 0
iload 4
putfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
13: goto 17
14: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
end local 4 15: goto 17
16: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
aload 2
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
17: StackMap locals:
StackMap stack:
aload 3
monitorexit
18: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
19: aload 3
monitorexit
20: athrow
21: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/nio/ch/NioSocketImpl;
0 22 1 opt Ljava/net/SocketOption<TT;>;
0 22 2 value TT;
11 15 4 b Z
Exception table:
from to target type
5 18 19 any
19 20 19 any
Exceptions:
throws java.io.IOException
Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;TT;)V
MethodParameters:
Name Flags
opt
value
protected <T> T getOption(java.net.SocketOption<T>);
descriptor: (Ljava/net/SocketOption;)Ljava/lang/Object;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.supportedOptions:()Ljava/util/Set;
aload 1
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 2
1: new java.lang.UnsupportedOperationException
dup
new java.lang.StringBuilder
dup
ldc "'"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' not supported"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
3: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
4: aload 1
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
if_acmpne 7
5: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
aload 1
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
aload 2
monitorexit
6: areturn
7: StackMap locals: java.lang.Object
StackMap stack:
aload 1
getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
if_acmpne 13
8: invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
ifeq 11
9: aload 0
getfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
aload 2
monitorexit
10: areturn
11: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
aload 2
monitorexit
12: areturn
13: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
aload 1
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
aload 2
monitorexit
14: areturn
15: StackMap locals:
StackMap stack: java.lang.Throwable
aload 2
monitorexit
16: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/nio/ch/NioSocketImpl;
0 17 1 opt Ljava/net/SocketOption<TT;>;
Exception table:
from to target type
3 6 15 any
7 10 15 any
11 12 15 any
13 14 15 any
15 16 15 any
Exceptions:
throws java.io.IOException
Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;)TT;
MethodParameters:
Name Flags
opt
private boolean booleanValue(java.lang.Object, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof java.lang.Boolean
ifne 2
1: new java.net.SocketException
dup
new java.lang.StringBuilder
dup
ldc "Bad value for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/nio/ch/NioSocketImpl;
0 3 1 value Ljava/lang/Object;
0 3 2 desc Ljava/lang/String;
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
value
desc
private int intValue(java.lang.Object, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/String;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof java.lang.Integer
ifne 2
1: new java.net.SocketException
dup
new java.lang.StringBuilder
dup
ldc "Bad value for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/nio/ch/NioSocketImpl;
0 3 1 value Ljava/lang/Object;
0 3 2 desc Ljava/lang/String;
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
value
desc
public void setOption(int, java.lang.Object);
descriptor: (ILjava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
2: iload 1
lookupswitch { // 10
1: 17
3: 14
4: 36
8: 30
14: 42
128: 3
4097: 20
4098: 25
4099: 33
4102: 9
default: 47
}
3: StackMap locals: java.lang.Object
StackMap stack:
aload 2
instanceof java.lang.Boolean
ifeq 6
aload 2
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 6
4: iconst_m1
istore 4
start local 4 5: goto 7
end local 4 6: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_LINGER"
invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
istore 4
start local 4 7: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
8: goto 52
end local 4 9: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_TIMEOUT"
invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
istore 4
start local 4 10: iload 4
ifge 12
11: new java.lang.IllegalArgumentException
dup
ldc "timeout < 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: int
StackMap stack:
aload 0
iload 4
putfield sun.nio.ch.NioSocketImpl.timeout:I
13: goto 52
end local 4 14: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "IP_TOS"
invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
istore 4
start local 4 15: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
16: goto 52
end local 4 17: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "TCP_NODELAY"
invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
istore 4
start local 4 18: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
19: goto 52
end local 4 20: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_SNDBUF"
invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
istore 4
start local 4 21: iload 4
ifgt 23
22: new java.net.SocketException
dup
ldc "SO_SNDBUF <= 0"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
24: goto 52
end local 4 25: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_RCVBUF"
invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
istore 4
start local 4 26: iload 4
ifgt 28
27: new java.net.SocketException
dup
ldc "SO_RCVBUF <= 0"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
29: goto 52
end local 4 30: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_KEEPALIVE"
invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
istore 4
start local 4 31: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
32: goto 52
end local 4 33: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_OOBINLINE"
invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
istore 4
start local 4 34: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic sun.nio.ch.ExtendedSocketOption.SO_OOBINLINE:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
35: goto 52
end local 4 36: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_REUSEADDR"
invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
istore 4
start local 4 37: invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
ifeq 40
38: aload 0
iload 4
putfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
39: goto 52
40: StackMap locals: int
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
41: goto 52
end local 4 42: StackMap locals:
StackMap stack:
invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
ifne 44
43: new java.net.SocketException
dup
ldc "SO_REUSEPORT not supported"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
aload 0
aload 2
ldc "SO_REUSEPORT"
invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
istore 4
start local 4 45: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
iload 4
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
46: goto 52
end local 4 47: StackMap locals:
StackMap stack:
new java.net.SocketException
dup
new java.lang.StringBuilder
dup
ldc "Unknown option "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack: java.net.SocketException
astore 4
start local 4 49: aload 4
athrow
end local 4 50: StackMap locals:
StackMap stack: java.lang.Exception
astore 4
start local 4 51: new java.net.SocketException
dup
aload 4
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 4 52: StackMap locals:
StackMap stack:
aload 3
monitorexit
53: goto 56
StackMap locals:
StackMap stack: java.lang.Throwable
54: aload 3
monitorexit
55: athrow
56: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 57 0 this Lsun/nio/ch/NioSocketImpl;
0 57 1 opt I
0 57 2 value Ljava/lang/Object;
5 6 4 i I
7 9 4 i I
10 14 4 i I
15 17 4 i I
18 20 4 b Z
21 25 4 i I
26 30 4 i I
31 33 4 b Z
34 36 4 b Z
37 42 4 b Z
45 47 4 b Z
49 50 4 e Ljava/net/SocketException;
51 52 4 e Ljava/lang/Exception;
Exception table:
from to target type
2 48 48 Class java.net.SocketException
2 48 50 Class java.lang.IllegalArgumentException
2 48 50 Class java.io.IOException
1 53 54 any
54 55 54 any
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
opt
value
public java.lang.Object getOption(int);
descriptor: (I)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
2: iload 1
lookupswitch { // 11
1: 6
3: 36
4: 20
8: 39
14: 42
15: 27
128: 12
4097: 30
4098: 33
4099: 9
4102: 3
default: 47
}
3: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.timeout:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
4: aload 2
monitorexit
5: areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
7: aload 2
monitorexit
8: areturn
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic sun.nio.ch.ExtendedSocketOption.SO_OOBINLINE:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
10: aload 2
monitorexit
11: areturn
12: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 3
start local 3 13: iload 3
iconst_m1
if_icmpne 17
14: getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
15: aload 2
monitorexit
16: areturn
17: StackMap locals: int
StackMap stack:
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
18: aload 2
monitorexit
19: areturn
end local 3 20: StackMap locals:
StackMap stack:
invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
ifeq 24
21: aload 0
getfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
22: aload 2
monitorexit
23: areturn
24: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
25: aload 2
monitorexit
26: areturn
27: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
28: aload 2
monitorexit
29: areturn
30: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
31: aload 2
monitorexit
32: areturn
33: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
34: aload 2
monitorexit
35: areturn
36: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
37: aload 2
monitorexit
38: areturn
39: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
40: aload 2
monitorexit
41: areturn
42: StackMap locals:
StackMap stack:
invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
ifne 44
43: new java.net.SocketException
dup
ldc "SO_REUSEPORT not supported"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
45: aload 2
monitorexit
46: areturn
47: StackMap locals:
StackMap stack:
new java.net.SocketException
dup
new java.lang.StringBuilder
dup
ldc "Unknown option "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack: java.net.SocketException
astore 3
start local 3 49: aload 3
athrow
end local 3 50: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 51: new java.net.SocketException
dup
aload 3
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
end local 3 52: StackMap locals:
StackMap stack: java.lang.Throwable
aload 2
monitorexit
53: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lsun/nio/ch/NioSocketImpl;
0 54 1 opt I
13 20 3 i I
49 50 3 e Ljava/net/SocketException;
51 52 3 e Ljava/lang/Exception;
Exception table:
from to target type
2 4 48 Class java.net.SocketException
6 7 48 Class java.net.SocketException
9 10 48 Class java.net.SocketException
12 15 48 Class java.net.SocketException
17 18 48 Class java.net.SocketException
20 22 48 Class java.net.SocketException
24 25 48 Class java.net.SocketException
27 28 48 Class java.net.SocketException
30 31 48 Class java.net.SocketException
33 34 48 Class java.net.SocketException
36 37 48 Class java.net.SocketException
39 40 48 Class java.net.SocketException
42 45 48 Class java.net.SocketException
47 48 48 Class java.net.SocketException
2 4 50 Class java.lang.IllegalArgumentException
6 7 50 Class java.lang.IllegalArgumentException
9 10 50 Class java.lang.IllegalArgumentException
12 15 50 Class java.lang.IllegalArgumentException
17 18 50 Class java.lang.IllegalArgumentException
20 22 50 Class java.lang.IllegalArgumentException
24 25 50 Class java.lang.IllegalArgumentException
27 28 50 Class java.lang.IllegalArgumentException
30 31 50 Class java.lang.IllegalArgumentException
33 34 50 Class java.lang.IllegalArgumentException
36 37 50 Class java.lang.IllegalArgumentException
39 40 50 Class java.lang.IllegalArgumentException
42 45 50 Class java.lang.IllegalArgumentException
47 48 50 Class java.lang.IllegalArgumentException
2 4 50 Class java.io.IOException
6 7 50 Class java.io.IOException
9 10 50 Class java.io.IOException
12 15 50 Class java.io.IOException
17 18 50 Class java.io.IOException
20 22 50 Class java.io.IOException
24 25 50 Class java.io.IOException
27 28 50 Class java.io.IOException
30 31 50 Class java.io.IOException
33 34 50 Class java.io.IOException
36 37 50 Class java.io.IOException
39 40 50 Class java.io.IOException
42 45 50 Class java.io.IOException
47 48 50 Class java.io.IOException
1 5 52 any
6 8 52 any
9 11 52 any
12 16 52 any
17 19 52 any
20 23 52 any
24 26 52 any
27 29 52 any
30 32 52 any
33 35 52 any
36 38 52 any
39 41 52 any
42 46 52 any
47 53 52 any
Exceptions:
throws java.net.SocketException
MethodParameters:
Name Flags
opt
protected void shutdownInput();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
ifne 5
3: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
iconst_0
invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
4: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
5: StackMap locals: java.lang.Object
StackMap stack:
aload 1
monitorexit
6: goto 9
StackMap locals:
StackMap stack: java.lang.Throwable
7: aload 1
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 6 7 any
7 8 7 any
Exceptions:
throws java.io.IOException
protected void shutdownOutput();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
2: aload 0
getfield sun.nio.ch.NioSocketImpl.isOutputClosed:Z
ifne 5
3: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
iconst_1
invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
4: aload 0
iconst_1
putfield sun.nio.ch.NioSocketImpl.isOutputClosed:Z
5: StackMap locals: java.lang.Object
StackMap stack:
aload 1
monitorexit
6: goto 9
StackMap locals:
StackMap stack: java.lang.Throwable
7: aload 1
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/nio/ch/NioSocketImpl;
Exception table:
from to target type
1 6 7 any
7 8 7 any
Exceptions:
throws java.io.IOException
protected boolean supportsUrgentData();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/nio/ch/NioSocketImpl;
protected void sendUrgentData(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: iconst_0
istore 2
start local 2 2: aload 0
invokevirtual sun.nio.ch.NioSocketImpl.beginWrite:()Ljava/io/FileDescriptor;
astore 3
start local 3 3: StackMap locals: int java.io.FileDescriptor
StackMap stack:
aload 3
iload 1
i2b
invokestatic sun.nio.ch.Net.sendOOB:(Ljava/io/FileDescriptor;B)I
istore 2
4: iload 2
bipush -3
if_icmpne 5
aload 0
invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
ifne 3
5: StackMap locals:
StackMap stack:
iload 2
bipush -2
if_icmpne 12
6: new java.net.SocketException
dup
ldc "No buffer space available"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
8: aload 0
iload 2
ifle 9
iconst_1
goto 10
StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl
9: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor java.lang.Throwable
StackMap stack: sun.nio.ch.NioSocketImpl int
10: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
11: aload 4
athrow
12: StackMap locals:
StackMap stack:
aload 0
iload 2
ifle 13
iconst_1
goto 14
StackMap locals:
StackMap stack: sun.nio.ch.NioSocketImpl
13: iconst_0
StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor
StackMap stack: sun.nio.ch.NioSocketImpl int
14: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
end local 3 end local 2 15: goto 19
StackMap locals: sun.nio.ch.NioSocketImpl int
StackMap stack: java.lang.Throwable
16: astore 5
17: aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
18: aload 5
athrow
19: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
20: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lsun/nio/ch/NioSocketImpl;
0 21 1 data I
2 15 2 n I
3 15 3 fd Ljava/io/FileDescriptor;
Exception table:
from to target type
3 7 7 any
1 16 16 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
data
private static long tryLock(java.util.concurrent.locks.ReentrantLock, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/util/concurrent/locks/ReentrantLock;JLjava/util/concurrent/TimeUnit;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=12, args_size=3
start local 0 start local 1 start local 3 0: getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
ifne 1
lload 1
lconst_0
lcmp
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 2: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 1
aload 3
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
lstore 5
start local 5 3: lload 5
lstore 7
start local 7 4: invokestatic java.lang.System.nanoTime:()J
lstore 9
start local 9 5: iconst_0
istore 11
start local 11 6: goto 12
7: StackMap locals: java.util.concurrent.locks.ReentrantLock long java.util.concurrent.TimeUnit int long long long int
StackMap stack:
aload 0
lload 7
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.locks.ReentrantLock.tryLock:(JLjava/util/concurrent/TimeUnit;)Z
istore 11
8: goto 11
StackMap locals:
StackMap stack: java.lang.InterruptedException
9: pop
10: iconst_1
istore 4
11: StackMap locals:
StackMap stack:
lload 5
invokestatic java.lang.System.nanoTime:()J
lload 9
lsub
lsub
lstore 7
12: StackMap locals:
StackMap stack:
iload 11
ifne 13
lload 7
lconst_0
lcmp
ifgt 7
13: StackMap locals:
StackMap stack:
iload 11
ifeq 15
lload 7
lconst_0
lcmp
ifgt 15
14: aload 0
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
15: StackMap locals:
StackMap stack:
iload 4
ifeq 17
16: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
17: StackMap locals:
StackMap stack:
lload 7
lreturn
end local 11 end local 9 end local 7 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 lock Ljava/util/concurrent/locks/ReentrantLock;
0 18 1 timeout J
0 18 3 unit Ljava/util/concurrent/TimeUnit;
2 18 4 interrupted Z
3 18 5 nanos J
4 18 7 remainingNanos J
5 18 9 startNanos J
6 18 11 acquired Z
Exception table:
from to target type
7 8 9 Class java.lang.InterruptedException
MethodParameters:
Name Flags
lock
timeout
unit
private static java.net.ProtocolFamily family();
descriptor: ()Ljava/net/ProtocolFamily;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic sun.nio.ch.Net.isIPv6Available:()Z
ifeq 2
1: getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
areturn
2: StackMap locals:
StackMap stack:
getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
areturn
LocalVariableTable:
Start End Slot Name Signature
static java.io.FileDescriptor access$0(sun.nio.ch.NioSocketImpl);
descriptor: (Lsun/nio/ch/NioSocketImpl;)Ljava/io/FileDescriptor;
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "NioSocketImpl.java"
NestMembers:
sun.nio.ch.NioSocketImpl$1 sun.nio.ch.NioSocketImpl$2 sun.nio.ch.NioSocketImpl$FileDescriptorCloser
InnerClasses:
sun.nio.ch.NioSocketImpl$1
sun.nio.ch.NioSocketImpl$2
private FileDescriptorCloser = sun.nio.ch.NioSocketImpl$FileDescriptorCloser of sun.nio.ch.NioSocketImpl