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 sun.misc.Unsafe UNSAFE;
descriptor: Lsun/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long stateOffset;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, 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 sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
putstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
5: ldc Ljava/util/concurrent/Phaser;
astore 0
start local 0 6: getstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
7: aload 0
ldc "state"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
8: invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic java.util.concurrent.Phaser.stateOffset:J
end local 0 9: goto 12
StackMap locals:
StackMap stack: java.lang.Exception
10: astore 0
start local 0 11: new java.lang.Error
dup
aload 0
invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 12: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
6 9 0 k Ljava/lang/Class<*>;
11 12 0 e Ljava/lang/Exception;
Exception table:
from to target type
4 9 10 Class java.lang.Exception
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.util.concurrent.atomic.AtomicReference<java.util.concurrent.Phaser$QNode> queueFor(int);
descriptor: (I)Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, 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: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/Phaser;
0 3 1 phase I
Signature: (I)Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
MethodParameters:
Name Flags
phase
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=10, 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.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 3
lload 3
iload 1
i2l
lsub
dup2
lstore 3
invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
ifeq 1
14: iload 7
iconst_1
if_icmpne 35
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.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 3
lload 8
invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
pop
26: aload 0
iload 5
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
end local 11 27: goto 35
28: StackMap locals:
StackMap stack:
iload 10
ifne 34
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.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
31: lload 3
lload 3
lconst_1
lor
32: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
pop
33: goto 35
34: 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 35: 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 36 0 this Ljava/util/concurrent/Phaser;
0 36 1 adjust I
1 36 2 root Ljava/util/concurrent/Phaser;
4 36 3 s J
5 36 5 phase I
8 36 6 counts I
11 36 7 unarrived I
16 35 8 n J
17 35 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=10, 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 45
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 22
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.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
18: lload 6
lload 6
lload 2
ladd
19: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
20: ifeq 2
21: goto 45
22: StackMap locals:
StackMap stack:
aload 4
ifnonnull 26
23: iload 5
i2l
bipush 32
lshl
lload 2
lor
lstore 11
start local 11 24: getstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 6
lload 11
invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
ifeq 2
25: goto 45
end local 11 26: StackMap locals:
StackMap stack:
aload 0
dup
astore 11
monitorenter
27: aload 0
getfield java.util.concurrent.Phaser.state:J
lload 6
lcmp
ifne 41
28: aload 4
iconst_1
invokevirtual java.util.concurrent.Phaser.doRegister:(I)I
istore 5
29: iload 5
ifge 34
30: aload 11
monitorexit
31: goto 45
32: StackMap locals: java.util.concurrent.Phaser
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
lstore 6
33: 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
34: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
35: aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 6
36: iload 5
i2l
bipush 32
lshl
lload 2
lor
37: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
38: ifeq 32
39: aload 11
monitorexit
40: goto 45
41: StackMap locals:
StackMap stack:
aload 11
monitorexit
42: goto 2
StackMap locals:
StackMap stack: java.lang.Throwable
43: aload 11
monitorexit
44: athrow
end local 10 end local 9 end local 8 end local 6 45: 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 46 0 this Ljava/util/concurrent/Phaser;
0 46 1 registrations I
1 46 2 adjust J
2 46 4 parent Ljava/util/concurrent/Phaser;
11 46 5 phase I
5 45 6 s J
6 45 8 counts I
7 45 9 parties I
8 45 10 unarrived I
24 26 11 next J
Exception table:
from to target type
27 31 43 any
32 40 43 any
41 42 43 any
43 44 43 any
MethodParameters:
Name Flags
registrations
private long reconcileState();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=12, 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.UNSAFE:Lsun/misc/Unsafe;
9: aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
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: sun.misc.Unsafe java.util.concurrent.Phaser long 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: sun.misc.Unsafe java.util.concurrent.Phaser long 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: sun.misc.Unsafe java.util.concurrent.Phaser long long long long
lor
dup2
lstore 2
16: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)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=10, 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.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 2
14: lload 2
lconst_1
lsub
dup2
lstore 2
15: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
16: ifeq 1
17: iload 6
iconst_1
if_icmple 19
18: aload 1
iload 4
aconst_null
invokevirtual java.util.concurrent.Phaser.internalAwaitAdvance:(ILjava/util/concurrent/Phaser$QNode;)I
ireturn
19: StackMap locals:
StackMap stack:
aload 1
aload 0
if_acmpeq 21
20: aload 0
getfield java.util.concurrent.Phaser.parent:Ljava/util/concurrent/Phaser;
invokevirtual java.util.concurrent.Phaser.arriveAndAwaitAdvance:()I
ireturn
21: StackMap locals:
StackMap stack:
lload 2
ldc 4294901760
land
lstore 7
start local 7 22: lload 7
l2i
bipush 16
iushr
istore 9
start local 9 23: aload 0
iload 4
iload 9
invokevirtual java.util.concurrent.Phaser.onAdvance:(II)Z
ifeq 25
24: lload 7
ldc -9223372036854775808
lor
lstore 7
goto 28
25: StackMap locals: long int
StackMap stack:
iload 9
ifne 27
26: lload 7
lconst_1
lor
lstore 7
goto 28
27: StackMap locals:
StackMap stack:
lload 7
iload 9
i2l
lor
lstore 7
28: StackMap locals:
StackMap stack:
iload 4
iconst_1
iadd
ldc 2147483647
iand
istore 10
start local 10 29: lload 7
iload 10
i2l
bipush 32
lshl
lor
lstore 7
30: getstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.Phaser.stateOffset:J
lload 2
lload 7
invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
ifne 32
31: aload 0
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
ireturn
32: StackMap locals: int
StackMap stack:
aload 0
iload 4
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
33: 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 34 0 this Ljava/util/concurrent/Phaser;
1 34 1 root Ljava/util/concurrent/Phaser;
4 34 2 s J
5 34 4 phase I
8 34 5 counts I
11 34 6 unarrived I
22 34 7 n J
23 34 9 nextUnarrived I
29 34 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=10, 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 9
start local 2 2: StackMap locals: java.util.concurrent.Phaser long
StackMap stack:
getstatic java.util.concurrent.Phaser.UNSAFE:Lsun/misc/Unsafe;
aload 1
getstatic java.util.concurrent.Phaser.stateOffset:J
3: lload 2
lload 2
ldc -9223372036854775808
lor
4: invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
5: ifeq 9
6: aload 0
iconst_0
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
7: aload 0
iconst_1
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
8: return
end local 2 9: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.Phaser.state:J
dup2
lstore 2
start local 2 10: lconst_0
lcmp
ifge 2
11: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/Phaser;
1 12 1 root Ljava/util/concurrent/Phaser;
2 9 2 s J
10 12 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 30
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 15
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 30
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
end local 10 end local 9 14: goto 30
15: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.concurrent.Phaser$QNode.isReleasable:()Z
ifeq 17
16: goto 33
17: StackMap locals:
StackMap stack:
iload 3
ifne 26
18: iload 1
iconst_1
iand
ifne 19
aload 0
getfield java.util.concurrent.Phaser.evenQ:Ljava/util/concurrent/atomic/AtomicReference;
goto 20
StackMap locals:
StackMap stack:
19: aload 0
getfield java.util.concurrent.Phaser.oddQ:Ljava/util/concurrent/atomic/AtomicReference;
StackMap locals:
StackMap stack: java.util.concurrent.atomic.AtomicReference
20: astore 9
start local 9 21: 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 22: aload 10
ifnull 23
aload 10
getfield java.util.concurrent.Phaser$QNode.phase:I
iload 1
if_icmpne 30
23: 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 30
24: 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 25: goto 30
26: StackMap locals:
StackMap stack:
aload 2
invokestatic java.util.concurrent.ForkJoinPool.managedBlock:(Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V
27: goto 30
StackMap locals:
StackMap stack: java.lang.InterruptedException
28: pop
29: aload 2
iconst_1
putfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
end local 8 end local 6 30: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.Phaser.state:J
dup2
lstore 6
start local 6 31: bipush 32
lushr
l2i
dup
istore 8
start local 8 32: iload 1
if_icmpeq 5
33: StackMap locals: long int
StackMap stack:
aload 2
ifnull 40
34: aload 2
getfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
ifnull 36
35: aload 2
aconst_null
putfield java.util.concurrent.Phaser$QNode.thread:Ljava/lang/Thread;
36: StackMap locals:
StackMap stack:
aload 2
getfield java.util.concurrent.Phaser$QNode.wasInterrupted:Z
ifeq 38
aload 2
getfield java.util.concurrent.Phaser$QNode.interruptible:Z
ifne 38
37: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
38: StackMap locals:
StackMap stack:
iload 8
iload 1
if_icmpne 40
aload 0
getfield java.util.concurrent.Phaser.state:J
bipush 32
lushr
l2i
dup
istore 8
iload 1
if_icmpne 40
39: aload 0
iload 1
invokevirtual java.util.concurrent.Phaser.abortWait:(I)I
ireturn
40: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual java.util.concurrent.Phaser.releaseWaiters:(I)V
41: 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 42 0 this Ljava/util/concurrent/Phaser;
0 42 1 phase I
0 42 2 node Ljava/util/concurrent/Phaser$QNode;
2 42 3 queued Z
3 42 4 lastUnarrived I
4 42 5 spins I
5 30 6 s J
31 42 6 s J
5 30 8 p I
32 42 8 p I
7 14 9 unarrived I
11 14 10 interrupted Z
21 25 9 head Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/Phaser$QNode;>;
22 25 10 q Ljava/util/concurrent/Phaser$QNode;
Exception table:
from to target type
26 27 28 Class java.lang.InterruptedException
MethodParameters:
Name Flags
phase
node
}
SourceFile: "Phaser.java"
NestMembers:
java.util.concurrent.Phaser$QNode
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