class sun.nio.ch.NioSocketImpl$FileDescriptorCloser implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.nio.ch.NioSocketImpl$FileDescriptorCloser
super_class: java.lang.Object
{
private static final java.lang.invoke.VarHandle CLOSED;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.io.FileDescriptor fd;
descriptor: Ljava/io/FileDescriptor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean stream;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile boolean closed;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
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=4, locals=1, 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$FileDescriptorCloser.$assertionsDisabled:Z
3: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
astore 0
start local 0 4: aload 0
ldc Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
5: ldc "closed"
6: getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
7: invokevirtual java.lang.invoke.MethodHandles$Lookup.findVarHandle:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
putstatic sun.nio.ch.NioSocketImpl$FileDescriptorCloser.CLOSED:Ljava/lang/invoke/VarHandle;
end local 0 8: goto 11
StackMap locals:
StackMap stack: java.lang.Exception
9: astore 0
start local 0 10: new java.lang.InternalError
dup
aload 0
invokespecial java.lang.InternalError.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 11: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
4 8 0 l Ljava/lang/invoke/MethodHandles$Lookup;
10 11 0 e Ljava/lang/Exception;
Exception table:
from to target type
3 8 9 Class java.lang.Exception
void <init>(java.io.FileDescriptor, boolean);
descriptor: (Ljava/io/FileDescriptor;Z)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.nio.ch.NioSocketImpl$FileDescriptorCloser.fd:Ljava/io/FileDescriptor;
2: aload 0
iload 2
putfield sun.nio.ch.NioSocketImpl$FileDescriptorCloser.stream:Z
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
0 4 1 fd Ljava/io/FileDescriptor;
0 4 2 stream Z
MethodParameters:
Name Flags
fd
stream
static sun.nio.ch.NioSocketImpl$FileDescriptorCloser create(sun.nio.ch.NioSocketImpl);
descriptor: (Lsun/nio/ch/NioSocketImpl;)Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: getstatic sun.nio.ch.NioSocketImpl$FileDescriptorCloser.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new sun.nio.ch.NioSocketImpl$FileDescriptorCloser
dup
aload 0
invokestatic sun.nio.ch.NioSocketImpl.access$0:(Lsun/nio/ch/NioSocketImpl;)Ljava/io/FileDescriptor;
aload 0
getfield sun.nio.ch.NioSocketImpl.stream:Z
invokespecial sun.nio.ch.NioSocketImpl$FileDescriptorCloser.<init>:(Ljava/io/FileDescriptor;Z)V
astore 1
start local 1 2: invokestatic jdk.internal.ref.CleanerFactory.cleaner:()Ljava/lang/ref/Cleaner;
aload 0
aload 1
invokevirtual java.lang.ref.Cleaner.register:(Ljava/lang/Object;Ljava/lang/Runnable;)Ljava/lang/ref/Cleaner$Cleanable;
pop
3: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 impl Lsun/nio/ch/NioSocketImpl;
2 4 1 closer Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
MethodParameters:
Name Flags
impl
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: getstatic sun.nio.ch.NioSocketImpl$FileDescriptorCloser.CLOSED:Ljava/lang/invoke/VarHandle;
aload 0
iconst_0
iconst_1
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;ZZ)Z
ifeq 11
1: getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
aload 0
getfield sun.nio.ch.NioSocketImpl$FileDescriptorCloser.fd:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
2: goto 9
StackMap locals:
StackMap stack: java.io.IOException
3: astore 1
start local 1 4: new java.io.UncheckedIOException
dup
aload 1
invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
athrow
end local 1 5: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
6: aload 0
getfield sun.nio.ch.NioSocketImpl$FileDescriptorCloser.stream:Z
ifne 8
7: invokestatic sun.net.ResourceManager.afterUdpClose:()V
8: StackMap locals: sun.nio.ch.NioSocketImpl$FileDescriptorCloser top java.lang.Throwable
StackMap stack:
aload 2
athrow
9: StackMap locals: sun.nio.ch.NioSocketImpl$FileDescriptorCloser
StackMap stack:
aload 0
getfield sun.nio.ch.NioSocketImpl$FileDescriptorCloser.stream:Z
ifne 11
10: invokestatic sun.net.ResourceManager.afterUdpClose:()V
11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/nio/ch/NioSocketImpl$FileDescriptorCloser;
4 5 1 ioe Ljava/io/IOException;
Exception table:
from to target type
1 2 3 Class java.io.IOException
1 5 5 any
}
SourceFile: "NioSocketImpl.java"
NestHost: sun.nio.ch.NioSocketImpl
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Cleanable = java.lang.ref.Cleaner$Cleanable of java.lang.ref.Cleaner
private FileDescriptorCloser = sun.nio.ch.NioSocketImpl$FileDescriptorCloser of sun.nio.ch.NioSocketImpl