final class org.jruby.util.io.BlockingIO$IOChannel
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.jruby.util.io.BlockingIO$IOChannel
super_class: java.lang.Object
{
final java.nio.channels.SelectableChannel channel;
descriptor: Ljava/nio/channels/SelectableChannel;
flags: (0x0010) ACC_FINAL
final int ops;
descriptor: I
flags: (0x0010) ACC_FINAL
private final java.lang.Object monitor;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean woken;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean ready;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean interrupted;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
void <init>(java.nio.channels.SelectableChannel, int, java.lang.Object);
descriptor: (Ljava/nio/channels/SelectableChannel;ILjava/lang/Object;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_0
putfield org.jruby.util.io.BlockingIO$IOChannel.woken:Z
2: aload 0
iconst_0
putfield org.jruby.util.io.BlockingIO$IOChannel.ready:Z
3: aload 0
iconst_0
putfield org.jruby.util.io.BlockingIO$IOChannel.interrupted:Z
4: aload 0
aload 1
putfield org.jruby.util.io.BlockingIO$IOChannel.channel:Ljava/nio/channels/SelectableChannel;
5: aload 0
iload 2
putfield org.jruby.util.io.BlockingIO$IOChannel.ops:I
6: aload 0
aload 3
putfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/util/io/BlockingIO$IOChannel;
0 8 1 channel Ljava/nio/channels/SelectableChannel;
0 8 2 ops I
0 8 3 monitor Ljava/lang/Object;
MethodParameters:
Name Flags
channel
ops
monitor
public final void wakeup(boolean);
descriptor: (Z)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
iconst_1
putfield org.jruby.util.io.BlockingIO$IOChannel.woken:Z
2: aload 0
iload 1
putfield org.jruby.util.io.BlockingIO$IOChannel.ready:Z
3: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
4: aload 2
monitorexit
5: goto 8
StackMap locals: org.jruby.util.io.BlockingIO$IOChannel int java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/util/io/BlockingIO$IOChannel;
0 9 1 ready Z
Exception table:
from to target type
1 5 6 any
6 7 6 any
MethodParameters:
Name Flags
ready
public final void interrupt();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
iconst_1
putfield org.jruby.util.io.BlockingIO$IOChannel.woken:Z
2: aload 0
iconst_1
putfield org.jruby.util.io.BlockingIO$IOChannel.interrupted:Z
3: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
4: aload 1
monitorexit
5: goto 8
StackMap locals: org.jruby.util.io.BlockingIO$IOChannel java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 1
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/util/io/BlockingIO$IOChannel;
Exception table:
from to target type
1 5 6 any
6 7 6 any
public final boolean await();
descriptor: ()Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
lconst_0
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual org.jruby.util.io.BlockingIO$IOChannel.await:(JLjava/util/concurrent/TimeUnit;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/io/BlockingIO$IOChannel;
Exceptions:
throws java.lang.InterruptedException
public final boolean await(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
dup
astore 4
monitorenter
1: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.woken:Z
ifne 3
2: aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.monitor:Ljava/lang/Object;
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
lload 1
aload 3
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
invokevirtual java.lang.Object.wait:(J)V
3: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.interrupted:Z
ifeq 5
4: new java.lang.InterruptedException
dup
ldc "Interrupted"
invokespecial java.lang.InterruptedException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.io.BlockingIO$IOChannel.ready:Z
aload 4
monitorexit
6: ireturn
7: StackMap locals:
StackMap stack: java.lang.Throwable
aload 4
monitorexit
8: athrow
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/util/io/BlockingIO$IOChannel;
0 9 1 timeout J
0 9 3 unit Ljava/util/concurrent/TimeUnit;
Exception table:
from to target type
1 6 7 any
7 8 7 any
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
timeout final
unit
}
SourceFile: "BlockingIO.java"
NestHost: org.jruby.util.io.BlockingIO
InnerClasses:
final IOChannel = org.jruby.util.io.BlockingIO$IOChannel of org.jruby.util.io.BlockingIO