final class reactor.util.concurrent.MpscLinkedQueue<E> extends java.util.AbstractQueue<E> implements java.util.function.BiPredicate<E, E>
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: reactor.util.concurrent.MpscLinkedQueue
super_class: java.util.AbstractQueue
{
private volatile reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode<E> producerNode;
descriptor: Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
Signature: Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<reactor.util.concurrent.MpscLinkedQueue, reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode> PRODUCER_NODE_UPDATER;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lreactor/util/concurrent/MpscLinkedQueue;Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;>;
private volatile reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode<E> consumerNode;
descriptor: Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
Signature: Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<reactor.util.concurrent.MpscLinkedQueue, reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode> CONSUMER_NODE_UPDATER;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lreactor/util/concurrent/MpscLinkedQueue;Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Lreactor/util/concurrent/MpscLinkedQueue;
ldc Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
ldc "producerNode"
invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
1: putstatic reactor.util.concurrent.MpscLinkedQueue.PRODUCER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
2: ldc Lreactor/util/concurrent/MpscLinkedQueue;
ldc Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
ldc "consumerNode"
invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
3: putstatic reactor.util.concurrent.MpscLinkedQueue.CONSUMER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
4: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokespecial java.util.AbstractQueue.<init>:()V
1: new reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
dup
invokespecial reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.<init>:()V
astore 1
start local 1 2: getstatic reactor.util.concurrent.MpscLinkedQueue.CONSUMER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.lazySet:(Ljava/lang/Object;Ljava/lang/Object;)V
3: getstatic reactor.util.concurrent.MpscLinkedQueue.PRODUCER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.getAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
2 5 1 node Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
public final boolean offer();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ldc "The offered value 'e' must be non-null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
1: new reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
dup
aload 1
invokespecial reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.<init>:(Ljava/lang/Object;)V
astore 2
start local 2 2: getstatic reactor.util.concurrent.MpscLinkedQueue.PRODUCER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.getAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
astore 3
start local 3 3: aload 3
aload 2
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.soNext:(Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;)V
4: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
0 5 1 e TE;
2 5 2 nextNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
3 5 3 prevProducerNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
Signature: (TE;)Z
MethodParameters:
Name Flags
e final
public boolean test(E, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ldc "The offered value 'e1' must be non-null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
1: aload 2
ldc "The offered value 'e2' must be non-null"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
2: new reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
dup
aload 1
invokespecial reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.<init>:(Ljava/lang/Object;)V
astore 3
start local 3 3: new reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
dup
aload 2
invokespecial reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.<init>:(Ljava/lang/Object;)V
astore 4
start local 4 4: getstatic reactor.util.concurrent.MpscLinkedQueue.PRODUCER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 4
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.getAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
astore 5
start local 5 5: aload 3
aload 4
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.soNext:(Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;)V
6: aload 5
aload 3
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.soNext:(Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;)V
7: iconst_1
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 8 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
0 8 1 e1 TE;
0 8 2 e2 TE;
3 8 3 nextNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
4 8 4 nextNextNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
5 8 5 prevProducerNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
Signature: (TE;TE;)Z
MethodParameters:
Name Flags
e1
e2
public E poll();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.consumerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 1
start local 1 1: aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lvNext:()Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 2
start local 2 2: aload 2
ifnull 7
3: aload 2
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.getAndNullValue:()Ljava/lang/Object;
astore 3
start local 3 4: aload 1
aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.soNext:(Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;)V
5: getstatic reactor.util.concurrent.MpscLinkedQueue.CONSUMER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.lazySet:(Ljava/lang/Object;Ljava/lang/Object;)V
6: aload 3
areturn
end local 3 7: StackMap locals: reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
StackMap stack:
aload 1
aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.producerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
if_acmpeq 13
8: StackMap locals:
StackMap stack:
aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lvNext:()Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
dup
astore 2
ifnull 8
9: aload 2
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.getAndNullValue:()Ljava/lang/Object;
astore 3
start local 3 10: aload 1
aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.soNext:(Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;)V
11: getstatic reactor.util.concurrent.MpscLinkedQueue.CONSUMER_NODE_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.lazySet:(Ljava/lang/Object;Ljava/lang/Object;)V
12: aload 3
areturn
end local 3 13: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
1 14 1 currConsumerNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
2 14 2 nextNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
4 7 3 nextValue TE;
10 13 3 nextValue TE;
Signature: ()TE;
RuntimeVisibleAnnotations:
reactor.util.annotation.Nullable()
public E peek();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.consumerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 1
start local 1 1: aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lvNext:()Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 2
start local 2 2: aload 2
ifnull 4
3: aload 2
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lpValue:()Ljava/lang/Object;
areturn
4: StackMap locals: reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
StackMap stack:
aload 1
aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.producerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
if_acmpeq 7
5: StackMap locals:
StackMap stack:
aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lvNext:()Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
dup
astore 2
ifnull 5
6: aload 2
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lpValue:()Ljava/lang/Object;
areturn
7: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
1 8 1 currConsumerNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
2 8 2 nextNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
Signature: ()TE;
RuntimeVisibleAnnotations:
reactor.util.annotation.Nullable()
public boolean remove(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.UnsupportedOperationException
dup
invokespecial java.lang.UnsupportedOperationException.<init>:()V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
0 1 1 o Ljava/lang/Object;
MethodParameters:
Name Flags
o
public void clear();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
invokevirtual reactor.util.concurrent.MpscLinkedQueue.poll:()Ljava/lang/Object;
ifnull 1
aload 0
invokevirtual reactor.util.concurrent.MpscLinkedQueue.isEmpty:()Z
ifeq 0
1: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=1
start local 0 0: aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.consumerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 1
start local 1 1: aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.producerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 9
4: StackMap locals: reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode int
StackMap stack:
aload 1
invokevirtual reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode.lvNext:()Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
astore 4
start local 4 5: aload 4
aload 1
if_acmpne 7
6: iload 3
ireturn
7: StackMap locals: reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
StackMap stack:
aload 4
astore 1
8: iinc 3 1
end local 4 9: StackMap locals:
StackMap stack:
aload 1
aload 2
if_acmpeq 13
10: aload 1
ifnull 13
11: iload 3
ldc 2147483647
12: if_icmplt 4
13: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
1 14 1 chaserNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
2 14 2 producerNode Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
3 14 3 size I
5 9 4 next Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode<TE;>;
public boolean isEmpty();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.consumerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
aload 0
getfield reactor.util.concurrent.MpscLinkedQueue.producerNode:Lreactor/util/concurrent/MpscLinkedQueue$LinkedQueueNode;
if_acmpne 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 Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
public java.util.Iterator<E> iterator();
descriptor: ()Ljava/util/Iterator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: new java.lang.UnsupportedOperationException
dup
invokespecial java.lang.UnsupportedOperationException.<init>:()V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/util/concurrent/MpscLinkedQueue<TE;>;
Signature: ()Ljava/util/Iterator<TE;>;
}
Signature: <E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/function/BiPredicate<TE;TE;>;
SourceFile: "MpscLinkedQueue.java"
NestMembers:
reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode
InnerClasses:
final LinkedQueueNode = reactor.util.concurrent.MpscLinkedQueue$LinkedQueueNode of reactor.util.concurrent.MpscLinkedQueue