public class java.util.concurrent.Phaser
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.util.concurrent.Phaser
super_class: java.lang.Object
{
private volatile long state;
descriptor: J
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final int MAX_PARTIES;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65535
private static final int MAX_PHASE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2147483647
private static final int PARTIES_SHIFT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
private static final int PHASE_SHIFT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 32
private static final int UNARRIVED_MASK;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65535
private static final long PARTIES_MASK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294901760
private static final long COUNTS_MASK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294967295
private static final long TERMINATION_BIT;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -9223372036854775808
private static final int ONE_ARRIVAL;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int ONE_PARTY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65536
private static final int ONE_DEREGISTER;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65537
private static final int EMPTY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private final java.util.concurrent.Phaser parent;
descriptor: Ljava/util/concurrent/Phaser;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.Phaser root;
descriptor: Ljava/util/concurrent/Phaser;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.Phaser$QNode> evenQ;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
private final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.Phaser$QNode> oddQ;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
private static final int NCPU;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final int SPINS_PER_ARRIVAL;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.VarHandle STATE;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
putstatic java.util.concurrent.Phaser.NCPU:I
1: getstatic java.util.concurrent.Phaser.NCPU:I
iconst_2
if_icmpge 2
iconst_1
goto 3
StackMap locals:
StackMap stack:
2: sipush 256
StackMap locals:
StackMap stack: int
3: putstatic java.util.concurrent.Phaser.SPINS_PER_ARRIVAL:I
4: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
astore 0
start local 0 5: aload 0
ldc Ljava/util/concurrent/Phaser;
ldc "state"
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
invokevirtual java.lang.invoke.MethodHandles$Lookup.findVarHandle:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
putstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
end local 0 6: goto 9
StackMap locals:
StackMap stack: java.lang.ReflectiveOperationException
7: astore 0
start local 0 8: new java.lang.ExceptionInInitializerError
dup
aload 0
invokespecial java.lang.ExceptionInInitializerError.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 9: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
5 6 0 l Ljava/lang/invoke/MethodHandles$Lookup;
8 9 0 e Ljava/lang/ReflectiveOperationException;
Exception table:
from to target type
4 6 7 Class java.lang.ReflectiveOperationException
private static int unarrivedOf(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: lload 0
l2i
istore 2
start local 2 1: iload 2
iconst_1
if_icmpne 2
iconst_0
goto 3
StackMap locals: int
StackMap stack:
2: iload 2
ldc 65535
iand
StackMap locals:
StackMap stack: int
3: ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 s J
1 4 2 counts I
MethodParameters:
Name Flags
s
private static int partiesOf(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: lload 0
l2i
bipush 16
iushr
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 s J
MethodParameters:
Name Flags
s
private static int phaseOf(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: lload 0
bipush 32
lushr
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 s J
MethodParameters:
Name Flags
s
private static int arrivedOf(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: lload 0
l2i
istore 2
start local 2 1: iload 2
iconst_1
if_icmpne 2
iconst_0
goto 3
2: StackMap locals: int
StackMap stack:
iload 2
bipush 16
iushr
iload 2
ldc 65535
iand
isub
3: StackMap locals:
StackMap stack: int
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 s J
1 4 2 counts I
MethodParameters:
Name Flags
s
private java.lang.String badArrive(long);
descriptor: (J)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
ldc "Attempted arrival of unregistered party for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: aload 0
lload 1
invokevirtual java.util.concurrent.Phaser.stateToString:(J)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/Phaser;
0 3 1 s J
MethodParameters:
Name Flags
s
private java.lang.String badRegister(long);
descriptor: (J)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
ldc "Attempt to register more than 65535 parties for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: aload 0
lload 1
invokevirtual java.util.concurrent.Phaser.stateToString:(J)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/Phaser;
0 3 1 s J
MethodParameters:
Name Flags
s
private int doArrive(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 2
start local 2 1: StackMap locals: java.util.concurrent.Phaser
StackMap stack:
aload 2
aload 0
if_acmpne 2
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 3
StackMap locals:
StackMap stack:
2: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
3: lstore 3
start local 3 4: lload 3
bipush 32
lushr
l2i
istore 5
start local 5 5: iload 5
ifge 7
6: iload 5
ireturn
7: StackMap locals: long int
StackMap stack:
lload 3
l2i
istore 6
start local 6 8: iload 6
iconst_1
if_icmpne 9
iconst_0
goto 10
StackMap locals: int
StackMap stack:
9: iload 6
ldc 65535
iand
StackMap locals:
StackMap stack: int
10: istore 7
start local 7 11: iload 7
ifgt 13
12: new java.lang.IllegalStateException
dup
aload 0
lload 3
invokevirtual java.util.concurrent.Phaser.badArrive:(J)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: int
StackMap stack:
getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 3
lload 3
iload 1
i2l
lsub
dup2
lstore 3
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifeq 1
14: iload 7
iconst_1
if_icmpne 33
15: lload 3
ldc 4294901760
land
lstore 8
start local 8 16: lload 8
l2i
bipush 16
iushr
istore 10
start local 10 17: aload 2
aload 0
if_acmpne 28
18: aload 0
iload 5
iload 10
invokevirtual java.util.concurrent.Phaser.onAdvance:(II)Z
ifeq 20
19: lload 8
ldc -9223372036854775808
lor
lstore 8
goto 23
20: StackMap locals: long int
StackMap stack:
iload 10
ifne 22
21: lload 8
lconst_1
lor
lstore 8
goto 23
22: StackMap locals:
StackMap stack:
lload 8
iload 10
i2l
lor
lstore 8
23: StackMap locals:
StackMap stack:
iload 5
iconst_1
iadd
ldc 2147483647
iand
istore 11
start local 11 24: lload 8
iload 11
i2l
bipush 32
lshl
lor
lstore 8
25: getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 3
lload 8
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)V
26: aload 0
iload 5
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
end local 11 27: goto 33
28: StackMap locals:
StackMap stack:
iload 10
ifne 32
29: aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
ldc 65537
invokevirtual java.util.concurrent.Phaser.doArrive:(I)I
istore 5
30: getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 3
lload 3
lconst_1
lor
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)V
31: goto 33
32: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
iconst_1
invokevirtual java.util.concurrent.Phaser.doArrive:(I)I
istore 5
end local 10 end local 8 33: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Ljava/util/concurrent/Phaser;
0 34 1 adjust I
1 34 2 root Ljava/util/concurrent/Phaser;
4 34 3 s J
5 34 5 phase I
8 34 6 counts I
11 34 7 unarrived I
16 33 8 n J
17 33 10 nextUnarrived I
24 27 11 nextPhase I
MethodParameters:
Name Flags
adjust
private int doRegister(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=13, args_size=2
start local 0 start local 1 0: iload 1
i2l
bipush 16
lshl
iload 1
i2l
lor
lstore 2
start local 2 1: aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
astore 4
start local 4 2: StackMap locals: long java.util.concurrent.Phaser
StackMap stack:
aload 4
ifnonnull 3
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 4
StackMap locals:
StackMap stack:
3: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
4: lstore 6
start local 6 5: lload 6
l2i
istore 8
start local 8 6: iload 8
bipush 16
iushr
istore 9
start local 9 7: iload 8
ldc 65535
iand
istore 10
start local 10 8: iload 1
ldc 65535
iload 9
isub
if_icmple 10
9: new java.lang.IllegalStateException
dup
aload 0
lload 6
invokevirtual java.util.concurrent.Phaser.badRegister:(J)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: java.util.concurrent.Phaser int long java.util.concurrent.Phaser top long int int int
StackMap stack:
lload 6
bipush 32
lushr
l2i
istore 5
start local 5 11: iload 5
ifge 13
12: goto 42
13: StackMap locals: java.util.concurrent.Phaser int long java.util.concurrent.Phaser int long int int int
StackMap stack:
iload 8
iconst_1
if_icmpeq 19
14: aload 4
ifnull 15
aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
lload 6
lcmp
ifne 2
15: StackMap locals:
StackMap stack:
iload 10
ifne 17
16: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
iload 5
aconst_null
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
pop
goto 2
17: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 6
lload 6
lload 2
ladd
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifeq 2
18: goto 42
19: StackMap locals:
StackMap stack:
aload 4
ifnonnull 23
20: iload 5
i2l
bipush 32
lshl
lload 2
lor
lstore 11
start local 11 21: getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 6
lload 11
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifeq 2
22: goto 42
end local 11 23: StackMap locals:
StackMap stack:
aload 0
dup
astore 11
monitorenter
24: aload 0
getfield java.util.concurrent.Phaser.state:J
lload 6
lcmp
ifne 38
25: aload 4
iconst_1
invokevirtual java.util.concurrent.Phaser.doRegister:(I)I
istore 5
26: iload 5
ifge 31
27: aload 11
monitorexit
28: goto 42
29: StackMap locals: java.util.concurrent.Phaser
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
lstore 6
30: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
istore 5
31: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
32: aload 0
lload 6
33: iload 5
i2l
bipush 32
lshl
lload 2
lor
34: invokevirtual java.lang.invoke.VarHandle.weakCompareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
35: ifeq 29
36: aload 11
monitorexit
37: goto 42
38: StackMap locals:
StackMap stack:
aload 11
monitorexit
39: goto 2
StackMap locals:
StackMap stack: java.lang.Throwable
40: aload 11
monitorexit
41: athrow
end local 10 end local 9 end local 8 end local 6 42: StackMap locals: java.util.concurrent.Phaser int long java.util.concurrent.Phaser int
StackMap stack:
iload 5
ireturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 this Ljava/util/concurrent/Phaser;
0 43 1 registrations I
1 43 2 adjust J
2 43 4 parent Ljava/util/concurrent/Phaser;
11 43 5 phase I
5 42 6 s J
6 42 8 counts I
7 42 9 parties I
8 42 10 unarrived I
21 23 11 next J
Exception table:
from to target type
24 28 40 any
29 37 40 any
38 39 40 any
40 41 40 any
MethodParameters:
Name Flags
registrations
private long reconcileState();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=10, locals=6, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 1
start local 1 1: aload 0
getfield java.util.concurrent.Phaser.state:J
lstore 2
start local 2 2: aload 1
aload 0
if_acmpeq 18
3: goto 5
start local 4 4: StackMap locals: java.util.concurrent.Phaser long int
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
lstore 2
end local 4 5: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
dup
istore 4
start local 4 6: lload 2
bipush 32
lushr
l2i
7: if_icmpeq 18
8: getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
9: aload 0
lload 2
10: iload 4
i2l
bipush 32
lshl
11: iload 4
ifge 12
lload 2
ldc 4294967295
land
goto 15
12: StackMap locals: java.util.concurrent.Phaser java.util.concurrent.Phaser long int
StackMap stack: java.lang.invoke.VarHandle java.util.concurrent.Phaser long long
lload 2
l2i
bipush 16
iushr
dup
istore 5
start local 5 13: ifne 14
lconst_1
goto 15
14: StackMap locals: java.util.concurrent.Phaser java.util.concurrent.Phaser long int int
StackMap stack: java.lang.invoke.VarHandle java.util.concurrent.Phaser long long
lload 2
ldc 4294901760
land
iload 5
i2l
lor
end local 5 15: StackMap locals: java.util.concurrent.Phaser java.util.concurrent.Phaser long int
StackMap stack: java.lang.invoke.VarHandle java.util.concurrent.Phaser long long long
lor
dup2
lstore 2
16: invokevirtual java.lang.invoke.VarHandle.weakCompareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
17: ifeq 4
end local 4 18: StackMap locals:
StackMap stack:
lload 2
lreturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/util/concurrent/Phaser;
1 19 1 root Ljava/util/concurrent/Phaser;
2 19 2 s J
4 5 4 phase I
6 18 4 phase I
13 15 5 p I
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
iconst_0
invokespecial java.util.concurrent.Phaser.<init>:(Ljava/util/concurrent/Phaser;I)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/Phaser;
public void <init>(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aconst_null
iload 1
invokespecial java.util.concurrent.Phaser.<init>:(Ljava/util/concurrent/Phaser;I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/Phaser;
0 2 1 parties I
MethodParameters:
Name Flags
parties
public void <init>(java.util.concurrent.Phaser);
descriptor: (Ljava/util/concurrent/Phaser;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokespecial java.util.concurrent.Phaser.<init>:(Ljava/util/concurrent/Phaser;I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/Phaser;
0 2 1 parent Ljava/util/concurrent/Phaser;
MethodParameters:
Name Flags
parent
public void <init>(java.util.concurrent.Phaser, int);
descriptor: (Ljava/util/concurrent/Phaser;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: iload 2
bipush 16
iushr
ifeq 3
2: new java.lang.IllegalArgumentException
dup
ldc "Illegal number of parties"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.util.concurrent.Phaser java.util.concurrent.Phaser int
StackMap stack:
iconst_0
istore 3
start local 3 4: aload 0
aload 1
putfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
5: aload 1
ifnull 13
6: aload 1
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 4
start local 4 7: aload 0
aload 4
putfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
8: aload 0
aload 4
getfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
putfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
9: aload 0
aload 4
getfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
putfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
10: iload 2
ifeq 16
11: aload 1
iconst_1
invokevirtual java.util.concurrent.Phaser.doRegister:(I)I
istore 3
end local 4 12: goto 16
13: StackMap locals: int
StackMap stack:
aload 0
aload 0
putfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
14: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
15: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
16: StackMap locals:
StackMap stack:
aload 0
iload 2
ifne 17
lconst_1
goto 22
17: StackMap locals:
StackMap stack: java.util.concurrent.Phaser
iload 3
i2l
bipush 32
lshl
18: iload 2
i2l
bipush 16
lshl
19: lor
20: iload 2
i2l
21: lor
22: StackMap locals: java.util.concurrent.Phaser java.util.concurrent.Phaser int int
StackMap stack: java.util.concurrent.Phaser long
putfield java.util.concurrent.Phaser.state:J
23: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Ljava/util/concurrent/Phaser;
0 24 1 parent Ljava/util/concurrent/Phaser;
0 24 2 parties I
4 24 3 phase I
7 12 4 root Ljava/util/concurrent/Phaser;
MethodParameters:
Name Flags
parent
parties
public int register();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokevirtual java.util.concurrent.Phaser.doRegister:(I)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int bulkRegister(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifge 2
1: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iload 1
ifne 4
3: aload 0
invokevirtual java.util.concurrent.Phaser.getPhase:()I
ireturn
4: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual java.util.concurrent.Phaser.doRegister:(I)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/Phaser;
0 5 1 parties I
MethodParameters:
Name Flags
parties
public int arrive();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokevirtual java.util.concurrent.Phaser.doArrive:(I)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int arriveAndDeregister();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc 65537
invokevirtual java.util.concurrent.Phaser.doArrive:(I)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int arriveAndAwaitAdvance();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=11, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 1
start local 1 1: StackMap locals: java.util.concurrent.Phaser
StackMap stack:
aload 1
aload 0
if_acmpne 2
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 3
StackMap locals:
StackMap stack:
2: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
3: lstore 2
start local 2 4: lload 2
bipush 32
lushr
l2i
istore 4
start local 4 5: iload 4
ifge 7
6: iload 4
ireturn
7: StackMap locals: long int
StackMap stack:
lload 2
l2i
istore 5
start local 5 8: iload 5
iconst_1
if_icmpne 9
iconst_0
goto 10
StackMap locals: int
StackMap stack:
9: iload 5
ldc 65535
iand
StackMap locals:
StackMap stack: int
10: istore 6
start local 6 11: iload 6
ifgt 13
12: new java.lang.IllegalStateException
dup
aload 0
lload 2
invokevirtual java.util.concurrent.Phaser.badArrive:(J)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: int
StackMap stack:
getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 2
lload 2
lconst_1
lsub
dup2
lstore 2
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifeq 1
14: iload 6
iconst_1
if_icmple 16
15: aload 1
iload 4
aconst_null
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
ireturn
16: StackMap locals:
StackMap stack:
aload 1
aload 0
if_acmpeq 18
17: aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
invokevirtual java.util.concurrent.Phaser.arriveAndAwaitAdvance:()I
ireturn
18: StackMap locals:
StackMap stack:
lload 2
ldc 4294901760
land
lstore 7
start local 7 19: lload 7
l2i
bipush 16
iushr
istore 9
start local 9 20: aload 0
iload 4
iload 9
invokevirtual java.util.concurrent.Phaser.onAdvance:(II)Z
ifeq 22
21: lload 7
ldc -9223372036854775808
lor
lstore 7
goto 25
22: StackMap locals: long int
StackMap stack:
iload 9
ifne 24
23: lload 7
lconst_1
lor
lstore 7
goto 25
24: StackMap locals:
StackMap stack:
lload 7
iload 9
i2l
lor
lstore 7
25: StackMap locals:
StackMap stack:
iload 4
iconst_1
iadd
ldc 2147483647
iand
istore 10
start local 10 26: lload 7
iload 10
i2l
bipush 32
lshl
lor
lstore 7
27: getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 0
lload 2
lload 7
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifne 29
28: aload 0
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
ireturn
29: StackMap locals: int
StackMap stack:
aload 0
iload 4
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
30: iload 10
ireturn
end local 10 end local 9 end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Ljava/util/concurrent/Phaser;
1 31 1 root Ljava/util/concurrent/Phaser;
4 31 2 s J
5 31 4 phase I
8 31 5 counts I
11 31 6 unarrived I
19 31 7 n J
20 31 9 nextUnarrived I
26 31 10 nextPhase I
public int awaitAdvance(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 2
start local 2 1: aload 2
aload 0
if_acmpne 2
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 3
StackMap locals: java.util.concurrent.Phaser
StackMap stack:
2: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
3: lstore 3
start local 3 4: lload 3
bipush 32
lushr
l2i
istore 5
start local 5 5: iload 1
ifge 7
6: iload 1
ireturn
7: StackMap locals: long int
StackMap stack:
iload 5
iload 1
if_icmpne 9
8: aload 2
iload 1
aconst_null
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
ireturn
9: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/concurrent/Phaser;
0 10 1 phase I
1 10 2 root Ljava/util/concurrent/Phaser;
4 10 3 s J
5 10 5 p I
MethodParameters:
Name Flags
phase
public int awaitAdvanceInterruptibly(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 2
start local 2 1: aload 2
aload 0
if_acmpne 2
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 3
StackMap locals: java.util.concurrent.Phaser
StackMap stack:
2: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
3: lstore 3
start local 3 4: lload 3
bipush 32
lushr
l2i
istore 5
start local 5 5: iload 1
ifge 7
6: iload 1
ireturn
7: StackMap locals: long int
StackMap stack:
iload 5
iload 1
if_icmpne 12
8: new java.util.concurrent.Phaser$QNode
dup
aload 0
iload 1
iconst_1
iconst_0
lconst_0
invokespecial java.util.concurrent.Phaser$QNode.<init>:(Ljava/util/concurrent/Phaser;IZZJ)V
astore 6
start local 6 9: aload 2
iload 1
aload 6
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
istore 5
10: aload 6
getfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
ifeq 12
11: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
end local 6 12: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/Phaser;
0 13 1 phase I
1 13 2 root Ljava/util/concurrent/Phaser;
4 13 3 s J
5 13 5 p I
9 12 6 node Ljava/util/concurrent/Phaser$QNode;
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
phase
public int awaitAdvanceInterruptibly(int, long, java.util.concurrent.TimeUnit);
descriptor: (IJLjava/util/concurrent/TimeUnit;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 5
start local 5 1: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 7
start local 7 2: aload 7
aload 0
if_acmpne 3
aload 0
getfield java.util.concurrent.Phaser.state:J
goto 4
StackMap locals: long java.util.concurrent.Phaser
StackMap stack:
3: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
StackMap locals:
StackMap stack: long
4: lstore 8
start local 8 5: lload 8
bipush 32
lushr
l2i
istore 10
start local 10 6: iload 1
ifge 8
7: iload 1
ireturn
8: StackMap locals: long int
StackMap stack:
iload 10
iload 1
if_icmpne 15
9: new java.util.concurrent.Phaser$QNode
dup
aload 0
iload 1
iconst_1
iconst_1
lload 5
invokespecial java.util.concurrent.Phaser$QNode.<init>:(Ljava/util/concurrent/Phaser;IZZJ)V
astore 11
start local 11 10: aload 7
iload 1
aload 11
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
istore 10
11: aload 11
getfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
ifeq 13
12: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
13: StackMap locals: java.util.concurrent.Phaser$QNode
StackMap stack:
iload 10
iload 1
if_icmpne 15
14: new java.util.concurrent.TimeoutException
dup
invokespecial java.util.concurrent.TimeoutException.<init>:()V
athrow
end local 11 15: StackMap locals:
StackMap stack:
iload 10
ireturn
end local 10 end local 8 end local 7 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/util/concurrent/Phaser;
0 16 1 phase I
0 16 2 timeout J
0 16 4 unit Ljava/util/concurrent/TimeUnit;
1 16 5 nanos J
2 16 7 root Ljava/util/concurrent/Phaser;
5 16 8 s J
6 16 10 p I
10 15 11 node Ljava/util/concurrent/Phaser$QNode;
Exceptions:
throws java.lang.InterruptedException, java.util.concurrent.TimeoutException
MethodParameters:
Name Flags
phase
timeout
unit
public void forceTermination();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
astore 1
start local 1 1: goto 6
start local 2 2: StackMap locals: java.util.concurrent.Phaser long
StackMap stack:
getstatic java.util.concurrent.Phaser.STATE:Ljava/lang/invoke/VarHandle;
aload 1
lload 2
lload 2
ldc -9223372036854775808
lor
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/Phaser;JJ)Z
ifeq 6
3: aload 0
iconst_0
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
4: aload 0
iconst_1
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
5: return
end local 2 6: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.Phaser.state:J
dup2
lstore 2
start local 2 7: lconst_0
lcmp
ifge 2
8: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/Phaser;
1 9 1 root Ljava/util/concurrent/Phaser;
2 6 2 s J
7 9 2 s J
public final int getPhase();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int getRegisteredParties();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.state:J
invokestatic java.util.concurrent.Phaser.partiesOf:(J)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int getArrivedParties();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
invokestatic java.util.concurrent.Phaser.arrivedOf:(J)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public int getUnarrivedParties();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
invokestatic java.util.concurrent.Phaser.unarrivedOf:(J)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public java.util.concurrent.Phaser getParent();
descriptor: ()Ljava/util/concurrent/Phaser;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public java.util.concurrent.Phaser getRoot();
descriptor: ()Ljava/util/concurrent/Phaser;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
public boolean isTerminated();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
getfield java.util.concurrent.Phaser.state:J
lconst_0
lcmp
ifge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/Phaser;
protected boolean onAdvance(int, int);
descriptor: (II)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/Phaser;
0 2 1 phase I
0 2 2 registeredParties I
MethodParameters:
Name Flags
phase
registeredParties
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
aload 0
invokevirtual java.util.concurrent.Phaser.reconcileState:()J
invokevirtual java.util.concurrent.Phaser.stateToString:(J)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/Phaser;
private java.lang.String stateToString(long);
descriptor: (J)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
aload 0
invokespecial java.lang.Object.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: ldc "[phase = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokestatic java.util.concurrent.Phaser.phaseOf:(J)I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
2: ldc " parties = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokestatic java.util.concurrent.Phaser.partiesOf:(J)I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
3: ldc " arrived = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokestatic java.util.concurrent.Phaser.arrivedOf:(J)I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/Phaser;
0 5 1 s J
MethodParameters:
Name Flags
s
private void releaseWaiters(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: iload 1
iconst_1
iand
ifne 1
aload 0
getfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
StackMap locals:
StackMap stack: java.util.concurrent.atomic.AtomicReference
2: astore 4
start local 4 3: goto 9
start local 2 4: StackMap locals: java.util.concurrent.Phaser int java.util.concurrent.Phaser$QNode top java.util.concurrent.atomic.AtomicReference
StackMap stack:
aload 4
aload 2
aload 2
getfield java.util.concurrent.Phaser$QNode.next:Ljava/util/concurrent/Phaser$QNode;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 9
5: aload 2
getfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
dup
astore 3
start local 3 6: ifnull 9
7: aload 2
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
8: aload 3
invokestatic java.util.concurrent.locks.LockSupport.unpark:(Ljava/lang/Thread;)V
end local 3 end local 2 9: StackMap locals: java.util.concurrent.Phaser int top top java.util.concurrent.atomic.AtomicReference
StackMap stack:
aload 4
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.Phaser$QNode
dup
astore 2
start local 2 10: ifnull 12
11: aload 2
getfield java.util.concurrent.Phaser$QNode.phase:I
aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
if_icmpne 4
12: StackMap locals: java.util.concurrent.Phaser int java.util.concurrent.Phaser$QNode top java.util.concurrent.atomic.AtomicReference
StackMap stack:
return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/Phaser;
0 13 1 phase I
4 9 2 q Ljava/util/concurrent/Phaser$QNode;
10 13 2 q Ljava/util/concurrent/Phaser$QNode;
6 9 3 t Ljava/lang/Thread;
3 13 4 head Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
MethodParameters:
Name Flags
phase
private int abortWait(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: iload 1
iconst_1
iand
ifne 1
aload 0
getfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
StackMap locals:
StackMap stack: java.util.concurrent.atomic.AtomicReference
2: astore 2
start local 2 3: StackMap locals: java.util.concurrent.atomic.AtomicReference
StackMap stack:
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.Phaser$QNode
astore 4
start local 4 4: aload 0
getfield java.util.concurrent.Phaser.root:Ljava/util/concurrent/Phaser;
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
istore 5
start local 5 5: aload 4
ifnull 7
aload 4
getfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
dup
astore 3
start local 3 6: ifnull 8
aload 4
getfield java.util.concurrent.Phaser$QNode.phase:I
iload 5
if_icmpne 8
end local 3 7: StackMap locals: java.util.concurrent.Phaser int java.util.concurrent.atomic.AtomicReference top java.util.concurrent.Phaser$QNode int
StackMap stack:
iload 5
ireturn
start local 3 8: StackMap locals: java.util.concurrent.Phaser int java.util.concurrent.atomic.AtomicReference java.lang.Thread java.util.concurrent.Phaser$QNode int
StackMap stack:
aload 2
aload 4
aload 4
getfield java.util.concurrent.Phaser$QNode.next:Ljava/util/concurrent/Phaser$QNode;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 3
aload 3
ifnull 3
9: aload 4
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
10: aload 3
invokestatic java.util.concurrent.locks.LockSupport.unpark:(Ljava/lang/Thread;)V
end local 5 end local 4 end local 3 11: goto 3
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/Phaser;
0 12 1 phase I
3 12 2 head Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
6 7 3 t Ljava/lang/Thread;
8 11 3 t Ljava/lang/Thread;
4 11 4 q Ljava/util/concurrent/Phaser$QNode;
5 11 5 p I
MethodParameters:
Name Flags
phase
private int internalAwaitAdvance(int, java.util.concurrent.Phaser$QNode);
descriptor: (ILjava/util/concurrent/Phaser$QNode;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
iconst_1
isub
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
1: iconst_0
istore 3
start local 3 2: iconst_0
istore 4
start local 4 3: getstatic java.util.concurrent.Phaser.SPINS_PER_ARRIVAL:I
istore 5
start local 5 4: goto 32
start local 6 start local 8 5: StackMap locals: java.util.concurrent.Phaser int java.util.concurrent.Phaser$QNode int int int long int
StackMap stack:
aload 2
ifnonnull 17
6: lload 6
l2i
ldc 65535
iand
istore 9
start local 9 7: iload 9
iload 4
if_icmpeq 10
8: iload 9
dup
istore 4
getstatic java.util.concurrent.Phaser.NCPU:I
if_icmpge 10
9: iload 5
getstatic java.util.concurrent.Phaser.SPINS_PER_ARRIVAL:I
iadd
istore 5
10: StackMap locals: int
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
istore 10
start local 10 11: iload 10
ifne 12
iinc 5 -1
iload 5
ifge 15
12: StackMap locals: int
StackMap stack:
new java.util.concurrent.Phaser$QNode
dup
aload 0
iload 1
iconst_0
iconst_0
lconst_0
invokespecial java.util.concurrent.Phaser$QNode.<init>:(Ljava/util/concurrent/Phaser;IZZJ)V
astore 2
13: aload 2
iload 10
putfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
14: goto 32
15: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.onSpinWait:()V
end local 10 end local 9 16: goto 32
17: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.concurrent.Phaser$QNode.isReleasable:()Z
ifeq 19
18: goto 35
19: StackMap locals:
StackMap stack:
iload 3
ifne 28
20: iload 1
iconst_1
iand
ifne 21
aload 0
getfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
goto 22
StackMap locals:
StackMap stack:
21: aload 0
getfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
StackMap locals:
StackMap stack: java.util.concurrent.atomic.AtomicReference
22: astore 9
start local 9 23: aload 2
aload 9
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.Phaser$QNode
dup_x1
putfield java.util.concurrent.Phaser$QNode.next:Ljava/util/concurrent/Phaser$QNode;
astore 10
start local 10 24: aload 10
ifnull 25
aload 10
getfield java.util.concurrent.Phaser$QNode.phase:I
iload 1
if_icmpne 32
25: StackMap locals: java.util.concurrent.atomic.AtomicReference java.util.concurrent.Phaser$QNode
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
iload 1
if_icmpne 32
26: aload 9
aload 10
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
istore 3
end local 10 end local 9 27: goto 32
28: StackMap locals:
StackMap stack:
aload 2
invokestatic java.util.concurrent.ForkJoinPool.managedBlock:(Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V
29: goto 32
StackMap locals:
StackMap stack: java.lang.InterruptedException
30: pop
31: aload 2
iconst_1
putfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
end local 8 end local 6 32: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
dup2
lstore 6
start local 6 33: bipush 32
lushr
l2i
dup
istore 8
start local 8 34: iload 1
if_icmpeq 5
35: StackMap locals: long int
StackMap stack:
aload 2
ifnull 42
36: aload 2
getfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
ifnull 38
37: aload 2
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
38: StackMap locals:
StackMap stack:
aload 2
getfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
ifeq 40
aload 2
getfield java.util.concurrent.Phaser$QNode.interruptible:Z
ifne 40
39: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
40: StackMap locals:
StackMap stack:
iload 8
iload 1
if_icmpne 42
aload 0
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
dup
istore 8
iload 1
if_icmpne 42
41: aload 0
iload 1
invokevirtual java.util.concurrent.Phaser.abortWait:(I)I
ireturn
42: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
43: iload 8
ireturn
end local 8 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 44 0 this Ljava/util/concurrent/Phaser;
0 44 1 phase I
0 44 2 node Ljava/util/concurrent/Phaser$QNode;
2 44 3 queued Z
3 44 4 lastUnarrived I
4 44 5 spins I
5 32 6 s J
33 44 6 s J
5 32 8 p I
34 44 8 p I
7 16 9 unarrived I
11 16 10 interrupted Z
23 27 9 head Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
24 27 10 q Ljava/util/concurrent/Phaser$QNode;
Exception table:
from to target type
28 29 30 Class java.lang.InterruptedException
MethodParameters:
Name Flags
phase
node
}
SourceFile: "Phaser.java"
NestMembers:
java.util.concurrent.Phaser$QNode
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
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