public class org.jruby.util.io.ChannelFD implements java.io.Closeable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.util.io.ChannelFD
super_class: java.lang.Object
{
public java.nio.channels.Channel ch;
descriptor: Ljava/nio/channels/Channel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.ReadableByteChannel chRead;
descriptor: Ljava/nio/channels/ReadableByteChannel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.WritableByteChannel chWrite;
descriptor: Ljava/nio/channels/WritableByteChannel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.SeekableByteChannel chSeek;
descriptor: Ljava/nio/channels/SeekableByteChannel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.SelectableChannel chSelect;
descriptor: Ljava/nio/channels/SelectableChannel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.FileChannel chFile;
descriptor: Ljava/nio/channels/FileChannel;
flags: (0x0001) ACC_PUBLIC
public java.nio.channels.SocketChannel chSock;
descriptor: Ljava/nio/channels/SocketChannel;
flags: (0x0001) ACC_PUBLIC
public jnr.enxio.channels.NativeSelectableChannel chNative;
descriptor: Ljnr/enxio/channels/NativeSelectableChannel;
flags: (0x0001) ACC_PUBLIC
public int realFileno;
descriptor: I
flags: (0x0001) ACC_PUBLIC
public int fakeFileno;
descriptor: I
flags: (0x0001) ACC_PUBLIC
private java.util.concurrent.atomic.AtomicInteger refs;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0002) ACC_PRIVATE
public java.lang.ThreadLocal<java.nio.channels.FileLock> currentLock;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x0001) ACC_PUBLIC
Signature: Ljava/lang/ThreadLocal<Ljava/nio/channels/FileLock;>;
private final jnr.posix.POSIX posix;
descriptor: Ljnr/posix/POSIX;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public boolean isNativeFile;
descriptor: Z
flags: (0x0001) ACC_PUBLIC
private final org.jruby.util.io.FilenoUtil filenoUtil;
descriptor: Lorg/jruby/util/io/FilenoUtil;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean needsClosing;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean maybeHandle;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final int openflags;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/util/io/ChannelFD;
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 org.jruby.util.io.ChannelFD.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.nio.channels.Channel, jnr.posix.POSIX, org.jruby.util.io.FilenoUtil, int);
descriptor: (Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.lang.ThreadLocal
dup
invokespecial java.lang.ThreadLocal.<init>:()V
putfield org.jruby.util.io.ChannelFD.currentLock:Ljava/lang/ThreadLocal;
2: aload 0
iconst_0
putfield org.jruby.util.io.ChannelFD.isNativeFile:Z
3: aload 0
iconst_0
putfield org.jruby.util.io.ChannelFD.needsClosing:Z
4: aload 0
iconst_0
putfield org.jruby.util.io.ChannelFD.maybeHandle:Z
5: getstatic org.jruby.util.io.ChannelFD.$assertionsDisabled:Z
ifne 6
aload 1
ifnonnull 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: org.jruby.util.io.ChannelFD java.nio.channels.Channel jnr.posix.POSIX org.jruby.util.io.FilenoUtil int
StackMap stack:
aload 0
aload 1
putfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
7: aload 0
aload 2
putfield org.jruby.util.io.ChannelFD.posix:Ljnr/posix/POSIX;
8: aload 0
aload 3
putfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
9: aload 0
iload 4
putfield org.jruby.util.io.ChannelFD.openflags:I
10: aload 0
iconst_0
invokevirtual org.jruby.util.io.ChannelFD.initFileno:(Z)V
11: aload 0
invokevirtual org.jruby.util.io.ChannelFD.initChannelTypes:()V
12: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
iconst_1
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
putfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
13: aload 3
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
aload 0
invokevirtual org.jruby.util.io.FilenoUtil.registerWrapper:(ILorg/jruby/util/io/ChannelFD;)V
14: aload 3
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
aload 0
invokevirtual org.jruby.util.io.FilenoUtil.registerWrapper:(ILorg/jruby/util/io/ChannelFD;)V
15: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/jruby/util/io/ChannelFD;
0 16 1 fd Ljava/nio/channels/Channel;
0 16 2 posix Ljnr/posix/POSIX;
0 16 3 filenoUtil Lorg/jruby/util/io/FilenoUtil;
0 16 4 flags I
MethodParameters:
Name Flags
fd
posix
filenoUtil
flags
public void <init>(java.nio.channels.Channel, jnr.posix.POSIX, org.jruby.util.io.FilenoUtil);
descriptor: (Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
iconst_m1
invokespecial org.jruby.util.io.ChannelFD.<init>:(Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;I)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/util/io/ChannelFD;
0 2 1 fd Ljava/nio/channels/Channel;
0 2 2 posix Ljnr/posix/POSIX;
0 2 3 filenoUtil Lorg/jruby/util/io/FilenoUtil;
MethodParameters:
Name Flags
fd
posix
filenoUtil
private void initFileno(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
invokestatic org.jruby.util.io.FilenoUtil.filenoFrom:(Ljava/nio/channels/Channel;)I
putfield org.jruby.util.io.ChannelFD.realFileno:I
1: getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
ifeq 10
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpne 10
aload 0
getfield org.jruby.util.io.ChannelFD.openflags:I
iflt 10
2: iload 1
ifeq 9
3: aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
aload 0
getfield org.jruby.util.io.ChannelFD.openflags:I
invokevirtual org.jruby.util.io.FilenoUtil.filenoFromHandleIn:(Ljava/nio/channels/Channel;I)I
putfield org.jruby.util.io.ChannelFD.realFileno:I
4: aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpeq 5
iconst_1
goto 6
StackMap locals:
StackMap stack: org.jruby.util.io.ChannelFD
5: iconst_0
StackMap locals: org.jruby.util.io.ChannelFD int
StackMap stack: org.jruby.util.io.ChannelFD int
6: putfield org.jruby.util.io.ChannelFD.needsClosing:Z
7: aload 0
iconst_0
putfield org.jruby.util.io.ChannelFD.maybeHandle:Z
8: goto 10
9: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.jruby.util.io.ChannelFD.maybeHandle:Z
10: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpne 13
11: aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
invokevirtual org.jruby.util.io.FilenoUtil.getNewFileno:()I
putfield org.jruby.util.io.ChannelFD.fakeFileno:I
12: goto 14
13: StackMap locals:
StackMap stack:
aload 0
iconst_m1
putfield org.jruby.util.io.ChannelFD.fakeFileno:I
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/jruby/util/io/ChannelFD;
0 15 1 allocate Z
MethodParameters:
Name Flags
allocate
public org.jruby.util.io.ChannelFD dup();
descriptor: ()Lorg/jruby/util/io/ChannelFD;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpeq 2
getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
ifne 2
1: new org.jruby.util.io.ChannelFD
dup
new jnr.enxio.channels.NativeDeviceChannel
dup
aload 0
getfield org.jruby.util.io.ChannelFD.posix:Ljnr/posix/POSIX;
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
invokeinterface jnr.posix.POSIX.dup:(I)I
invokespecial jnr.enxio.channels.NativeDeviceChannel.<init>:(I)V
aload 0
getfield org.jruby.util.io.ChannelFD.posix:Ljnr/posix/POSIX;
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
invokespecial org.jruby.util.io.ChannelFD.<init>:(Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;)V
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
astore 1
start local 1 3: new org.jruby.util.io.ChannelFD
dup
aload 1
aload 0
getfield org.jruby.util.io.ChannelFD.posix:Ljnr/posix/POSIX;
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
invokespecial org.jruby.util.io.ChannelFD.<init>:(Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;)V
astore 2
start local 2 4: aload 2
aload 0
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
putfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
5: aload 2
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
6: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/io/ChannelFD;
3 7 1 ch Ljava/nio/channels/Channel;
4 7 2 fd Lorg/jruby/util/io/ChannelFD;
public int dup2From(jnr.posix.POSIX, org.jruby.util.io.ChannelFD);
descriptor: (Ljnr/posix/POSIX;Lorg/jruby/util/io/ChannelFD;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpeq 2
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpeq 2
aload 0
getfield org.jruby.util.io.ChannelFD.chFile:Ljava/nio/channels/FileChannel;
ifnonnull 2
1: aload 1
aload 2
getfield org.jruby.util.io.ChannelFD.realFileno:I
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
invokeinterface jnr.posix.POSIX.dup2:(II)I
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 2
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
putfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
3: aload 0
iconst_0
invokevirtual org.jruby.util.io.ChannelFD.initFileno:(Z)V
4: aload 0
invokevirtual org.jruby.util.io.ChannelFD.initChannelTypes:()V
5: aload 0
aload 2
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
putfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
6: aload 0
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
7: aload 0
aload 2
getfield org.jruby.util.io.ChannelFD.currentLock:Ljava/lang/ThreadLocal;
putfield org.jruby.util.io.ChannelFD.currentLock:Ljava/lang/ThreadLocal;
8: aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/util/io/ChannelFD;
0 9 1 posix Ljnr/posix/POSIX;
0 9 2 dup2Source Lorg/jruby/util/io/ChannelFD;
MethodParameters:
Name Flags
posix
dup2Source
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.util.io.ChannelFD.finish:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/util/io/ChannelFD;
Exceptions:
throws java.io.IOException
public int bestFileno();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpne 1
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/util/io/ChannelFD;
public int bestFileno(boolean);
descriptor: (Z)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.util.io.ChannelFD.maybeHandle:Z
ifeq 5
iload 1
ifeq 5
1: aload 0
iconst_1
invokevirtual org.jruby.util.io.ChannelFD.initFileno:(Z)V
2: getstatic org.jruby.util.io.ChannelFD.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.jruby.util.io.ChannelFD.maybeHandle:Z
ifeq 3
new java.lang.AssertionError
dup
ldc "lazy handle creation state changed"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
aload 0
invokevirtual org.jruby.util.io.FilenoUtil.registerWrapper:(ILorg/jruby/util/io/ChannelFD;)V
4: aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
aload 0
invokevirtual org.jruby.util.io.FilenoUtil.registerWrapper:(ILorg/jruby/util/io/ChannelFD;)V
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.util.io.ChannelFD.bestFileno:()I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/util/io/ChannelFD;
0 6 1 forceFileno Z
MethodParameters:
Name Flags
forceFileno
private void finish();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
dup
astore 1
monitorenter
1: aload 0
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ifgt 3
2: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
athrow
3: StackMap locals: java.util.concurrent.atomic.AtomicInteger
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
invokeinterface java.nio.channels.Channel.isOpen:()Z
ifne 5
4: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.refs:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
istore 2
start local 2 6: iload 2
ifgt 17
7: aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
invokeinterface java.nio.channels.Channel.close:()V
8: aload 0
getfield org.jruby.util.io.ChannelFD.needsClosing:Z
ifeq 15
9: aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
invokevirtual org.jruby.util.io.FilenoUtil.closeFilenoHandle:(I)I
pop
10: goto 15
StackMap locals: org.jruby.util.io.ChannelFD java.util.concurrent.atomic.AtomicInteger int
StackMap stack: java.lang.Throwable
11: astore 3
12: aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
invokevirtual org.jruby.util.io.FilenoUtil.unregisterWrapper:(I)V
13: aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
invokevirtual org.jruby.util.io.FilenoUtil.unregisterWrapper:(I)V
14: aload 3
athrow
15: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
invokevirtual org.jruby.util.io.FilenoUtil.unregisterWrapper:(I)V
16: aload 0
getfield org.jruby.util.io.ChannelFD.filenoUtil:Lorg/jruby/util/io/FilenoUtil;
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
invokevirtual org.jruby.util.io.FilenoUtil.unregisterWrapper:(I)V
end local 2 17: StackMap locals:
StackMap stack:
aload 1
monitorexit
18: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
19: aload 1
monitorexit
20: athrow
21: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/jruby/util/io/ChannelFD;
6 17 2 count I
Exception table:
from to target type
7 11 11 any
1 18 19 any
19 20 19 any
Exceptions:
throws java.io.IOException
private void initChannelTypes();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic org.jruby.util.io.ChannelFD.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.jruby.util.io.ChannelFD.realFileno:I
iconst_m1
if_icmpne 1
aload 0
getfield org.jruby.util.io.ChannelFD.fakeFileno:I
iconst_m1
if_icmpne 1
new java.lang.AssertionError
dup
ldc "initialize filenos before initChannelTypes"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.ReadableByteChannel
ifeq 2
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.ReadableByteChannel
putfield org.jruby.util.io.ChannelFD.chRead:Ljava/nio/channels/ReadableByteChannel;
goto 3
2: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chRead:Ljava/nio/channels/ReadableByteChannel;
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.WritableByteChannel
ifeq 4
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.WritableByteChannel
putfield org.jruby.util.io.ChannelFD.chWrite:Ljava/nio/channels/WritableByteChannel;
goto 5
4: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chWrite:Ljava/nio/channels/WritableByteChannel;
5: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.SeekableByteChannel
ifeq 6
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.SeekableByteChannel
putfield org.jruby.util.io.ChannelFD.chSeek:Ljava/nio/channels/SeekableByteChannel;
goto 7
6: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chSeek:Ljava/nio/channels/SeekableByteChannel;
7: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.SelectableChannel
ifeq 8
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.SelectableChannel
putfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
goto 9
8: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.FileChannel
ifeq 10
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.FileChannel
putfield org.jruby.util.io.ChannelFD.chFile:Ljava/nio/channels/FileChannel;
goto 11
10: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chFile:Ljava/nio/channels/FileChannel;
11: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof java.nio.channels.SocketChannel
ifeq 12
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast java.nio.channels.SocketChannel
putfield org.jruby.util.io.ChannelFD.chSock:Ljava/nio/channels/SocketChannel;
goto 13
12: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chSock:Ljava/nio/channels/SocketChannel;
13: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
instanceof jnr.enxio.channels.NativeSelectableChannel
ifeq 14
aload 0
aload 0
getfield org.jruby.util.io.ChannelFD.ch:Ljava/nio/channels/Channel;
checkcast jnr.enxio.channels.NativeSelectableChannel
putfield org.jruby.util.io.ChannelFD.chNative:Ljnr/enxio/channels/NativeSelectableChannel;
goto 15
14: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chNative:Ljnr/enxio/channels/NativeSelectableChannel;
15: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.ChannelFD.chNative:Ljnr/enxio/channels/NativeSelectableChannel;
ifnull 20
16: aload 0
getfield org.jruby.util.io.ChannelFD.posix:Ljnr/posix/POSIX;
aload 0
getfield org.jruby.util.io.ChannelFD.chNative:Ljnr/enxio/channels/NativeSelectableChannel;
invokeinterface jnr.enxio.channels.NativeSelectableChannel.getFD:()I
invokeinterface jnr.posix.POSIX.fstat:(I)Ljnr/posix/FileStat;
astore 1
start local 1 17: aload 1
invokeinterface jnr.posix.FileStat.isFile:()Z
ifeq 20
18: aload 0
aconst_null
putfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
19: aload 0
iconst_1
putfield org.jruby.util.io.ChannelFD.isNativeFile:Z
end local 1 20: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/jruby/util/io/ChannelFD;
17 20 1 stat Ljnr/posix/FileStat;
}
SourceFile: "ChannelFD.java"