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
{
static final int INITIAL_QUEUE_CAPACITY;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 8192
static final int MAXIMUM_QUEUE_CAPACITY;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 67108864
volatile int scanState;
descriptor: I
flags: (0x0040) ACC_VOLATILE
int stackPred;
descriptor: I
flags: (0x0000)
int nsteals;
descriptor: I
flags: (0x0000)
int hint;
descriptor: I
flags: (0x0000)
int config;
descriptor: I
flags: (0x0000)
volatile int qlock;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int base;
descriptor: I
flags: (0x0040) ACC_VOLATILE
int top;
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
volatile java.lang.Thread parker;
descriptor: Ljava/lang/Thread;
flags: (0x0040) ACC_VOLATILE
volatile java.util.concurrent.ForkJoinTask<?> currentJoin;
descriptor: Ljava/util/concurrent/ForkJoinTask;
flags: (0x0040) ACC_VOLATILE
Signature: Ljava/util/concurrent/ForkJoinTask<*>;
volatile java.util.concurrent.ForkJoinTask<?> currentSteal;
descriptor: Ljava/util/concurrent/ForkJoinTask;
flags: (0x0040) ACC_VOLATILE
Signature: Ljava/util/concurrent/ForkJoinTask<*>;
private static final sun.misc.Unsafe U;
descriptor: Lsun/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int ABASE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int ASHIFT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long QTOP;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long QLOCK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long QCURRENTSTEAL;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=0
0: invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
putstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
1: ldc Ljava/util/concurrent/ForkJoinPool$WorkQueue;
astore 0
start local 0 2: ldc [Ljava/util/concurrent/ForkJoinTask;
astore 1
start local 1 3: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
4: aload 0
ldc "top"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
5: invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
6: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
7: aload 0
ldc "qlock"
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.ForkJoinPool$WorkQueue.QLOCK:J
9: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
10: aload 0
ldc "currentSteal"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
11: invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic java.util.concurrent.ForkJoinPool$WorkQueue.QCURRENTSTEAL:J
12: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
invokevirtual sun.misc.Unsafe.arrayBaseOffset:(Ljava/lang/Class;)I
putstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
13: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
invokevirtual sun.misc.Unsafe.arrayIndexScale:(Ljava/lang/Class;)I
istore 2
start local 2 14: iload 2
iload 2
iconst_1
isub
iand
ifeq 16
15: new java.lang.Error
dup
ldc "data type scale not a power of two"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals: java.lang.Class java.lang.Class int
StackMap stack:
bipush 31
iload 2
invokestatic java.lang.Integer.numberOfLeadingZeros:(I)I
isub
putstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
end local 2 end local 1 end local 0 17: goto 20
StackMap locals:
StackMap stack: java.lang.Exception
18: astore 0
start local 0 19: new java.lang.Error
dup
aload 0
invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 20: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
2 17 0 wk Ljava/lang/Class<*>;
3 17 1 ak Ljava/lang/Class<*>;
14 17 2 scale I
19 20 0 e Ljava/lang/Exception;
Exception table:
from to target type
0 17 18 Class java.lang.Exception
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 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.config: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: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base: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=6, locals=5, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 4
start local 4 1: isub
dup
istore 2
start local 2 2: ifge 11
3: iload 2
iconst_m1
if_icmpne 10
4: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 5: ifnull 11
aload 1
arraylength
iconst_1
isub
dup
istore 3
start local 3 6: iflt 11
7: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
8: aload 1
iload 3
iload 4
iconst_1
isub
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
i2l
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
i2l
ladd
9: invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
ifnull 11
end local 3 end local 1 10: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue top int top int
StackMap stack:
iconst_0
ireturn
StackMap locals:
StackMap stack:
11: iconst_1
ireturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
5 10 1 a [Ljava/util/concurrent/ForkJoinTask;
2 12 2 n I
6 10 3 m I
1 12 4 s I
final void push(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)V
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
istore 4
start local 4 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
istore 5
start local 5 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 2
start local 2 3: ifnull 15
4: aload 2
arraylength
iconst_1
isub
istore 7
start local 7 5: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 2
iload 7
iload 5
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
aload 1
invokevirtual sun.misc.Unsafe.putOrderedObject:(Ljava/lang/Object;JLjava/lang/Object;)V
6: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 5
iconst_1
iadd
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
7: iload 5
iload 4
isub
dup
istore 6
start local 6 8: iconst_1
if_icmpgt 13
9: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.pool:Ljava/util/concurrent/ForkJoinPool;
dup
astore 3
start local 3 10: ifnull 15
11: aload 3
aload 3
getfield java.util.concurrent.ForkJoinPool.workQueues:[Ljava/util/concurrent/ForkJoinPool$WorkQueue;
aload 0
invokevirtual java.util.concurrent.ForkJoinPool.signalWork:([Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
12: goto 15
end local 3 13: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] top int int int int
StackMap stack:
iload 6
iload 7
if_icmplt 15
14: aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.growArray:()[Ljava/util/concurrent/ForkJoinTask;
pop
end local 7 end local 6 15: StackMap locals:
StackMap stack:
return
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/ForkJoinPool$WorkQueue;
0 16 1 task Ljava/util/concurrent/ForkJoinTask<*>;
3 16 2 a [Ljava/util/concurrent/ForkJoinTask;
10 13 3 p Ljava/util/concurrent/ForkJoinPool;
1 16 4 b I
2 16 5 s I
8 15 6 n I
5 15 7 m I
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)V
MethodParameters:
Name Flags
task
final java.util.concurrent.ForkJoinTask<?>[] growArray();
descriptor: ()[Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=11, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
arraylength
iconst_1
ishl
goto 3
StackMap locals: java.util.concurrent.ForkJoinTask[]
StackMap stack:
2: sipush 8192
StackMap locals:
StackMap stack: int
3: istore 2
start local 2 4: iload 2
ldc 67108864
if_icmple 6
5: new java.util.concurrent.RejectedExecutionException
dup
ldc "Queue capacity exceeded"
invokespecial java.util.concurrent.RejectedExecutionException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: int
StackMap stack:
aload 0
iload 2
anewarray java.util.concurrent.ForkJoinTask
dup_x1
putfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
astore 6
start local 6 7: aload 1
ifnull 20
aload 1
arraylength
iconst_1
isub
dup
istore 3
start local 3 8: iflt 20
9: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 4
start local 4 10: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 5
start local 5 11: isub
ifle 20
12: iload 2
iconst_1
isub
istore 7
start local 7 13: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[] int int int int java.util.concurrent.ForkJoinTask[] int
StackMap stack:
iload 5
iload 3
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
istore 9
start local 9 14: iload 5
iload 7
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
istore 10
start local 10 15: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
iload 9
i2l
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
astore 8
start local 8 16: aload 8
ifnull 19
17: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
iload 9
i2l
aload 8
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 19
18: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 6
iload 10
i2l
aload 8
invokevirtual sun.misc.Unsafe.putObjectVolatile:(Ljava/lang/Object;JLjava/lang/Object;)V
end local 10 end local 9 end local 8 19: StackMap locals:
StackMap stack:
iinc 5 1
iload 5
iload 4
if_icmpne 13
end local 7 end local 5 end local 4 end local 3 20: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[] int top top top java.util.concurrent.ForkJoinTask[]
StackMap stack:
aload 6
areturn
end local 6 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 21 1 oldA [Ljava/util/concurrent/ForkJoinTask;
4 21 2 size I
8 20 3 oldMask I
10 20 4 t I
11 20 5 b I
7 21 6 a [Ljava/util/concurrent/ForkJoinTask;
13 20 7 mask I
16 19 8 x Ljava/util/concurrent/ForkJoinTask<*>;
14 19 9 oldj I
15 19 10 j I
Signature: ()[Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> pop();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=7, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 1: ifnull 13
aload 1
arraylength
iconst_1
isub
dup
istore 3
start local 3 2: iflt 13
3: goto 11
start local 4 4: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[] top int int
StackMap stack:
iload 3
iload 4
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
lstore 5
start local 5 5: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
lload 5
invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
dup
astore 2
start local 2 6: ifnonnull 8
7: goto 13
8: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[] java.util.concurrent.ForkJoinTask int int long
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
lload 5
aload 2
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 11
9: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 4
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
10: aload 2
areturn
end local 5 end local 4 end local 2 11: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[] top int
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
dup
istore 4
start local 4 12: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
isub
ifge 4
end local 4 end local 3 13: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask[]
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 14 1 a [Ljava/util/concurrent/ForkJoinTask;
6 11 2 t Ljava/util/concurrent/ForkJoinTask<*>;
2 13 3 m I
4 11 4 s I
12 13 4 s I
5 11 5 j J
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> pollAt(int);
descriptor: (I)Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=5, 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 3
start local 3 1: ifnull 8
2: aload 3
arraylength
iconst_1
isub
iload 1
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
istore 4
start local 4 3: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 3
iload 4
i2l
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
dup
astore 2
start local 2 4: ifnull 8
5: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 1
if_icmpne 8
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 3
iload 4
i2l
aload 2
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 8
6: aload 0
iload 1
iconst_1
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
7: aload 2
areturn
end local 4 end local 2 8: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int top java.util.concurrent.ForkJoinTask[]
StackMap stack:
aconst_null
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 9 1 b I
4 8 2 t Ljava/util/concurrent/ForkJoinTask<*>;
1 9 3 a [Ljava/util/concurrent/ForkJoinTask;
3 8 4 j I
Signature: (I)Ljava/util/concurrent/ForkJoinTask<*>;
MethodParameters:
Name Flags
b
final java.util.concurrent.ForkJoinTask<?> poll();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=5, args_size=1
start local 0 0: goto 10
start local 1 start local 2 1: StackMap locals: java.util.concurrent.ForkJoinTask[] int
StackMap stack:
aload 1
arraylength
iconst_1
isub
iload 2
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
istore 4
start local 4 2: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
iload 4
i2l
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
astore 3
start local 3 3: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 2
if_icmpne 10
4: aload 3
ifnull 8
5: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
iload 4
i2l
aload 3
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 10
6: aload 0
iload 2
iconst_1
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
7: aload 3
areturn
8: StackMap locals: java.util.concurrent.ForkJoinTask int
StackMap stack:
iload 2
iconst_1
iadd
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
if_icmpne 10
9: goto 13
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.base:I
dup
istore 2
start local 2 11: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
isub
ifge 13
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 12: ifnonnull 1
end local 1 13: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue top int
StackMap stack:
aconst_null
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 10 1 a [Ljava/util/concurrent/ForkJoinTask;
12 13 1 a [Ljava/util/concurrent/ForkJoinTask;
1 10 2 b I
11 14 2 b I
3 10 3 t Ljava/util/concurrent/ForkJoinTask<*>;
2 10 4 j I
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> nextLocalTask();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.config:I
ldc 65536
iand
ifne 1
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.pop:()Ljava/util/concurrent/ForkJoinTask;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.poll:()Ljava/util/concurrent/ForkJoinTask;
StackMap locals:
StackMap stack: java.util.concurrent.ForkJoinTask
2: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final java.util.concurrent.ForkJoinTask<?> peek();
descriptor: ()Ljava/util/concurrent/ForkJoinTask;
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=5, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
astore 1
start local 1 1: aload 1
ifnull 3
aload 1
arraylength
iconst_1
isub
dup
istore 2
start local 2 2: ifge 4
end local 2 3: StackMap locals: java.util.concurrent.ForkJoinTask[]
StackMap stack:
aconst_null
areturn
start local 2 4: StackMap locals: int
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.config:I
ldc 65536
iand
ifne 5
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
goto 6
StackMap locals:
StackMap stack:
5: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
StackMap locals:
StackMap stack: int
6: istore 3
start local 3 7: iload 3
iload 2
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
istore 4
start local 4 8: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 1
iload 4
i2l
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 9 1 a [Ljava/util/concurrent/ForkJoinTask;
2 3 2 m I
4 9 2 m I
7 9 3 i I
8 9 4 j I
Signature: ()Ljava/util/concurrent/ForkJoinTask<*>;
final boolean tryUnpush(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=4, 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 9
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 3
start local 3 2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
if_icmpeq 9
3: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
4: aload 2
aload 2
arraylength
iconst_1
isub
iinc 3 -1
iload 3
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
aload 1
aconst_null
5: invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
6: ifeq 9
7: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 3
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
8: iconst_1
ireturn
end local 3 9: StackMap locals: java.util.concurrent.ForkJoinTask[]
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 10 1 t Ljava/util/concurrent/ForkJoinTask<*>;
1 10 2 a [Ljava/util/concurrent/ForkJoinTask;
2 9 3 s I
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)Z
MethodParameters:
Name Flags
t
final void cancelAll();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.currentJoin:Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
start local 1 1: ifnull 4
2: aload 0
aconst_null
putfield java.util.concurrent.ForkJoinPool$WorkQueue.currentJoin:Ljava/util/concurrent/ForkJoinTask;
3: aload 1
invokestatic java.util.concurrent.ForkJoinTask.cancelIgnoringExceptions:(Ljava/util/concurrent/ForkJoinTask;)V
4: StackMap locals: java.util.concurrent.ForkJoinTask
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.currentSteal:Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
ifnull 9
5: aload 0
aconst_null
putfield java.util.concurrent.ForkJoinPool$WorkQueue.currentSteal:Ljava/util/concurrent/ForkJoinTask;
6: aload 1
invokestatic java.util.concurrent.ForkJoinTask.cancelIgnoringExceptions:(Ljava/util/concurrent/ForkJoinTask;)V
7: goto 9
8: StackMap locals:
StackMap stack:
aload 1
invokestatic java.util.concurrent.ForkJoinTask.cancelIgnoringExceptions:(Ljava/util/concurrent/ForkJoinTask;)V
9: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.poll:()Ljava/util/concurrent/ForkJoinTask;
dup
astore 1
ifnonnull 8
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 11 1 t Ljava/util/concurrent/ForkJoinTask<*>;
final void pollAndExecAll();
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
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
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 execLocalTasks();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=6, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
istore 1
start local 1 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
astore 4
start local 4 2: iload 1
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
dup
istore 3
start local 3 3: isub
ifgt 17
aload 4
ifnull 17
4: aload 4
arraylength
iconst_1
isub
dup
istore 2
start local 2 5: iflt 17
6: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.config:I
ldc 65536
iand
ifne 16
7: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int int int java.util.concurrent.ForkJoinTask[]
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
8: aload 4
iload 2
iload 3
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
aconst_null
9: invokevirtual sun.misc.Unsafe.getAndSetObject:(Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
dup
astore 5
start local 5 10: ifnonnull 12
11: goto 17
12: StackMap locals: java.util.concurrent.ForkJoinTask
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 3
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
13: aload 5
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
14: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iconst_1
isub
dup
istore 3
isub
ifle 7
end local 5 15: goto 17
16: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.pollAndExecAll:()V
end local 2 17: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue int top int java.util.concurrent.ForkJoinTask[]
StackMap stack:
return
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
1 18 1 b I
5 17 2 m I
3 18 3 s I
2 18 4 a [Ljava/util/concurrent/ForkJoinTask;
10 15 5 t Ljava/util/concurrent/ForkJoinTask<*>;
final void runTask(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)V
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnull 11
1: aload 0
dup
getfield java.util.concurrent.ForkJoinPool$WorkQueue.scanState:I
bipush -2
iand
putfield java.util.concurrent.ForkJoinPool$WorkQueue.scanState:I
2: aload 0
aload 1
dup_x1
putfield java.util.concurrent.ForkJoinPool$WorkQueue.currentSteal:Ljava/util/concurrent/ForkJoinTask;
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
3: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QCURRENTSTEAL:J
aconst_null
invokevirtual sun.misc.Unsafe.putOrderedObject:(Ljava/lang/Object;JLjava/lang/Object;)V
4: aload 0
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.execLocalTasks:()V
5: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.owner:Ljava/util/concurrent/ForkJoinWorkerThread;
astore 2
start local 2 6: aload 0
dup
getfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
iconst_1
iadd
dup_x1
putfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
ifge 8
7: aload 0
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.pool:Ljava/util/concurrent/ForkJoinPool;
invokevirtual java.util.concurrent.ForkJoinPool$WorkQueue.transferStealCount:(Ljava/util/concurrent/ForkJoinPool;)V
8: StackMap locals: java.util.concurrent.ForkJoinWorkerThread
StackMap stack:
aload 0
dup
getfield java.util.concurrent.ForkJoinPool$WorkQueue.scanState:I
iconst_1
ior
putfield java.util.concurrent.ForkJoinPool$WorkQueue.scanState:I
9: aload 2
ifnull 11
10: aload 2
invokevirtual java.util.concurrent.ForkJoinWorkerThread.afterTopLevelExec:()V
end local 2 11: StackMap locals:
StackMap stack:
return
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<*>;
6 11 2 thread Ljava/util/concurrent/ForkJoinWorkerThread;
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)V
MethodParameters:
Name Flags
task
final void transferStealCount(java.util.concurrent.ForkJoinPool);
descriptor: (Ljava/util/concurrent/ForkJoinPool;)V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ifnull 7
aload 1
getfield java.util.concurrent.ForkJoinPool.stealCounter:Ljava/util/concurrent/atomic/AtomicLong;
dup
astore 2
start local 2 1: ifnull 7
2: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
istore 3
start local 3 3: aload 0
iconst_0
putfield java.util.concurrent.ForkJoinPool$WorkQueue.nsteals:I
4: aload 2
iload 3
ifge 5
ldc 2147483647
goto 6
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinPool java.util.concurrent.atomic.AtomicLong int
StackMap stack: java.util.concurrent.atomic.AtomicLong
5: iload 3
StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinPool java.util.concurrent.atomic.AtomicLong int
StackMap stack: java.util.concurrent.atomic.AtomicLong int
6: i2l
invokevirtual java.util.concurrent.atomic.AtomicLong.getAndAdd:(J)J
pop2
end local 3 end local 2 7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 8 1 p Ljava/util/concurrent/ForkJoinPool;
1 7 2 sc Ljava/util/concurrent/atomic/AtomicLong;
3 7 3 s I
MethodParameters:
Name Flags
p
final boolean tryRemoveAndExec(java.util.concurrent.ForkJoinTask<?>);
descriptor: (Ljava/util/concurrent/ForkJoinTask;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=7, locals=11, 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 36
aload 2
arraylength
iconst_1
isub
dup
istore 3
start local 3 2: iflt 36
3: aload 1
ifnull 36
4: goto 32
start local 4 start local 5 start local 6 5: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.ForkJoinTask java.util.concurrent.ForkJoinTask[] int int int int
StackMap stack:
iinc 4 -1
iload 4
iload 3
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
lstore 8
start local 8 6: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 2
lload 8
invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
checkcast java.util.concurrent.ForkJoinTask
dup
astore 7
start local 7 7: ifnonnull 10
8: iload 4
iconst_1
iadd
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
if_icmpne 9
iconst_1
ireturn
StackMap locals: java.util.concurrent.ForkJoinTask long
StackMap stack:
9: iconst_0
ireturn
10: StackMap locals:
StackMap stack:
aload 7
aload 1
if_acmpne 24
11: iconst_0
istore 10
start local 10 12: iload 4
iconst_1
iadd
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
if_icmpne 17
13: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 2
lload 8
aload 1
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 21
14: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 4
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
15: iconst_1
istore 10
16: goto 21
17: StackMap locals: int
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 5
if_icmpne 21
18: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
19: aload 2
lload 8
aload 1
new java.util.concurrent.ForkJoinPool$EmptyTask
dup
invokespecial java.util.concurrent.ForkJoinPool$EmptyTask.<init>:()V
20: invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
istore 10
21: StackMap locals:
StackMap stack:
iload 10
ifeq 30
22: aload 1
invokevirtual java.util.concurrent.ForkJoinTask.doExec:()I
pop
23: goto 30
end local 10 24: StackMap locals:
StackMap stack:
aload 7
getfield java.util.concurrent.ForkJoinTask.status:I
ifge 28
iload 4
iconst_1
iadd
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
if_icmpne 28
25: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 2
lload 8
aload 7
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 30
26: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 4
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
27: goto 30
28: StackMap locals:
StackMap stack:
iinc 6 -1
iload 6
ifne 5
29: iconst_0
ireturn
end local 8 end local 7 30: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.ForkJoinTask.status:I
ifge 32
31: iconst_0
ireturn
end local 6 end local 5 end local 4 32: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 4
start local 4 33: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 5
start local 5 34: isub
dup
istore 6
start local 6 35: ifgt 5
end local 6 end local 5 end local 4 end local 3 36: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 37 1 task Ljava/util/concurrent/ForkJoinTask<*>;
1 37 2 a [Ljava/util/concurrent/ForkJoinTask;
2 36 3 m I
5 32 4 s I
33 36 4 s I
5 32 5 b I
34 36 5 b I
5 32 6 n I
35 36 6 n I
7 30 7 t Ljava/util/concurrent/ForkJoinTask<*>;
6 30 8 j J
12 24 10 removed Z
Signature: (Ljava/util/concurrent/ForkJoinTask<*>;)Z
MethodParameters:
Name Flags
task
final java.util.concurrent.CountedCompleter<?> popCC(java.util.concurrent.CountedCompleter<?>, int);
descriptor: (Ljava/util/concurrent/CountedCompleter;I)Ljava/util/concurrent/CountedCompleter;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
dup
istore 3
start local 3 1: isub
ifge 23
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 4
start local 4 2: ifnull 23
3: aload 4
arraylength
iconst_1
isub
iload 3
iconst_1
isub
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
lstore 6
start local 6 4: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 4
lload 6
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
dup
astore 5
start local 5 5: ifnull 23
6: aload 5
instanceof java.util.concurrent.CountedCompleter
ifeq 23
7: aload 5
checkcast java.util.concurrent.CountedCompleter
astore 8
start local 8 8: aload 8
astore 9
start local 9 9: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int java.util.concurrent.ForkJoinTask[] java.lang.Object long java.util.concurrent.CountedCompleter java.util.concurrent.CountedCompleter
StackMap stack:
aload 9
aload 1
if_acmpne 22
10: iload 2
ifge 19
11: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QLOCK:J
iconst_0
iconst_1
invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
ifeq 23
12: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
iload 3
if_icmpne 17
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
aload 4
if_acmpne 17
13: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 4
lload 6
aload 8
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 17
14: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 3
iconst_1
isub
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
15: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QLOCK:J
iconst_0
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
16: aload 8
areturn
17: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QLOCK:J
iconst_1
iconst_0
invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
pop
18: goto 23
19: StackMap locals:
StackMap stack:
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 4
lload 6
aload 8
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 23
20: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 0
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.QTOP:J
iload 3
iconst_1
isub
invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
21: aload 8
areturn
22: StackMap locals:
StackMap stack:
aload 9
getfield java.util.concurrent.CountedCompleter.completer:Ljava/util/concurrent/CountedCompleter;
dup
astore 9
ifnonnull 9
end local 9 end local 8 end local 6 end local 5 end local 4 23: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int
StackMap stack:
aconst_null
areturn
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/ForkJoinPool$WorkQueue;
0 24 1 task Ljava/util/concurrent/CountedCompleter<*>;
0 24 2 mode I
1 24 3 s I
2 23 4 a [Ljava/util/concurrent/ForkJoinTask;
5 23 5 o Ljava/lang/Object;
4 23 6 j J
8 23 8 t Ljava/util/concurrent/CountedCompleter<*>;
9 23 9 r Ljava/util/concurrent/CountedCompleter<*>;
Signature: (Ljava/util/concurrent/CountedCompleter<*>;I)Ljava/util/concurrent/CountedCompleter<*>;
MethodParameters:
Name Flags
task
mode
final int pollAndExecCC(java.util.concurrent.CountedCompleter<?>);
descriptor: (Ljava/util/concurrent/CountedCompleter;)I
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=10, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
dup
istore 2
start local 2 1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.top:I
isub
ifge 3
aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.array:[Ljava/util/concurrent/ForkJoinTask;
dup
astore 4
start local 4 2: ifnonnull 5
end local 4 3: StackMap locals: int
StackMap stack:
iload 2
ldc -2147483648
ior
istore 3
start local 3 4: goto 26
end local 3 start local 4 5: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int top java.util.concurrent.ForkJoinTask[]
StackMap stack:
aload 4
arraylength
iconst_1
isub
iload 2
iand
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ASHIFT:I
ishl
getstatic java.util.concurrent.ForkJoinPool$WorkQueue.ABASE:I
iadd
i2l
lstore 6
start local 6 6: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 4
lload 6
invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
dup
astore 5
start local 5 7: ifnonnull 10
8: iconst_2
istore 3
start local 3 9: goto 26
end local 3 10: StackMap locals: java.lang.Object long
StackMap stack:
aload 5
instanceof java.util.concurrent.CountedCompleter
ifne 13
11: iconst_m1
istore 3
start local 3 12: goto 26
end local 3 13: StackMap locals:
StackMap stack:
aload 5
checkcast java.util.concurrent.CountedCompleter
astore 8
start local 8 14: aload 8
astore 9
start local 9 15: StackMap locals: java.util.concurrent.CountedCompleter java.util.concurrent.CountedCompleter
StackMap stack:
aload 9
aload 1
if_acmpne 24
16: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
iload 2
if_icmpne 22
17: getstatic java.util.concurrent.ForkJoinPool$WorkQueue.U:Lsun/misc/Unsafe;
aload 4
lload 6
aload 8
aconst_null
invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
ifeq 22
18: aload 0
iload 2
iconst_1
iadd
putfield java.util.concurrent.ForkJoinPool$WorkQueue.base:I
19: aload 8
invokevirtual java.util.concurrent.CountedCompleter.doExec:()I
pop
20: iconst_1
istore 3
start local 3 21: goto 26
end local 3 22: StackMap locals:
StackMap stack:
iconst_2
istore 3
start local 3 23: goto 26
end local 3 24: StackMap locals:
StackMap stack:
aload 9
getfield java.util.concurrent.CountedCompleter.completer:Ljava/util/concurrent/CountedCompleter;
dup
astore 9
ifnonnull 15
25: iconst_m1
istore 3
end local 9 end local 8 end local 6 end local 5 end local 4 start local 3 26: StackMap locals: java.util.concurrent.ForkJoinPool$WorkQueue java.util.concurrent.CountedCompleter int int
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
0 27 1 task Ljava/util/concurrent/CountedCompleter<*>;
1 27 2 b I
4 5 3 h I
9 10 3 h I
12 13 3 h I
21 22 3 h I
23 24 3 h I
26 27 3 h I
2 3 4 a [Ljava/util/concurrent/ForkJoinTask;
5 26 4 a [Ljava/util/concurrent/ForkJoinTask;
7 26 5 o Ljava/lang/Object;
6 26 6 j J
14 26 8 t Ljava/util/concurrent/CountedCompleter<*>;
15 26 9 r Ljava/util/concurrent/CountedCompleter<*>;
Signature: (Ljava/util/concurrent/CountedCompleter<*>;)I
MethodParameters:
Name Flags
task
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.scanState:I
iflt 8
1: aload 0
getfield java.util.concurrent.ForkJoinPool$WorkQueue.owner:Ljava/util/concurrent/ForkJoinWorkerThread;
dup
astore 1
start local 1 2: ifnull 8
3: aload 1
invokevirtual java.lang.Thread.getState:()Ljava/lang/Thread$State;
dup
astore 2
start local 2 4: getstatic java.lang.Thread$State.BLOCKED:Ljava/lang/Thread$State;
if_acmpeq 8
5: aload 2
getstatic java.lang.Thread$State.WAITING:Ljava/lang/Thread$State;
if_acmpeq 8
6: aload 2
getstatic java.lang.Thread$State.TIMED_WAITING:Ljava/lang/Thread$State;
if_acmpeq 8
end local 2 end local 1 7: iconst_1
ireturn
StackMap locals:
StackMap stack:
8: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/ForkJoinPool$WorkQueue;
2 7 1 wt Ljava/lang/Thread;
4 7 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
final EmptyTask = java.util.concurrent.ForkJoinPool$EmptyTask of java.util.concurrent.ForkJoinPool
final WorkQueue = java.util.concurrent.ForkJoinPool$WorkQueue of java.util.concurrent.ForkJoinPool
RuntimeVisibleAnnotations:
sun.misc.Contended()