class org.jruby.util.io.SelectExecutor$1 implements org.jruby.RubyThread$Task<org.jruby.util.io.SelectExecutor, java.lang.Integer>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.jruby.util.io.SelectExecutor$1
super_class: java.lang.Object
{
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/io/SelectExecutor$1;
public java.lang.Integer run(org.jruby.runtime.ThreadContext, org.jruby.util.io.SelectExecutor);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/SelectExecutor;)Ljava/lang/Integer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: aload 2
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
ifnull 45
2: aload 2
getfield org.jruby.util.io.SelectExecutor.pendingReadFDs:Ljava/util/List;
ifnonnull 39
3: aload 2
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
ifnull 11
aload 2
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
lconst_0
lcmp
ifne 11
4: iconst_0
istore 4
start local 4 5: goto 9
6: StackMap locals: int int
StackMap stack:
aload 2
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: iload 3
aload 5
invokevirtual java.nio.channels.Selector.selectNow:()I
iadd
istore 3
end local 5 8: iinc 4 1
StackMap locals:
StackMap stack:
9: iload 4
aload 2
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 6
end local 4 10: goto 45
11: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 4
start local 4 12: iconst_0
istore 5
start local 5 13: goto 17
14: StackMap locals: java.util.List int
StackMap stack:
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
iload 5
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.util.io.SelectExecutor$ENXIOSelector
astore 6
start local 6 15: aload 4
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getExecutor:()Ljava/util/concurrent/ExecutorService;
aload 6
invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 6 16: iinc 5 1
StackMap locals:
StackMap stack:
17: iload 5
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 14
end local 5 18: iload 3
aload 2
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
aload 2
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
ifnonnull 19
lconst_0
goto 20
StackMap locals: org.jruby.util.io.SelectExecutor$1 org.jruby.runtime.ThreadContext org.jruby.util.io.SelectExecutor int java.util.List
StackMap stack: int java.nio.channels.Selector
19: aload 2
getfield org.jruby.util.io.SelectExecutor.timeout:Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
StackMap locals: org.jruby.util.io.SelectExecutor$1 org.jruby.runtime.ThreadContext org.jruby.util.io.SelectExecutor int java.util.List
StackMap stack: int java.nio.channels.Selector long
20: invokevirtual java.nio.channels.Selector.select:(J)I
iadd
istore 3
21: iconst_0
istore 5
start local 5 22: goto 26
23: StackMap locals: int
StackMap stack:
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
iload 5
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.util.io.SelectExecutor$ENXIOSelector
astore 6
start local 6 24: aload 6
getfield org.jruby.util.io.SelectExecutor$ENXIOSelector.selector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
end local 6 25: iinc 5 1
StackMap locals:
StackMap stack:
26: iload 5
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 23
end local 5 27: iconst_0
istore 5
start local 5 28: goto 37
29: StackMap locals:
StackMap stack:
aload 4
iload 5
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.util.concurrent.Future
astore 6
start local 6 30: aload 6
invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
pop
end local 6 31: goto 36
StackMap locals:
StackMap stack: java.lang.InterruptedException
32: pop
goto 36
33: StackMap locals:
StackMap stack: java.util.concurrent.ExecutionException
astore 6
start local 6 34: aload 6
invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
instanceof java.io.IOException
ifeq 36
35: aload 6
invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
checkcast java.io.IOException
athrow
end local 6 36: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
37: iload 5
aload 4
invokeinterface java.util.List.size:()I
if_icmplt 29
end local 5 end local 4 38: goto 45
39: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 40: goto 44
41: StackMap locals: int
StackMap stack:
aload 2
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 42: iload 3
aload 5
invokevirtual java.nio.channels.Selector.selectNow:()I
iadd
istore 3
end local 5 43: iinc 4 1
StackMap locals:
StackMap stack:
44: iload 4
aload 2
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 41
end local 4 45: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 46: goto 55
47: StackMap locals: int
StackMap stack:
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.util.io.SelectExecutor$ENXIOSelector
astore 5
start local 5 48: aload 5
getfield org.jruby.util.io.SelectExecutor$ENXIOSelector.pipe:Ljava/nio/channels/Pipe;
invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
astore 6
start local 6 49: aload 6
aload 2
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Pipe$SourceChannel.keyFor:(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;
astore 7
start local 7 50: aload 7
ifnull 54
aload 2
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
aload 7
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 54
51: aload 2
getfield org.jruby.util.io.SelectExecutor.mainSelector:Ljava/nio/channels/Selector;
invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
aload 7
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
52: iconst_1
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
astore 8
start local 8 53: aload 6
aload 8
invokevirtual java.nio.channels.Pipe$SourceChannel.read:(Ljava/nio/ByteBuffer;)I
pop
end local 8 end local 7 end local 6 end local 5 54: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
55: iload 4
aload 2
getfield org.jruby.util.io.SelectExecutor.enxioSelectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 47
end local 4 56: goto 59
StackMap locals: org.jruby.util.io.SelectExecutor$1 org.jruby.runtime.ThreadContext org.jruby.util.io.SelectExecutor int
StackMap stack: java.io.IOException
57: astore 4
start local 4 58: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 4
invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
athrow
end local 4 59: StackMap locals:
StackMap stack:
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 60 0 this Lorg/jruby/util/io/SelectExecutor$1;
0 60 1 context Lorg/jruby/runtime/ThreadContext;
0 60 2 s Lorg/jruby/util/io/SelectExecutor;
1 60 3 ready I
5 10 4 i I
7 8 5 selector Ljava/nio/channels/Selector;
12 38 4 futures Ljava/util/List<Ljava/util/concurrent/Future;>;
13 18 5 i I
15 16 6 enxioSelector Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;
22 27 5 i I
24 25 6 enxioSelector Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;
28 38 5 i I
30 31 6 f Ljava/util/concurrent/Future;
34 36 6 eex Ljava/util/concurrent/ExecutionException;
40 45 4 i I
42 43 5 selector Ljava/nio/channels/Selector;
46 56 4 i I
48 54 5 enxioSelector Lorg/jruby/util/io/SelectExecutor$ENXIOSelector;
49 54 6 source Ljava/nio/channels/Pipe$SourceChannel;
50 54 7 key Ljava/nio/channels/SelectionKey;
53 54 8 buf Ljava/nio/ByteBuffer;
58 59 4 ioe Ljava/io/IOException;
Exception table:
from to target type
29 31 32 Class java.lang.InterruptedException
29 31 33 Class java.util.concurrent.ExecutionException
1 56 57 Class java.io.IOException
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
context
s
public void wakeup(org.jruby.RubyThread, org.jruby.util.io.SelectExecutor);
descriptor: (Lorg/jruby/RubyThread;Lorg/jruby/util/io/SelectExecutor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.jruby.RubyThread.getNativeThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
1: iconst_0
istore 3
start local 3 2: goto 6
3: StackMap locals: int
StackMap stack:
aload 2
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
iload 3
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.nio.channels.Selector
astore 4
start local 4 4: aload 4
invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
pop
end local 4 5: iinc 3 1
StackMap locals:
StackMap stack:
6: iload 3
aload 2
getfield org.jruby.util.io.SelectExecutor.selectors:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 3
end local 3 7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/util/io/SelectExecutor$1;
0 8 1 thread Lorg/jruby/RubyThread;
0 8 2 selectExecutor Lorg/jruby/util/io/SelectExecutor;
2 7 3 i I
4 5 4 selector Ljava/nio/channels/Selector;
MethodParameters:
Name Flags
thread
selectExecutor
public java.lang.Object run(org.jruby.runtime.ThreadContext, java.lang.Object);
descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
checkcast org.jruby.util.io.SelectExecutor
invokevirtual org.jruby.util.io.SelectExecutor$1.run:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/SelectExecutor;)Ljava/lang/Integer;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.InterruptedException
public void wakeup(org.jruby.RubyThread, java.lang.Object);
descriptor: (Lorg/jruby/RubyThread;Ljava/lang/Object;)V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
checkcast org.jruby.util.io.SelectExecutor
invokevirtual org.jruby.util.io.SelectExecutor$1.wakeup:(Lorg/jruby/RubyThread;Lorg/jruby/util/io/SelectExecutor;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Lorg/jruby/RubyThread$Task<Lorg/jruby/util/io/SelectExecutor;Ljava/lang/Integer;>;
SourceFile: "SelectExecutor.java"
EnclosingMethod: org.jruby.util.io.SelectExecutor
NestHost: org.jruby.util.io.SelectExecutor
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