public class org.jruby.util.io.SelectExecutor
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.util.io.SelectExecutor
super_class: java.lang.Object
{
private static org.jruby.RubyThread$Task<org.jruby.util.io.SelectExecutor, java.lang.Integer> SelectTask;
descriptor: Lorg/jruby/RubyThread$Task;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Lorg/jruby/RubyThread$Task<Lorg/jruby/util/io/SelectExecutor;Ljava/lang/Integer;>;
final org.jruby.runtime.builtin.IRubyObject read;
descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0010) ACC_FINAL
final org.jruby.runtime.builtin.IRubyObject write;
descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0010) ACC_FINAL
final org.jruby.runtime.builtin.IRubyObject except;
descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0010) ACC_FINAL
java.util.List<java.nio.channels.SelectionKey> readKeyList;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Ljava/nio/channels/SelectionKey;>;
java.util.List<java.nio.channels.SelectionKey> writeKeyList;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Ljava/nio/channels/SelectionKey;>;
java.util.List<java.nio.channels.SelectionKey> errorKeyList;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Ljava/nio/channels/SelectionKey;>;
java.util.List<org.jruby.util.io.ChannelFD> unselectableReadFDs;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Lorg/jruby/util/io/ChannelFD;>;
java.util.List<org.jruby.util.io.ChannelFD> unselectableWriteFDs;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Lorg/jruby/util/io/ChannelFD;>;
java.util.List<org.jruby.util.io.ChannelFD> pendingReadFDs;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Lorg/jruby/util/io/ChannelFD;>;
java.nio.channels.Selector mainSelector;
descriptor: Ljava/nio/channels/Selector;
flags: (0x0000)
java.util.List<java.nio.channels.Selector> selectors;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Ljava/nio/channels/Selector;>;
java.util.List<org.jruby.util.io.SelectExecutor$ENXIOSelector> enxioSelectors;
descriptor: Ljava/util/List;
flags: (0x0000)
Signature: Ljava/util/List<Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;>;
java.lang.Long timeout;
descriptor: Ljava/lang/Long;
flags: (0x0000)
final org.jruby.Ruby runtime;
descriptor: Lorg/jruby/Ruby;
flags: (0x0010) ACC_FINAL
public static final int READ_ACCEPT_OPS;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 17
public static final int WRITE_CONNECT_OPS;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 12
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new org.jruby.util.io.SelectExecutor$1
dup
invokespecial org.jruby.util.io.SelectExecutor$1.<init>:()V
putstatic org.jruby.util.io.SelectExecutor.SelectTask:Lorg/jruby/RubyThread$Task;
1: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, java.lang.Long);
descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Ljava/lang/Long;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, 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
aconst_null
putfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
2: aload 0
aconst_null
putfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
3: aload 0
invokestatic java.util.Collections.emptyList:()Ljava/util/List;
putfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
4: aload 0
aload 1
putfield org.jruby.util.io.SelectExecutor.read:Lorg/jruby/runtime/builtin/IRubyObject;
5: aload 0
aload 2
putfield org.jruby.util.io.SelectExecutor.write:Lorg/jruby/runtime/builtin/IRubyObject;
6: aload 0
aload 3
putfield org.jruby.util.io.SelectExecutor.except:Lorg/jruby/runtime/builtin/IRubyObject;
7: aload 0
aload 4
putfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
8: aload 0
aload 1
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
putfield org.jruby.util.io.SelectExecutor.runtime:Lorg/jruby/Ruby;
9: return
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 Lorg/jruby/util/io/SelectExecutor;
0 10 1 read Lorg/jruby/runtime/builtin/IRubyObject;
0 10 2 write Lorg/jruby/runtime/builtin/IRubyObject;
0 10 3 except Lorg/jruby/runtime/builtin/IRubyObject;
0 10 4 timeout Ljava/lang/Long;
MethodParameters:
Name Flags
read
write
except
timeout
public org.jruby.runtime.builtin.IRubyObject go(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.selectCall:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 4
1: aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.selectEnd:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
pop
2: goto 4
StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext top top org.jruby.runtime.builtin.IRubyObject
StackMap stack: java.io.IOException
3: pop
4: StackMap locals:
StackMap stack:
aload 4
areturn
5: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext
StackMap stack: java.io.IOException
astore 2
start local 2 6: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
athrow
end local 2 7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
8: aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.selectEnd:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
pop
9: goto 11
StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext top java.lang.Throwable
StackMap stack: java.io.IOException
10: pop
11: StackMap locals:
StackMap stack:
aload 3
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/jruby/util/io/SelectExecutor;
0 12 1 context Lorg/jruby/runtime/ThreadContext;
6 7 2 ioe Ljava/io/IOException;
Exception table:
from to target type
1 2 3 Class java.io.IOException
0 1 5 Class java.io.IOException
0 1 7 any
5 7 7 any
8 9 10 Class java.io.IOException
MethodParameters:
Name Flags
context
org.jruby.runtime.builtin.IRubyObject selectCall(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.selectInternal:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/io/SelectExecutor;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
org.jruby.runtime.builtin.IRubyObject selectEnd(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0000)
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
ifnull 14
1: iconst_0
istore 2
start local 2 2: goto 9
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
iload 2
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.nio.channels.Selector
astore 3
start local 3 4: aload 3
invokevirtual java.nio.channels.Selector.provider:()Ljava/nio/channels/spi/SelectorProvider;
invokestatic java.nio.channels.spi.SelectorProvider.provider:()Ljava/nio/channels/spi/SelectorProvider;
if_acmpne 7
5: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getSelectorPool:()Lorg/jruby/util/io/SelectorPool;
aload 3
invokevirtual org.jruby.util.io.SelectorPool.put:(Ljava/nio/channels/Selector;)V
6: goto 8
7: StackMap locals: java.nio.channels.Selector
StackMap stack:
aload 3
invokevirtual java.nio.channels.Selector.close:()V
end local 3 8: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
9: iload 2
aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 3
end local 2 10: aload 0
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 13
StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext top java.util.Iterator
StackMap stack:
11: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.util.io.SelectExecutor$ENXIOSelector
astore 2
start local 2 12: aload 2
invokevirtual org.jruby.util.io.SelectExecutor$ENXIOSelector.cleanup:()V
end local 2 13: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
14: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext
StackMap stack:
aload 1
getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/jruby/util/io/SelectExecutor;
0 15 1 context Lorg/jruby/runtime/ThreadContext;
2 10 2 i I
4 8 3 selector Ljava/nio/channels/Selector;
12 13 2 enxioSelector Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
org.jruby.runtime.builtin.IRubyObject selectInternal(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0000)
Code:
stack=4, locals=15, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
astore 2
start local 2 1: aconst_null
astore 8
start local 8 2: aload 0
getfield org.jruby.util.io.SelectExecutor.read:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
ifne 15
3: aload 0
getfield org.jruby.util.io.SelectExecutor.read:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToArray:()Lorg/jruby/RubyArray;
astore 8
4: lconst_0
lstore 6
start local 6 5: goto 12
6: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top long org.jruby.RubyArray
StackMap stack:
aload 2
aload 8
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 7: aload 0
aload 1
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
aload 8
invokevirtual org.jruby.RubyArray.size:()I
invokevirtual org.jruby.util.io.SelectExecutor.fdSetRead:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;I)V
8: aload 5
invokevirtual org.jruby.util.io.OpenFile.READ_DATA_PENDING:()Z
ifne 9
aload 5
invokevirtual org.jruby.util.io.OpenFile.READ_CHAR_PENDING:()Z
ifeq 11
9: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top org.jruby.util.io.OpenFile long org.jruby.RubyArray
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
ifnonnull 10
aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
10: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
11: StackMap locals:
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top long org.jruby.RubyArray
StackMap stack:
12: lload 6
aload 8
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 6
13: aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
ifnonnull 14
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
ifnull 15
14: StackMap locals:
StackMap stack:
aload 0
lconst_0
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
putfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
end local 6 15: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top top top org.jruby.RubyArray
StackMap stack:
aconst_null
astore 9
start local 9 16: aload 0
getfield org.jruby.util.io.SelectExecutor.write:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
ifne 27
17: aload 0
getfield org.jruby.util.io.SelectExecutor.write:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToArray:()Lorg/jruby/RubyArray;
astore 9
18: lconst_0
lstore 6
start local 6 19: goto 24
20: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top long org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
aload 2
aload 9
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
invokevirtual org.jruby.RubyIO.GetWriteIO:()Lorg/jruby/RubyIO;
astore 10
start local 10 21: aload 10
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 22: aload 0
aload 1
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
aload 9
invokevirtual org.jruby.RubyArray.size:()I
invokevirtual org.jruby.util.io.SelectExecutor.fdSetWrite:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;I)V
end local 10 23: lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals:
StackMap stack:
24: lload 6
aload 9
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 20
25: aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
ifnull 27
26: aload 0
lconst_0
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
putfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
end local 6 27: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top top top org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
aconst_null
astore 10
start local 10 28: aload 0
getfield org.jruby.util.io.SelectExecutor.except:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
ifne 39
29: aload 0
getfield org.jruby.util.io.SelectExecutor.except:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToArray:()Lorg/jruby/RubyArray;
astore 10
30: lconst_0
lstore 6
start local 6 31: goto 38
32: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
aload 2
aload 10
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 11
start local 11 33: aload 11
invokevirtual org.jruby.RubyIO.GetWriteIO:()Lorg/jruby/RubyIO;
astore 12
start local 12 34: aload 11
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 35: aload 11
aload 12
if_acmpeq 37
36: aload 12
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
end local 12 end local 11 37: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
38: lload 6
aload 10
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 32
end local 6 39: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby top top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray
StackMap stack:
aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.threadFdSelect:(Lorg/jruby/runtime/ThreadContext;)I
istore 11
start local 11 40: iload 11
ifne 41
aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
ifnonnull 41
iload 11
ifne 41
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
ifnonnull 41
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
ifnonnull 41
aload 1
getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
areturn
41: StackMap locals: int
StackMap stack:
aload 2
iconst_3
invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;I)Lorg/jruby/RubyArray;
astore 3
start local 3 42: aload 3
aload 2
iload 11
aload 0
invokevirtual org.jruby.util.io.SelectExecutor.maxReadReadySize:()I
invokestatic java.lang.Math.min:(II)I
invokevirtual org.jruby.Ruby.newArray:(I)Lorg/jruby/RubyArray;
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
43: aload 3
aload 2
iload 11
aload 0
invokevirtual org.jruby.util.io.SelectExecutor.maxWriteReadySize:()I
invokestatic java.lang.Math.min:(II)I
invokevirtual org.jruby.Ruby.newArray:(I)Lorg/jruby/RubyArray;
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
44: aload 3
aload 2
iconst_0
invokevirtual org.jruby.Ruby.newArray:(I)Lorg/jruby/RubyArray;
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
45: aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
ifnull 56
46: aload 3
lconst_0
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
checkcast org.jruby.RubyArray
astore 4
start local 4 47: lconst_0
lstore 6
start local 6 48: goto 55
49: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 8
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
start local 12 50: aload 2
aload 12
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 13
start local 13 51: aload 13
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 52: aload 0
aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
bipush 17
invokevirtual org.jruby.util.io.SelectExecutor.fdIsSet:(Ljava/util/List;Lorg/jruby/util/io/ChannelFD;I)Z
ifne 53
aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
ifnull 54
aload 0
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 54
53: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int org.jruby.runtime.builtin.IRubyObject org.jruby.RubyIO
StackMap stack:
aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 13 end local 12 54: StackMap locals:
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
55: lload 6
aload 8
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 49
end local 6 end local 4 56: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
ifnull 67
57: aload 3
lconst_0
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
checkcast org.jruby.RubyArray
astore 4
start local 4 58: lconst_0
lstore 6
start local 6 59: goto 66
60: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 8
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
start local 12 61: aload 2
aload 12
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 13
start local 13 62: aload 13
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 63: aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 65
64: aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 13 end local 12 65: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
66: lload 6
aload 8
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 60
end local 6 end local 4 67: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
ifnull 79
68: aload 3
lconst_1
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
checkcast org.jruby.RubyArray
astore 4
start local 4 69: lconst_0
lstore 6
start local 6 70: goto 78
71: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 9
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
start local 12 72: aload 2
aload 12
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 13
start local 13 73: aload 13
invokevirtual org.jruby.RubyIO.GetWriteIO:()Lorg/jruby/RubyIO;
astore 14
start local 14 74: aload 14
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 75: aload 0
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
bipush 12
invokevirtual org.jruby.util.io.SelectExecutor.fdIsSet:(Ljava/util/List;Lorg/jruby/util/io/ChannelFD;I)Z
ifeq 77
76: aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 14 end local 13 end local 12 77: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
78: lload 6
aload 9
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 71
end local 6 end local 4 79: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
ifnull 90
80: aload 3
lconst_1
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
checkcast org.jruby.RubyArray
astore 4
start local 4 81: lconst_0
lstore 6
start local 6 82: goto 89
83: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 9
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
start local 12 84: aload 2
aload 12
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 13
start local 13 85: aload 13
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 86: aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 88
87: aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 13 end local 12 88: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
89: lload 6
aload 9
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 83
end local 6 end local 4 90: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.errorKeyList:Ljava/util/List;
ifnull 107
91: aload 3
ldc 2
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
checkcast org.jruby.RubyArray
astore 4
start local 4 92: lconst_0
lstore 6
start local 6 93: goto 106
94: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 10
lload 6
invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
start local 12 95: aload 2
aload 12
invokestatic org.jruby.util.TypeConverter.ioGetIO:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyIO;
astore 13
start local 13 96: aload 13
invokevirtual org.jruby.RubyIO.GetWriteIO:()Lorg/jruby/RubyIO;
astore 14
start local 14 97: aload 13
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
start local 5 98: aload 0
getfield org.jruby.util.io.SelectExecutor.errorKeyList:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 101
99: aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
100: goto 105
StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray org.jruby.util.io.OpenFile long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int org.jruby.runtime.builtin.IRubyObject org.jruby.RubyIO org.jruby.RubyIO
StackMap stack:
101: aload 13
aload 14
if_acmpeq 105
102: aload 14
invokevirtual org.jruby.RubyIO.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
astore 5
103: aload 0
getfield org.jruby.util.io.SelectExecutor.errorKeyList:Ljava/util/List;
aload 5
invokevirtual org.jruby.util.io.OpenFile.fd:()Lorg/jruby/util/io/ChannelFD;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 105
104: aload 4
aload 12
invokevirtual org.jruby.RubyArray.push:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 14 end local 13 end local 12 105: StackMap locals:
StackMap stack:
lload 6
lconst_1
ladd
lstore 6
end local 5 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray org.jruby.RubyArray top long org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
106: lload 6
aload 10
invokevirtual org.jruby.RubyArray.size:()I
i2l
lcmp
iflt 94
end local 6 end local 4 107: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top top top top org.jruby.RubyArray org.jruby.RubyArray org.jruby.RubyArray int
StackMap stack:
aload 3
areturn
end local 11 end local 10 end local 9 end local 8 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 108 0 this Lorg/jruby/util/io/SelectExecutor;
0 108 1 context Lorg/jruby/runtime/ThreadContext;
1 108 2 runtime Lorg/jruby/Ruby;
42 108 3 res Lorg/jruby/RubyArray;
47 56 4 list Lorg/jruby/RubyArray;
58 67 4 list Lorg/jruby/RubyArray;
69 79 4 list Lorg/jruby/RubyArray;
81 90 4 list Lorg/jruby/RubyArray;
92 107 4 list Lorg/jruby/RubyArray;
7 12 5 fptr Lorg/jruby/util/io/OpenFile;
22 24 5 fptr Lorg/jruby/util/io/OpenFile;
35 38 5 fptr Lorg/jruby/util/io/OpenFile;
52 55 5 fptr Lorg/jruby/util/io/OpenFile;
63 66 5 fptr Lorg/jruby/util/io/OpenFile;
75 78 5 fptr Lorg/jruby/util/io/OpenFile;
86 89 5 fptr Lorg/jruby/util/io/OpenFile;
98 106 5 fptr Lorg/jruby/util/io/OpenFile;
5 15 6 i J
19 27 6 i J
31 39 6 i J
48 56 6 i J
59 67 6 i J
70 79 6 i J
82 90 6 i J
93 107 6 i J
2 108 8 readAry Lorg/jruby/RubyArray;
16 108 9 writeAry Lorg/jruby/RubyArray;
21 23 10 write_io Lorg/jruby/RubyIO;
28 108 10 exceptAry Lorg/jruby/RubyArray;
33 37 11 io Lorg/jruby/RubyIO;
34 37 12 write_io Lorg/jruby/RubyIO;
40 108 11 n I
50 54 12 obj Lorg/jruby/runtime/builtin/IRubyObject;
51 54 13 io Lorg/jruby/RubyIO;
61 65 12 obj Lorg/jruby/runtime/builtin/IRubyObject;
62 65 13 io Lorg/jruby/RubyIO;
72 77 12 obj Lorg/jruby/runtime/builtin/IRubyObject;
73 77 13 io Lorg/jruby/RubyIO;
74 77 14 write_io Lorg/jruby/RubyIO;
84 88 12 obj Lorg/jruby/runtime/builtin/IRubyObject;
85 88 13 io Lorg/jruby/RubyIO;
95 105 12 obj Lorg/jruby/runtime/builtin/IRubyObject;
96 105 13 io Lorg/jruby/RubyIO;
97 105 14 write_io Lorg/jruby/RubyIO;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
private int maxReadReadySize();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
ifnull 2
iload 1
aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
invokeinterface java.util.List.size:()I
iadd
istore 1
2: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
ifnull 3
iload 1
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
invokeinterface java.util.List.size:()I
iadd
istore 1
3: StackMap locals:
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/util/io/SelectExecutor;
1 4 1 size I
private int maxWriteReadySize();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
ifnull 2
iload 1
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
invokeinterface java.util.List.size:()I
iadd
istore 1
2: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
ifnull 3
iload 1
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
invokeinterface java.util.List.size:()I
iadd
istore 1
3: StackMap locals:
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/util/io/SelectExecutor;
1 4 1 size I
private void fdSetRead(org.jruby.runtime.ThreadContext, org.jruby.util.io.ChannelFD, int);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
ifnonnull 4
1: aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
ifnonnull 2
aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableReadFDs:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
3: return
4: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual org.jruby.util.io.SelectExecutor.trySelectRead:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;)Ljava/nio/channels/SelectionKey;
astore 4
start local 4 5: aload 4
ifnonnull 6
return
6: StackMap locals: java.nio.channels.SelectionKey
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
ifnonnull 7
aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
7: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: return
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 Lorg/jruby/util/io/SelectExecutor;
0 9 1 context Lorg/jruby/runtime/ThreadContext;
0 9 2 fd Lorg/jruby/util/io/ChannelFD;
0 9 3 maxSize I
5 9 4 key Ljava/nio/channels/SelectionKey;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
fd
maxSize
private void fdSetWrite(org.jruby.runtime.ThreadContext, org.jruby.util.io.ChannelFD, int);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
ifnonnull 4
1: aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
ifnonnull 2
aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.unselectableWriteFDs:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
3: return
4: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual org.jruby.util.io.SelectExecutor.trySelectWrite:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;)Ljava/nio/channels/SelectionKey;
astore 4
start local 4 5: aload 4
ifnonnull 6
return
6: StackMap locals: java.nio.channels.SelectionKey
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
ifnonnull 7
aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
7: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: return
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 Lorg/jruby/util/io/SelectExecutor;
0 9 1 context Lorg/jruby/runtime/ThreadContext;
0 9 2 fd Lorg/jruby/util/io/ChannelFD;
0 9 3 maxSize I
5 9 4 key Ljava/nio/channels/SelectionKey;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
fd
maxSize
private boolean fdIsSet(java.util.List<java.nio.channels.SelectionKey>, org.jruby.util.io.ChannelFD, );
descriptor: (Ljava/util/List;Lorg/jruby/util/io/ChannelFD;I)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnonnull 1
iconst_0
ireturn
1: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 4
StackMap locals: org.jruby.util.io.SelectExecutor java.util.List org.jruby.util.io.ChannelFD int top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.channels.SelectionKey
astore 4
start local 4 3: aload 4
invokevirtual java.nio.channels.SelectionKey.isValid:()Z
ifeq 4
aload 4
invokevirtual java.nio.channels.SelectionKey.readyOps:()I
iload 3
iand
ifeq 4
aload 4
invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
checkcast java.util.List
aload 2
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 4
iconst_1
ireturn
end local 4 4: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/util/io/SelectExecutor;
0 6 1 fds Ljava/util/List<Ljava/nio/channels/SelectionKey;>;
0 6 2 fd Lorg/jruby/util/io/ChannelFD;
0 6 3 operations I
3 4 4 key Ljava/nio/channels/SelectionKey;
Signature: (Ljava/util/List<Ljava/nio/channels/SelectionKey;>;Lorg/jruby/util/io/ChannelFD;I)Z
MethodParameters:
Name Flags
fds
fd
operations
private java.nio.channels.SelectionKey trySelectRead(org.jruby.runtime.ThreadContext, org.jruby.util.io.ChannelFD);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;)Ljava/nio/channels/SelectionKey;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
ifnull 2
1: aload 0
aload 1
aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
invokevirtual org.jruby.util.io.SelectExecutor.getSelector:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/channels/SelectableChannel;)Ljava/nio/channels/Selector;
aload 2
aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
bipush 17
invokestatic org.jruby.util.io.SelectExecutor.registerSelect:(Ljava/nio/channels/Selector;Lorg/jruby/util/io/ChannelFD;Ljava/nio/channels/SelectableChannel;I)Ljava/nio/channels/SelectionKey;
areturn
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/util/io/SelectExecutor;
0 3 1 context Lorg/jruby/runtime/ThreadContext;
0 3 2 fd Lorg/jruby/util/io/ChannelFD;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
fd
private java.nio.channels.SelectionKey trySelectWrite(org.jruby.runtime.ThreadContext, org.jruby.util.io.ChannelFD);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/ChannelFD;)Ljava/nio/channels/SelectionKey;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
ifnull 2
1: aload 0
aload 1
aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
invokevirtual org.jruby.util.io.SelectExecutor.getSelector:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/channels/SelectableChannel;)Ljava/nio/channels/Selector;
aload 2
aload 2
getfield org.jruby.util.io.ChannelFD.chSelect:Ljava/nio/channels/SelectableChannel;
bipush 12
invokestatic org.jruby.util.io.SelectExecutor.registerSelect:(Ljava/nio/channels/Selector;Lorg/jruby/util/io/ChannelFD;Ljava/nio/channels/SelectableChannel;I)Ljava/nio/channels/SelectionKey;
areturn
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/util/io/SelectExecutor;
0 3 1 context Lorg/jruby/runtime/ThreadContext;
0 3 2 fd Lorg/jruby/util/io/ChannelFD;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
fd
private java.nio.channels.Selector getSelector(org.jruby.runtime.ThreadContext, java.nio.channels.SelectableChannel);
descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/nio/channels/SelectableChannel;)Ljava/nio/channels/Selector;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
ifnonnull 4
2: aload 0
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
3: goto 12
4: StackMap locals: java.nio.channels.Selector
StackMap stack:
iconst_0
istore 4
start local 4 5: goto 11
6: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.nio.channels.Selector
astore 5
start local 5 7: aload 5
invokevirtual java.nio.channels.Selector.provider:()Ljava/nio/channels/spi/SelectorProvider;
aload 2
invokevirtual java.nio.channels.SelectableChannel.provider:()Ljava/nio/channels/spi/SelectorProvider;
if_acmpne 10
8: aload 5
astore 3
9: goto 12
end local 5 10: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
11: iload 4
aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 6
end local 4 12: StackMap locals:
StackMap stack:
aload 3
ifnonnull 26
13: aload 2
invokevirtual java.nio.channels.SelectableChannel.provider:()Ljava/nio/channels/spi/SelectorProvider;
instanceof jnr.enxio.channels.NativeSelectorProvider
ifeq 22
14: aload 2
invokevirtual java.nio.channels.SelectableChannel.provider:()Ljava/nio/channels/spi/SelectorProvider;
invokevirtual java.nio.channels.spi.SelectorProvider.openSelector:()Ljava/nio/channels/spi/AbstractSelector;
astore 3
15: invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
astore 4
start local 4 16: new org.jruby.util.io.SelectExecutor$ENXIOSelector
dup
aload 3
aload 4
invokespecial org.jruby.util.io.SelectExecutor$ENXIOSelector.<init>:(Ljava/nio/channels/Selector;Ljava/nio/channels/Pipe;)V
astore 5
start local 5 17: aload 0
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 18
aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
18: StackMap locals: java.nio.channels.Pipe org.jruby.util.io.SelectExecutor$ENXIOSelector
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
19: aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
iconst_0
invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
20: aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
aload 0
aload 1
aload 4
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
invokevirtual org.jruby.util.io.SelectExecutor.getSelector:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/channels/SelectableChannel;)Ljava/nio/channels/Selector;
iconst_1
aload 5
invokevirtual java.nio.channels.Pipe$SourceChannel.register:(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;
pop
end local 5 end local 4 21: goto 25
22: StackMap locals:
StackMap stack:
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getSelectorPool:()Lorg/jruby/util/io/SelectorPool;
invokevirtual org.jruby.util.io.SelectorPool.get:()Ljava/nio/channels/Selector;
astore 3
23: aload 0
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
ifnonnull 25
24: aload 0
aload 3
putfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
25: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
26: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/jruby/util/io/SelectExecutor;
0 27 1 context Lorg/jruby/runtime/ThreadContext;
0 27 2 channel Ljava/nio/channels/SelectableChannel;
1 27 3 selector Ljava/nio/channels/Selector;
5 12 4 i I
7 10 5 sel Ljava/nio/channels/Selector;
16 21 4 pipe Ljava/nio/channels/Pipe;
17 21 5 enxioSelector Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
channel
private static java.nio.channels.SelectionKey registerSelect(java.nio.channels.Selector, org.jruby.util.io.ChannelFD, java.nio.channels.SelectableChannel, int);
descriptor: (Ljava/nio/channels/Selector;Lorg/jruby/util/io/ChannelFD;Ljava/nio/channels/SelectableChannel;I)Ljava/nio/channels/SelectionKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
iconst_0
invokevirtual java.nio.channels.SelectableChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
1: aload 2
invokevirtual java.nio.channels.SelectableChannel.validOps:()I
iload 3
iand
istore 4
start local 4 2: aload 2
aload 0
invokevirtual java.nio.channels.SelectableChannel.keyFor:(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;
astore 5
start local 5 3: aload 5
ifnull 8
4: aload 5
aload 5
invokevirtual java.nio.channels.SelectionKey.interestOps:()I
iload 4
ior
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
5: aload 5
invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
checkcast java.util.List
astore 6
start local 6 6: aload 6
aload 1
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 7
aload 6
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
7: StackMap locals: int java.nio.channels.SelectionKey java.util.List
StackMap stack:
aload 5
areturn
end local 6 8: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
astore 6
start local 6 9: aload 6
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
10: aload 2
aload 0
iload 4
aload 6
invokevirtual java.nio.channels.SelectableChannel.register:(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;
areturn
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 11 0 selector Ljava/nio/channels/Selector;
0 11 1 attachment Lorg/jruby/util/io/ChannelFD;
0 11 2 channel Ljava/nio/channels/SelectableChannel;
0 11 3 ops I
2 11 4 real_ops I
3 11 5 key Ljava/nio/channels/SelectionKey;
6 8 6 attachmentSet Ljava/util/List<Lorg/jruby/util/io/ChannelFD;>;
9 11 6 attachmentSet Ljava/util/List<Lorg/jruby/util/io/ChannelFD;>;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
selector
attachment
channel
ops
private int threadFdSelect(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.util.io.SelectExecutor.readKeyList:Ljava/util/List;
ifnonnull 11
aload 0
getfield org.jruby.util.io.SelectExecutor.writeKeyList:Ljava/util/List;
ifnonnull 11
aload 0
getfield org.jruby.util.io.SelectExecutor.errorKeyList:Ljava/util/List;
ifnonnull 11
1: aload 0
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
ifnonnull 6
2: aload 1
invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
lconst_0
invokevirtual org.jruby.RubyThread.sleep:(J)Z
pop
3: goto 5
StackMap locals:
StackMap stack: java.lang.InterruptedException
4: pop
5: StackMap locals:
StackMap stack:
iconst_0
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
lconst_0
lcmp
ifne 7
iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
aload 0
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
invokevirtual org.jruby.RubyThread.sleep:(J)Z
pop
8: goto 10
StackMap locals:
StackMap stack: java.lang.InterruptedException
9: pop
10: StackMap locals:
StackMap stack:
iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.jruby.util.io.SelectExecutor.doSelect:(Lorg/jruby/runtime/ThreadContext;)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/jruby/util/io/SelectExecutor;
0 12 1 context Lorg/jruby/runtime/ThreadContext;
Exception table:
from to target type
2 3 4 Class java.lang.InterruptedException
7 8 9 Class java.lang.InterruptedException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
private int doSelect(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
astore 3
start local 3 1: aload 3
aload 1
aload 0
getstatic org.jruby.util.io.SelectExecutor.SelectTask:Lorg/jruby/RubyThread$Task;
invokevirtual org.jruby.RubyThread.executeTask:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/Object;Lorg/jruby/RubyThread$Task;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 2
start local 2 2: goto 5
end local 2 StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext top org.jruby.RubyThread
StackMap stack: java.lang.InterruptedException
3: pop
4: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.newErrnoEINTRError:()Lorg/jruby/exceptions/RaiseException;
athrow
start local 2 5: StackMap locals: org.jruby.util.io.SelectExecutor org.jruby.runtime.ThreadContext int org.jruby.RubyThread
StackMap stack:
aload 1
invokevirtual org.jruby.runtime.ThreadContext.pollThreadEvents:()V
6: iload 2
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/io/SelectExecutor;
0 7 1 context Lorg/jruby/runtime/ThreadContext;
2 3 2 result I
5 7 2 result I
1 7 3 th Lorg/jruby/RubyThread;
Exception table:
from to target type
1 2 3 Class java.lang.InterruptedException
MethodParameters:
Name Flags
context
}
SourceFile: "SelectExecutor.java"
NestMembers:
org.jruby.util.io.SelectExecutor$1 org.jruby.util.io.SelectExecutor$ENXIOSelector
InnerClasses:
public abstract SourceChannel = java.nio.channels.Pipe$SourceChannel of java.nio.channels.Pipe
public abstract Task = org.jruby.RubyThread$Task of org.jruby.RubyThread
org.jruby.util.io.SelectExecutor$1
private final ENXIOSelector = org.jruby.util.io.SelectExecutor$ENXIOSelector of org.jruby.util.io.SelectExecutor