final class java.util.concurrent.ForkJoinPool$WorkQueue
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.util.concurrent.ForkJoinPool$WorkQueue
super_class: java.lang.Object
{
volatile int source;
descriptor: I
flags: (0x0040) ACC_VOLATILE
int id;
descriptor: I
flags: (0x0000)
int base;
descriptor: I
flags: (0x0000)
int top;
descriptor: I
flags: (0x0000)
volatile int phase;
descriptor: I
flags: (0x0040) ACC_VOLATILE
int stackPred;
descriptor: I
flags: (0x0000)
int nsteals;
descriptor: I
flags: (0x0000)
java.util.concurrent.ForkJoinTask<?>[] array;
descriptor: [Ljava/util/concurrent/ForkJoinTask;
flags: (0x0000)
Signature: [Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinPool pool;
descriptor: Ljava/util/concurrent/ForkJoinPool;
flags: (0x0010) ACC_FINAL
final java.util.concurrent.ForkJoinWorkerThread owner;
descriptor: Ljava/util/concurrent/ForkJoinWorkerThread;
flags: (0x0010) ACC_FINAL
static final java.lang.invoke.VarHandle PHASE;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.lang.invoke.VarHandle BASE;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.lang.invoke.VarHandle TOP;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x0018) 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.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
astore 0
start local 0 1: aload 0
ldc Ljava/util/concurrent/ForkJoinPool$WorkQueue;
ldc "phase"
getstatic java.lang.Integer.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.ForkJoinPool$WorkQueue.PHASE:Ljava/lang/invoke/VarHandle;
2: aload 0
ldc Ljava/util/concurrent/ForkJoinPool$WorkQueue;
ldc "base"
getstatic java.lang.Integer.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.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
3: aload 0
ldc Ljava/util/concurrent/ForkJoinPool$WorkQueue;
ldc "top"
getstatic java.lang.Integer.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.ForkJoinPool$WorkQueue.TOP:Ljava/lang/invoke/VarHandle;
end local 0 4: goto 7
StackMap locals:
StackMap stack: java.lang.ReflectiveOperationException
5: astore 0
start local 0 6: new java.lang.ExceptionInInitializerError
dup
aload 0
invokespecial java.lang.ExceptionInInitializerError.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 7: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
1 4 0 l Ljava/lang/invoke/MethodHandles$Lookup;
6 7 0 e Ljava/lang/ReflectiveOperationException;
Exception table:
from to target type
0 4 5 Class java.lang.ReflectiveOperationException
void <init>(java.util.concurrent.ForkJoinPool, java.util.concurrent.ForkJoinWorkerThread);
descriptor: (Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/ForkJoinWorkerThread;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.util.concurrent.ForkJoinPool$WorkQueue.pool:Ljava/util/concurrent/ForkJoinPool;
2: aload 0
aload 2
putfield java.util.concurrent.ForkJoinPool$WorkQueue.owner:Ljava/util/concurrent/ForkJoinWorkerThread;
3: aload 0
aload 0
sipush 4096
dup_x1
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
putfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 5 1 pool Ljava/util/concurrent/ForkJoinPool;
0 5 2 owner Ljava/util/concurrent/ForkJoinWorkerThread;
MethodParameters:
Name Flags
pool
owner
final boolean tryLockPhase();
descriptor: ()Z
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=1, args_size=1
start local 0 0: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.PHASE:Ljava/lang/invoke/VarHandle;
aload 0
iconst_0
iconst_1
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;II)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
final void releasePhaseLock();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.PHASE:Ljava/lang/invoke/VarHandle;
aload 0
iconst_0
invokevirtual java.lang.invoke.VarHandle.setRelease:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
final int getPoolIndex();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.id:I
ldc 65535
iand
iconst_1
iushr
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
final int queueSize();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
aload 0
invokevirtual java.lang.invoke.VarHandle.getAcquire:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
isub
istore 1
start local 1 1: iload 1
iflt 2
iconst_0
goto 3
StackMap locals: int
StackMap stack:
2: iload 1
ineg
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 4 1 n I
final boolean isEmpty();
descriptor: ()Z
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=5, args_size=1
start local 0 0: invokestatic java.lang.invoke.VarHandle.acquireFence:()V
1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 4
start local 4 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
isub
dup
istore 2
start local 2 3: ifge 10
4: iload 2
iconst_m1
if_icmpne 9
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 5: ifnull 10
6: aload 1
arraylength
dup
istore 3
start local 3 7: ifeq 10
8: aload 1
iload 3
iconst_1
isub
iload 4
iand
aaload
ifnull 10
end local 3 end local 1 9: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue top int top int
StackMap stack:
iconst_0
ireturn
StackMap locals:
StackMap stack:
10: iconst_1
ireturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
5 9 1 a [Ljava/util/concurrent/ForkJoinTask;
3 11 2 n I
7 9 3 cap I
2 11 4 b I
final void push(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)V
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
istore 3
start local 3 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.pool:Ljava/util/concurrent/ForkJoinPool;
astore 7
start local 7 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 2
start local 2 3: ifnull 16
aload 2
arraylength
dup
istore 5
start local 5 4: ifle 16
5: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 5
iconst_1
isub
dup
istore 6
start local 6 6: iload 3
iand
aload 1
invokevirtual java.lang.invoke.VarHandle.setRelease:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;)V
7: aload 0
iload 3
iconst_1
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
8: iload 3
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
aload 0
invokevirtual java.lang.invoke.VarHandle.getAcquire:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)I
isub
dup
istore 4
start local 4 9: bipush -2
iand
ifne 14
10: aload 7
ifnull 14
11: invokestatic java.lang.invoke.VarHandle.fullFence:()V
12: aload 7
invokevirtual java.util.concurrent.ForkJoinPool.signalWork:()V
13: goto 16
14: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] int int int int java.util.concurrent.ForkJoinPool
StackMap stack:
iload 4
iload 6
if_icmpne 16
15: aload 0
iconst_0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.growArray:(Z)V
end local 6 end local 5 end local 4 16: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] int top top top java.util.concurrent.ForkJoinPool
StackMap stack:
return
end local 7 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 17 1 task Ljava/util/concurrent/ForkJoinTask<*>;
3 17 2 a [Ljava/util/concurrent/ForkJoinTask;
1 17 3 s I
9 16 4 d I
4 16 5 cap I
6 16 6 m I
2 17 7 p Ljava/util/concurrent/ForkJoinPool;
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)V
MethodParameters:
Name Flags
task
final boolean lockedPush(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: iconst_0
istore 3
start local 3 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
istore 4
start local 4 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
istore 5
start local 5 3: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 2
start local 2 4: ifnull 13
aload 2
arraylength
dup
istore 6
start local 6 5: ifle 13
6: aload 2
iload 6
iconst_1
isub
iload 4
iand
aload 1
aastore
7: aload 0
iload 4
iconst_1
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
8: iload 5
iload 4
isub
iload 6
iadd
iconst_1
isub
ifne 10
9: aload 0
iconst_1
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.growArray:(Z)V
goto 13
10: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] int int int int
StackMap stack:
aload 0
iconst_0
putfield java.util.concurrent.ForkJoinPool$WorkQueue.phase:I
11: iload 4
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
isub
bipush -2
iand
ifne 13
12: iconst_1
istore 3
end local 6 13: StackMap locals:
StackMap stack:
iload 3
ireturn
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 14 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 14 1 task Ljava/util/concurrent/ForkJoinTask<*>;
4 14 2 a [Ljava/util/concurrent/ForkJoinTask;
1 14 3 signal Z
2 14 4 s I
3 14 5 b I
5 13 6 cap I
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)Z
MethodParameters:
Name Flags
task
final void growArray(boolean);
descriptor: (Z)V
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=12, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 3
start local 3 2: ifnull 29
aload 3
arraylength
dup
istore 4
start local 4 3: ifle 29
4: iload 4
iconst_1
ishl
dup
istore 5
start local 5 5: ldc 67108864
if_icmpgt 29
6: iload 5
ifle 29
7: iload 5
anewarray java.util.concurrent.ForkJoinTask
astore 2
8: goto 10
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[] java.util.concurrent.ForkJoinTask[] int int
StackMap stack: java.lang.OutOfMemoryError
9: pop
10: StackMap locals:
StackMap stack:
aload 2
ifnull 29
11: iload 4
iconst_1
isub
istore 6
start local 6 12: iload 5
iconst_1
isub
istore 7
start local 7 13: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
istore 8
start local 8 14: iload 6
istore 9
start local 9 15: goto 21
16: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[] java.util.concurrent.ForkJoinTask[] int int int int int int
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 3
iload 8
iload 6
iand
aconst_null
invokevirtual java.lang.invoke.VarHandle.getAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/lang/Void;)Ljava/util/concurrent/ForkJoinTask;
17: astore 10
start local 10 18: aload 10
ifnull 22
19: aload 2
iload 8
iinc 8 -1
iload 7
iand
aload 10
aastore
end local 10 20: iinc 9 -1
StackMap locals:
StackMap stack:
21: iload 9
ifge 16
end local 9 end local 8 22: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
23: invokestatic java.lang.invoke.VarHandle.releaseFence:()V
end local 7 end local 6 end local 5 end local 4 end local 3 24: goto 29
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[]
StackMap stack: java.lang.Throwable
25: astore 11
26: iload 1
ifeq 28
27: aload 0
iconst_0
putfield java.util.concurrent.ForkJoinPool$WorkQueue.phase:I
28: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[] top top top top top top top top java.lang.Throwable
StackMap stack:
aload 11
athrow
29: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[]
StackMap stack:
iload 1
ifeq 31
30: aload 0
iconst_0
putfield java.util.concurrent.ForkJoinPool$WorkQueue.phase:I
31: StackMap locals:
StackMap stack:
aload 2
ifnonnull 33
32: new java.util.concurrent.RejectedExecutionException
dup
ldc "Queue capacity exceeded"
invokespecial java.util.concurrent.RejectedExecutionException.<init>:(Ljava/lang/String;)V
athrow
33: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 34 1 locked Z
1 34 2 newA [Ljava/util/concurrent/ForkJoinTask;
2 24 3 oldA [Ljava/util/concurrent/ForkJoinTask;
3 24 4 oldSize I
5 24 5 newSize I
12 24 6 oldMask I
13 24 7 newMask I
14 22 8 s I
15 22 9 k I
18 20 10 x Ljava/util/concurrent/ForkJoinTask<*>;
Exception table:
from to target type
7 8 9 Class java.lang.OutOfMemoryError
1 25 25 any
MethodParameters:
Name Flags
locked
final java.util.concurrent.ForkJoinTask<?> poll();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=6, args_size=1
start local 0 0: goto 10
start local 1 start local 3 start local 4 1: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int top int java.util.concurrent.ForkJoinTask[]
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 4
iload 3
iconst_1
isub
iload 1
iand
dup
istore 2
start local 2 2: invokevirtual java.lang.invoke.VarHandle.getAcquire:([Ljava/util/concurrent/ForkJoinTask;I)Ljava/util/concurrent/ForkJoinTask;
3: astore 5
start local 5 4: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 1
iinc 1 1
if_icmpne 10
5: aload 5
ifnonnull 7
6: invokestatic java.lang.Thread.yield:()V
goto 10
7: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int int int java.util.concurrent.ForkJoinTask[] java.util.concurrent.ForkJoinTask
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 4
iload 2
aload 5
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;Ljava/lang/Void;)Z
ifeq 10
8: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
aload 0
iload 1
invokevirtual java.lang.invoke.VarHandle.setOpaque:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
9: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 10: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 4
start local 4 11: ifnull 16
aload 4
arraylength
dup
istore 3
start local 3 12: ifle 16
13: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 1
start local 1 14: isub
15: ifgt 1
end local 3 end local 1 16: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue top top top java.util.concurrent.ForkJoinTask[]
StackMap stack:
aconst_null
areturn
end local 4 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 10 1 b I
14 16 1 b I
2 10 2 k I
1 10 3 cap I
12 16 3 cap I
1 10 4 a [Ljava/util/concurrent/ForkJoinTask;
11 17 4 a [Ljava/util/concurrent/ForkJoinTask;
4 10 5 t Ljava/util/concurrent/ForkJoinTask<*>;
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> nextLocalTask();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=8, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.id:I
istore 2
start local 2 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 7
start local 7 3: ifnull 19
aload 7
arraylength
dup
istore 6
start local 6 4: ifle 19
5: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 4
start local 4 6: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 3
start local 3 7: isub
dup
istore 5
start local 5 8: ifle 19
9: iload 2
ldc 65536
iand
ifeq 10
iload 5
iconst_1
if_icmpne 14
10: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask int int int int int java.util.concurrent.ForkJoinTask[]
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 7
iload 6
iconst_1
isub
iinc 4 -1
iload 4
iand
aconst_null
invokevirtual java.lang.invoke.VarHandle.getAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/lang/Void;)Ljava/util/concurrent/ForkJoinTask;
11: dup
astore 1
ifnull 19
12: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.TOP:Ljava/lang/invoke/VarHandle;
aload 0
iload 4
invokevirtual java.lang.invoke.VarHandle.setOpaque:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
13: goto 19
14: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 7
iload 6
iconst_1
isub
iload 3
iinc 3 1
iand
aconst_null
invokevirtual java.lang.invoke.VarHandle.getAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/lang/Void;)Ljava/util/concurrent/ForkJoinTask;
15: dup
astore 1
ifnull 18
16: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
aload 0
iload 3
invokevirtual java.lang.invoke.VarHandle.setOpaque:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
17: goto 19
18: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.poll:()Ljava/util/concurrent/ForkJoinTask;
astore 1
end local 6 end local 5 end local 4 end local 3 19: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask int top top top top java.util.concurrent.ForkJoinTask[]
StackMap stack:
aload 1
areturn
end local 7 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 20 1 t Ljava/util/concurrent/ForkJoinTask<*>;
2 20 2 md I
7 19 3 b I
6 19 4 s I
8 19 5 d I
4 19 6 cap I
3 20 7 a [Ljava/util/concurrent/ForkJoinTask;
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> peek();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 2
start local 2 1: ifnull 6
aload 2
arraylength
dup
istore 1
start local 1 2: ifle 6
3: aload 2
iload 1
iconst_1
isub
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.id:I
ldc 65536
iand
ifeq 4
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
goto 5
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[]
StackMap stack: java.util.concurrent.ForkJoinTask[] int
4: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int java.util.concurrent.ForkJoinTask[]
StackMap stack: java.util.concurrent.ForkJoinTask[] int int
5: iand
aaload
goto 7
end local 1 StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue top java.util.concurrent.ForkJoinTask[]
StackMap stack:
6: aconst_null
7: StackMap locals:
StackMap stack: java.util.concurrent.ForkJoinTask
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
2 6 1 cap I
1 8 2 a [Ljava/util/concurrent/ForkJoinTask;
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final boolean tryUnpush(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 5
start local 5 2: ifnull 8
aload 5
arraylength
dup
istore 4
start local 4 3: ifle 8
4: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 3
start local 3 5: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
if_icmpeq 8
6: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 5
iload 4
iconst_1
isub
iinc 3 -1
iload 3
iand
aload 1
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;Ljava/lang/Void;)Z
dup
istore 2
ifeq 8
7: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.TOP:Ljava/lang/invoke/VarHandle;
aload 0
iload 3
invokevirtual java.lang.invoke.VarHandle.setOpaque:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
end local 4 end local 3 8: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask int top top java.util.concurrent.ForkJoinTask[]
StackMap stack:
iload 2
ireturn
end local 5 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 9 1 task Ljava/util/concurrent/ForkJoinTask<*>;
1 9 2 popped Z
5 8 3 s I
3 8 4 cap I
2 9 5 a [Ljava/util/concurrent/ForkJoinTask;
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)Z
MethodParameters:
Name Flags
task
final boolean tryLockedUnpush(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
istore 3
start local 3 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 6
start local 6 3: ifnull 11
aload 6
arraylength
dup
istore 5
start local 5 4: ifle 11
5: aload 6
iload 5
iconst_1
isub
iload 3
iand
dup
istore 4
start local 4 6: aaload
aload 1
if_acmpne 11
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.tryLockPhase:()Z
ifeq 11
7: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iload 3
iconst_1
iadd
if_icmpne 10
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
aload 6
if_acmpne 10
8: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 6
iload 4
aload 1
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;Ljava/lang/Void;)Z
dup
istore 2
ifeq 10
9: aload 0
iload 3
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
10: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask int int int int java.util.concurrent.ForkJoinTask[]
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.releasePhaseLock:()V
end local 5 end local 4 11: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask int int top top java.util.concurrent.ForkJoinTask[]
StackMap stack:
iload 2
ireturn
end local 6 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 12 1 task Ljava/util/concurrent/ForkJoinTask<*>;
1 12 2 popped Z
2 12 3 s I
6 11 4 k I
4 11 5 cap I
3 12 6 a [Ljava/util/concurrent/ForkJoinTask;
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)Z
MethodParameters:
Name Flags
task
final void cancelAll();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: goto 2
start local 1 1: StackMap locals: java.util.concurrent.ForkJoinTask
StackMap stack:
aload 1
invokestatic java.util.concurrent.ForkJoinTask.cancelIgnoringExceptions:(Ljava/util/concurrent/ForkJoinTask;)V
end local 1 2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.poll:()Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 3: ifnonnull 1
end local 1 4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 2 1 t Ljava/util/concurrent/ForkJoinTask<*>;
3 4 1 t Ljava/util/concurrent/ForkJoinTask<*>;
final void topLevelExec(java.util.concurrent.ForkJoinTask<?>, java.util.concurrent.ForkJoinPool$WorkQueue, );
descriptor: (Ljava/util/concurrent/ForkJoinTask;Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnull 15
aload 2
ifnull 15
1: iconst_1
istore 4
start local 4 2: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
3: iload 3
iinc 3 -1
ifge 5
4: goto 10
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.nextLocalTask:()Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
ifnonnull 2
6: aload 2
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.poll:()Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
ifnonnull 8
7: goto 10
8: StackMap locals:
StackMap stack:
iinc 4 1
9: goto 2
10: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.owner:Ljava/util/concurrent/ForkJoinWorkerThread;
astore 5
start local 5 11: aload 0
dup
getfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
iload 4
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
12: aload 0
iconst_0
putfield java.util.concurrent.ForkJoinPool$WorkQueue.source:I
13: aload 5
ifnull 15
14: aload 5
invokevirtual java.util.concurrent.ForkJoinWorkerThread.afterTopLevelExec:()V
end local 5 end local 4 15: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 16 1 t Ljava/util/concurrent/ForkJoinTask<*>;
0 16 2 q Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 16 3 n I
2 15 4 nstolen I
11 15 5 thread Ljava/util/concurrent/ForkJoinWorkerThread;
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
MethodParameters:
Name Flags
t
q
n
final void tryRemoveAndExec(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)V
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=14, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 2
start local 2 1: ifnull 28
aload 2
arraylength
dup
istore 4
start local 4 2: ifle 28
3: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 3
start local 3 4: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
isub
ifle 28
5: iload 4
iconst_1
isub
istore 5
start local 5 6: iload 3
iconst_1
isub
istore 6
start local 6 7: iload 6
istore 7
start local 7 8: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] int int int int int
StackMap stack:
iload 7
iload 5
iand
istore 8
start local 8 9: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 8
invokevirtual java.lang.invoke.VarHandle.get:([Ljava/util/concurrent/ForkJoinTask;I)Ljava/util/concurrent/ForkJoinTask;
astore 9
start local 9 10: aload 9
ifnonnull 12
11: goto 28
12: StackMap locals: int java.util.concurrent.ForkJoinTask
StackMap stack:
aload 9
aload 1
if_acmpne 27
13: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 8
aload 9
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;Ljava/lang/Void;)Z
ifeq 28
14: aload 0
iload 6
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
15: iload 7
istore 10
start local 10 16: goto 23
17: StackMap locals: int
StackMap stack:
iload 10
iconst_1
iadd
iload 5
iand
istore 12
start local 12 18: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 12
invokevirtual java.lang.invoke.VarHandle.get:([Ljava/util/concurrent/ForkJoinTask;I)Ljava/util/concurrent/ForkJoinTask;
astore 11
start local 11 19: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 12
aconst_null
invokevirtual java.lang.invoke.VarHandle.setVolatile:([Ljava/util/concurrent/ForkJoinTask;ILjava/lang/Void;)V
20: iload 10
iload 5
iand
istore 13
start local 13 21: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 2
iload 13
aload 11
invokevirtual java.lang.invoke.VarHandle.setRelease:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;)V
end local 13 end local 12 end local 11 22: iinc 10 1
StackMap locals:
StackMap stack:
23: iload 10
iload 6
if_icmpne 17
end local 10 24: invokestatic java.lang.invoke.VarHandle.releaseFence:()V
25: aload 9
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
26: goto 28
end local 9 end local 8 27: StackMap locals:
StackMap stack:
iinc 7 -1
goto 8
end local 7 end local 6 end local 5 end local 4 end local 3 28: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[]
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 29 1 task Ljava/util/concurrent/ForkJoinTask<*>;
1 29 2 a [Ljava/util/concurrent/ForkJoinTask;
4 28 3 s I
2 28 4 cap I
6 28 5 m I
7 28 6 ns I
8 28 7 i I
9 27 8 index I
10 27 9 t Ljava/util/concurrent/ForkJoinTask<*>;
16 24 10 j I
19 22 11 f Ljava/util/concurrent/ForkJoinTask<*>;
18 22 12 pindex I
21 22 13 jindex I
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)V
MethodParameters:
Name Flags
task
final int helpCC(java.util.concurrent.CountedCompleter<?>, int, );
descriptor: (Ljava/util/concurrent/CountedCompleter;IZ)I
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: aload 1
ifnull 34
aload 1
getfield java.util.concurrent.CountedCompleter.status:I
dup
istore 4
iflt 34
2: goto 28
start local 5 start local 7 start local 8 3: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int int int top int java.util.concurrent.ForkJoinTask[]
StackMap stack:
aconst_null
astore 9
start local 9 4: aload 8
iload 7
iconst_1
isub
iload 5
iconst_1
isub
iand
dup
istore 6
start local 6 5: aaload
astore 10
start local 10 6: aload 10
instanceof java.util.concurrent.CountedCompleter
ifeq 23
7: aload 10
checkcast java.util.concurrent.CountedCompleter
astore 11
start local 11 8: aload 11
astore 12
start local 12 9: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int int int int int java.util.concurrent.ForkJoinTask[] java.util.concurrent.CountedCompleter java.util.concurrent.ForkJoinTask java.util.concurrent.CountedCompleter java.util.concurrent.CountedCompleter
StackMap stack:
aload 12
aload 1
if_acmpeq 12
10: aload 12
getfield java.util.concurrent.CountedCompleter.completer:Ljava/util/concurrent/CountedCompleter;
dup
astore 12
ifnonnull 9
11: goto 23
12: StackMap locals:
StackMap stack:
iload 3
ifeq 20
13: aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.tryLockPhase:()Z
ifeq 23
14: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iload 5
if_icmpne 18
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
aload 8
if_acmpne 18
15: getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 8
iload 6
aload 11
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/CountedCompleter;Ljava/lang/Void;)Z
ifeq 18
16: aload 0
iload 5
iconst_1
isub
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
17: aload 11
astore 9
18: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.releasePhaseLock:()V
19: goto 23
20: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 8
iload 6
aload 11
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/CountedCompleter;Ljava/lang/Void;)Z
ifeq 23
21: aload 0
iload 5
iconst_1
isub
putfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
22: aload 11
astore 9
end local 12 end local 11 23: StackMap locals:
StackMap stack:
aload 9
ifnull 25
24: aload 9
invokevirtual java.util.concurrent.CountedCompleter.doExec:()I
pop
25: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.CountedCompleter.status:I
dup
istore 4
iflt 34
aload 9
ifnull 34
26: iload 2
ifeq 28
iinc 2 -1
iload 2
ifne 28
27: goto 34
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 28: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int int
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 8
start local 8 29: ifnull 34
aload 8
arraylength
dup
istore 7
start local 7 30: ifle 34
31: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 5
start local 5 32: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
isub
33: ifgt 3
end local 8 end local 7 end local 5 34: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 35 1 task Ljava/util/concurrent/CountedCompleter<*>;
0 35 2 limit I
0 35 3 shared Z
1 35 4 status I
3 28 5 s I
32 34 5 s I
5 28 6 k I
3 28 7 cap I
30 34 7 cap I
3 28 8 a [Ljava/util/concurrent/ForkJoinTask;
29 34 8 a [Ljava/util/concurrent/ForkJoinTask;
4 28 9 v Ljava/util/concurrent/CountedCompleter<*>;
6 28 10 o Ljava/util/concurrent/ForkJoinTask<*>;
8 23 11 t Ljava/util/concurrent/CountedCompleter<*>;
9 23 12 f Ljava/util/concurrent/CountedCompleter<*>;
Signature: (Ljava/util/concurrent/CountedCompleter<*>;IZ)I
MethodParameters:
Name Flags
task
limit
shared
final void helpAsyncBlocker(java.util.concurrent.ForkJoinPool$ManagedBlocker);
descriptor: (Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: aload 1
ifnull 19
1: goto 13
start local 2 start local 4 start local 5 2: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinPool$ManagedBlocker int top int java.util.concurrent.ForkJoinTask[]
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 5
iload 4
iconst_1
isub
iload 2
iand
dup
istore 3
start local 3 3: invokevirtual java.lang.invoke.VarHandle.getAcquire:([Ljava/util/concurrent/ForkJoinTask;I)Ljava/util/concurrent/ForkJoinTask;
astore 6
start local 6 4: aload 1
invokeinterface java.util.concurrent.ForkJoinPool$ManagedBlocker.isReleasable:()Z
ifeq 6
5: goto 19
6: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinPool$ManagedBlocker int int int java.util.concurrent.ForkJoinTask[] java.util.concurrent.ForkJoinTask
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 2
iinc 2 1
if_icmpne 13
aload 6
ifnull 13
7: aload 6
instanceof java.util.concurrent.CompletableFuture$AsynchronousCompletionTask
8: ifne 10
9: goto 19
10: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool.QA:Ljava/lang/invoke/VarHandle;
aload 5
iload 3
aload 6
aconst_null
invokevirtual java.lang.invoke.VarHandle.compareAndSet:([Ljava/util/concurrent/ForkJoinTask;ILjava/util/concurrent/ForkJoinTask;Ljava/lang/Void;)Z
ifeq 13
11: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.BASE:Ljava/lang/invoke/VarHandle;
aload 0
iload 2
invokevirtual java.lang.invoke.VarHandle.setOpaque:(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
12: aload 6
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
end local 6 end local 5 end local 4 end local 3 end local 2 13: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinPool$ManagedBlocker
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 5
start local 5 14: ifnull 19
aload 5
arraylength
dup
istore 4
start local 4 15: ifle 19
16: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 2
start local 2 17: isub
18: ifgt 2
end local 5 end local 4 end local 2 19: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 20 1 blocker Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;
2 13 2 b I
17 19 2 b I
3 13 3 k I
2 13 4 cap I
15 19 4 cap I
2 13 5 a [Ljava/util/concurrent/ForkJoinTask;
14 19 5 a [Ljava/util/concurrent/ForkJoinTask;
4 13 6 t Ljava/util/concurrent/ForkJoinTask<*>;
MethodParameters:
Name Flags
blocker
final boolean isApparentlyUnblocked();
descriptor: ()Z
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.owner:Ljava/util/concurrent/ForkJoinWorkerThread;
dup
astore 1
start local 1 1: ifnull 7
2: aload 1
invokevirtual java.lang.Thread.getState:()Ljava/lang/Thread$State;
dup
astore 2
start local 2 3: getstatic java.lang.Thread$State.BLOCKED:Ljava/lang/Thread$State;
if_acmpeq 7
4: aload 2
getstatic java.lang.Thread$State.WAITING:Ljava/lang/Thread$State;
if_acmpeq 7
5: aload 2
getstatic java.lang.Thread$State.TIMED_WAITING:Ljava/lang/Thread$State;
if_acmpeq 7
end local 2 6: iconst_1
ireturn
StackMap locals: java.lang.Thread
StackMap stack:
7: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 8 1 wt Ljava/lang/Thread;
3 6 2 s Ljava/lang/Thread$State;
}
SourceFile: "ForkJoinPool.java"
NestHost: java.util.concurrent.ForkJoinPool
InnerClasses:
public final State = java.lang.Thread$State of java.lang.Thread
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract AsynchronousCompletionTask = java.util.concurrent.CompletableFuture$AsynchronousCompletionTask of java.util.concurrent.CompletableFuture
public abstract ManagedBlocker = java.util.concurrent.ForkJoinPool$ManagedBlocker of java.util.concurrent.ForkJoinPool
final WorkQueue = java.util.concurrent.ForkJoinPool$WorkQueue of java.util.concurrent.ForkJoinPool
RuntimeVisibleAnnotations:
jdk.internal.vm.annotation.Contended()