final class java.util.concurrent.Phaser$QNode implements java.util.concurrent.ForkJoinPool$ManagedBlocker
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.util.concurrent.Phaser$QNode
super_class: java.lang.Object
{
final java.util.concurrent.Phaser phaser;
descriptor: Ljava/util/concurrent/Phaser;
flags: (0x0010) ACC_FINAL
final int phase;
descriptor: I
flags: (0x0010) ACC_FINAL
final boolean interruptible;
descriptor: Z
flags: (0x0010) ACC_FINAL
final boolean timed;
descriptor: Z
flags: (0x0010) ACC_FINAL
boolean wasInterrupted;
descriptor: Z
flags: (0x0000)
long nanos;
descriptor: J
flags: (0x0000)
final long deadline;
descriptor: J
flags: (0x0010) ACC_FINAL
volatile java.lang.Thread thread;
descriptor: Ljava/lang/Thread;
flags: (0x0040) ACC_VOLATILE
java.util.concurrent.Phaser$QNode next;
descriptor: Ljava/util/concurrent/Phaser$QNode;
flags: (0x0000)
void <init>(java.util.concurrent.Phaser, int, boolean, boolean, long);
descriptor: (Ljava/util/concurrent/Phaser;IZZJ)V
flags: (0x0000)
Code:
stack=5, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.util.concurrent.Phaser$QNode.phaser:Ljava/util/concurrent/Phaser;
2: aload 0
iload 2
putfield java.util.concurrent.Phaser$QNode.phase:I
3: aload 0
iload 3
putfield java.util.concurrent.Phaser$QNode.interruptible:Z
4: aload 0
lload 5
putfield java.util.concurrent.Phaser$QNode.nanos:J
5: aload 0
iload 4
putfield java.util.concurrent.Phaser$QNode.timed:Z
6: aload 0
iload 4
ifeq 7
invokestatic java.lang.System.nanoTime:()J
lload 5
ladd
goto 8
StackMap locals: java.util.concurrent.Phaser$QNode java.util.concurrent.Phaser int int int long
StackMap stack: java.util.concurrent.Phaser$QNode
7: lconst_0
StackMap locals: java.util.concurrent.Phaser$QNode java.util.concurrent.Phaser int int int long
StackMap stack: java.util.concurrent.Phaser$QNode long
8: putfield java.util.concurrent.Phaser$QNode.deadline:J
9: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
10: return
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 this Ljava/util/concurrent/Phaser$QNode;
0 11 1 phaser Ljava/util/concurrent/Phaser;
0 11 2 phase I
0 11 3 interruptible Z
0 11 4 timed Z
0 11 5 nanos J
MethodParameters:
Name Flags
phaser
phase
interruptible
timed
nanos
public boolean isReleasable();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
ifnonnull 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser$QNode.phaser:Ljava/util/concurrent/Phaser;
invokevirtual java.util.concurrent.Phaser.getPhase:()I
aload 0
getfield java.util.concurrent.Phaser$QNode.phase:I
if_icmpeq 5
3: aload 0
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
ifeq 7
6: aload 0
iconst_1
putfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
7: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
ifeq 10
aload 0
getfield java.util.concurrent.Phaser$QNode.interruptible:Z
ifeq 10
8: aload 0
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
9: iconst_1
ireturn
10: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser$QNode.timed:Z
ifeq 14
11: aload 0
getfield java.util.concurrent.Phaser$QNode.nanos:J
lconst_0
lcmp
ifle 12
aload 0
aload 0
getfield java.util.concurrent.Phaser$QNode.deadline:J
invokestatic java.lang.System.nanoTime:()J
lsub
dup2_x1
putfield java.util.concurrent.Phaser$QNode.nanos:J
lconst_0
lcmp
ifgt 14
12: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
13: iconst_1
ireturn
14: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Ljava/util/concurrent/Phaser$QNode;
public boolean block();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: goto 4
1: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser$QNode.timed:Z
ifeq 3
2: aload 0
aload 0
getfield java.util.concurrent.Phaser$QNode.nanos:J
invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
goto 4
3: StackMap locals:
StackMap stack:
aload 0
invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.Phaser$QNode.isReleasable:()Z
ifeq 1
5: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/Phaser$QNode;
}
SourceFile: "Phaser.java"
NestHost: java.util.concurrent.Phaser
InnerClasses:
public abstract ManagedBlocker = java.util.concurrent.ForkJoinPool$ManagedBlocker of java.util.concurrent.ForkJoinPool
final QNode = java.util.concurrent.Phaser$QNode of java.util.concurrent.Phaser