class org.jruby.RubyThread$SleepTask2 implements org.jruby.RubyThread$Task<java.lang.Object, java.lang.Long>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.jruby.RubyThread$SleepTask2
super_class: java.lang.Object
{
final java.util.concurrent.Semaphore semaphore;
descriptor: Ljava/util/concurrent/Semaphore;
flags: (0x0010) ACC_FINAL
long millis;
descriptor: J
flags: (0x0000)
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.Semaphore
dup
iconst_1
invokespecial java.util.concurrent.Semaphore.<init>:(I)V
putfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
2: aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
invokevirtual java.util.concurrent.Semaphore.drainPermits:()I
pop
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/RubyThread$SleepTask2;
public java.lang.Long run(org.jruby.runtime.ThreadContext, java.lang.Object);
descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/lang/Object;)Ljava/lang/Long;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: invokestatic java.lang.System.currentTimeMillis:()J
lstore 3
start local 3 1: aload 0
getfield org.jruby.RubyThread$SleepTask2.millis:J
lconst_0
lcmp
ifne 4
2: aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
ldc 9223372036854775807
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.Semaphore.tryAcquire:(JLjava/util/concurrent/TimeUnit;)Z
pop
3: goto 5
4: StackMap locals: long
StackMap stack:
aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
aload 0
getfield org.jruby.RubyThread$SleepTask2.millis:J
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.Semaphore.tryAcquire:(JLjava/util/concurrent/TimeUnit;)Z
pop
5: StackMap locals:
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lload 3
lsub
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 6
6: aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
invokevirtual java.util.concurrent.Semaphore.drainPermits:()I
pop
7: aload 6
areturn
8: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
9: aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
invokevirtual java.util.concurrent.Semaphore.drainPermits:()I
pop
10: aload 5
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/jruby/RubyThread$SleepTask2;
0 11 1 context Lorg/jruby/runtime/ThreadContext;
0 11 2 data Ljava/lang/Object;
1 11 3 start J
Exception table:
from to target type
1 6 8 any
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
context
data
public void wakeup(org.jruby.RubyThread, java.lang.Object);
descriptor: (Lorg/jruby/RubyThread;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.RubyThread$SleepTask2.semaphore:Ljava/util/concurrent/Semaphore;
invokevirtual java.util.concurrent.Semaphore.release:()V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/RubyThread$SleepTask2;
0 2 1 thread Lorg/jruby/RubyThread;
0 2 2 data Ljava/lang/Object;
MethodParameters:
Name Flags
thread
data
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 java.lang.Object
invokevirtual org.jruby.RubyThread$SleepTask2.run:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/Object;)Ljava/lang/Long;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.InterruptedException
}
Signature: Ljava/lang/Object;Lorg/jruby/RubyThread$Task<Ljava/lang/Object;Ljava/lang/Long;>;
SourceFile: "RubyThread.java"
NestHost: org.jruby.RubyThread
InnerClasses:
private SleepTask2 = org.jruby.RubyThread$SleepTask2 of org.jruby.RubyThread
public abstract Task = org.jruby.RubyThread$Task of org.jruby.RubyThread