public final class io.reactivex.internal.queue.SpscLinkedArrayQueue<T> implements io.reactivex.internal.fuseable.SimplePlainQueue<T>
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.queue.SpscLinkedArrayQueue
super_class: java.lang.Object
{
static final int MAX_LOOK_AHEAD_STEP;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
final java.util.concurrent.atomic.AtomicLong producerIndex;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0010) ACC_FINAL
int producerLookAheadStep;
descriptor: I
flags: (0x0000)
long producerLookAhead;
descriptor: J
flags: (0x0000)
final int producerMask;
descriptor: I
flags: (0x0010) ACC_FINAL
java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object> producerBuffer;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceArray;
flags: (0x0000)
Signature: Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
final int consumerMask;
descriptor: I
flags: (0x0010) ACC_FINAL
java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object> consumerBuffer;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceArray;
flags: (0x0000)
Signature: Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
final java.util.concurrent.atomic.AtomicLong consumerIndex;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0010) ACC_FINAL
private static final java.lang.Object HAS_NEXT;
descriptor: Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc "jctools.spsc.max.lookahead.step"
sipush 4096
invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;I)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
putstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.MAX_LOOK_AHEAD_STEP:I
1: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.HAS_NEXT:Ljava/lang/Object;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
3: bipush 8
iload 1
invokestatic java.lang.Math.max:(II)I
invokestatic io.reactivex.internal.util.Pow2.roundToPowerOfTwo:(I)I
istore 2
start local 2 4: iload 2
iconst_1
isub
istore 3
start local 3 5: new java.util.concurrent.atomic.AtomicReferenceArray
dup
iload 2
iconst_1
iadd
invokespecial java.util.concurrent.atomic.AtomicReferenceArray.<init>:(I)V
astore 4
start local 4 6: aload 0
aload 4
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
7: aload 0
iload 3
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerMask:I
8: aload 0
iload 2
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.adjustLookAheadStep:(I)V
9: aload 0
aload 4
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
10: aload 0
iload 3
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerMask:I
11: aload 0
iload 3
iconst_1
isub
i2l
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAhead:J
12: aload 0
lconst_0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soProducerIndex:(J)V
13: return
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 Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 14 1 bufferSize I
4 14 2 p2capacity I
5 14 3 mask I
6 14 4 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
MethodParameters:
Name Flags
bufferSize final
public boolean offer();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=9, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
ldc "Null is not a valid element"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
astore 2
start local 2 3: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lpProducerIndex:()J
lstore 3
start local 3 4: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerMask:I
istore 5
start local 5 5: lload 3
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 6
start local 6 6: lload 3
aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAhead:J
lcmp
ifge 8
7: aload 0
aload 2
aload 1
lload 3
iload 6
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.writeToQueue:(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
ireturn
8: StackMap locals: io.reactivex.internal.queue.SpscLinkedArrayQueue java.lang.Object java.util.concurrent.atomic.AtomicReferenceArray long int int
StackMap stack:
aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAheadStep:I
istore 7
start local 7 9: lload 3
iload 7
i2l
ladd
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 8
start local 8 10: aload 2
iload 8
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
ifnonnull 13
11: aload 0
lload 3
iload 7
i2l
ladd
lconst_1
lsub
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAhead:J
12: aload 0
aload 2
aload 1
lload 3
iload 6
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.writeToQueue:(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
ireturn
13: StackMap locals: int int
StackMap stack:
aload 2
lload 3
lconst_1
ladd
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
ifnonnull 15
14: aload 0
aload 2
aload 1
lload 3
iload 6
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.writeToQueue:(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
ireturn
15: StackMap locals:
StackMap stack:
aload 0
aload 2
lload 3
iload 6
aload 1
iload 5
i2l
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.resize:(Ljava/util/concurrent/atomic/AtomicReferenceArray;JILjava/lang/Object;J)V
16: iconst_1
ireturn
end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 17 1 e TT;
3 17 2 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
4 17 3 index J
5 17 5 mask I
6 17 6 offset I
9 17 7 lookAheadStep I
10 17 8 lookAheadElementOffset I
Signature: (TT;)Z
MethodParameters:
Name Flags
e final
private boolean writeToQueue(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, T, long, );
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 5 0: aload 1
iload 5
aload 2
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
1: aload 0
lload 3
lconst_1
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soProducerIndex:(J)V
2: iconst_1
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 3 1 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 3 2 e TT;
0 3 3 index J
0 3 5 offset I
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;TT;JI)Z
MethodParameters:
Name Flags
buffer final
e final
index final
offset final
private void resize(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, long, int, T, );
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;JILjava/lang/Object;J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 5 start local 6 0: aload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.length:()I
istore 8
start local 8 1: new java.util.concurrent.atomic.AtomicReferenceArray
dup
iload 8
invokespecial java.util.concurrent.atomic.AtomicReferenceArray.<init>:(I)V
astore 9
start local 9 2: aload 0
aload 9
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
3: aload 0
lload 2
lload 6
ladd
lconst_1
lsub
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAhead:J
4: aload 9
iload 4
aload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
5: aload 0
aload 1
aload 9
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soNext:(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray;)V
6: aload 1
iload 4
getstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.HAS_NEXT:Ljava/lang/Object;
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
7: aload 0
lload 2
lconst_1
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soProducerIndex:(J)V
8: return
end local 9 end local 8 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 9 1 oldBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 9 2 currIndex J
0 9 4 offset I
0 9 5 e TT;
0 9 6 mask J
1 9 8 capacity I
2 9 9 newBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;JITT;J)V
MethodParameters:
Name Flags
oldBuffer final
currIndex final
offset final
e final
mask final
private void soNext(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>);
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.length:()I
iconst_1
isub
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcDirectOffset:(I)I
aload 2
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 2 1 curr Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 2 2 next Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;)V
MethodParameters:
Name Flags
curr
next
private java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object> lvNextBufferAndUnlink(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, int);
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/util/concurrent/atomic/AtomicReferenceArray;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 2
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcDirectOffset:(I)I
istore 3
start local 3 1: aload 1
iload 3
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
checkcast java.util.concurrent.atomic.AtomicReferenceArray
astore 4
start local 4 2: aload 1
iload 3
aconst_null
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
3: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 4 1 curr Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 4 2 nextIndex I
1 4 3 nextOffset I
2 4 4 nextBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;I)Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
MethodParameters:
Name Flags
curr
nextIndex
public T poll();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
astore 1
start local 1 1: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lpConsumerIndex:()J
lstore 2
start local 2 2: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerMask:I
istore 4
start local 4 3: lload 2
iload 4
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 5
start local 5 4: aload 1
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
astore 6
start local 6 5: aload 6
getstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.HAS_NEXT:Ljava/lang/Object;
if_acmpne 6
iconst_1
goto 7
StackMap locals: io.reactivex.internal.queue.SpscLinkedArrayQueue java.util.concurrent.atomic.AtomicReferenceArray long int int java.lang.Object
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: istore 7
start local 7 8: aload 6
ifnull 12
iload 7
ifne 12
9: aload 1
iload 5
aconst_null
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
10: aload 0
lload 2
lconst_1
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soConsumerIndex:(J)V
11: aload 6
areturn
12: StackMap locals: int
StackMap stack:
iload 7
ifeq 14
13: aload 0
aload 0
aload 1
iload 4
iconst_1
iadd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvNextBufferAndUnlink:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/util/concurrent/atomic/AtomicReferenceArray;
lload 2
iload 4
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.newBufferPoll:(Ljava/util/concurrent/atomic/AtomicReferenceArray;JI)Ljava/lang/Object;
areturn
14: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
1 15 1 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
2 15 2 index J
3 15 4 mask I
4 15 5 offset I
5 15 6 e Ljava/lang/Object;
8 15 7 isNextBuffer Z
Signature: ()TT;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.Nullable()
private T newBufferPoll(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, long, );
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;JI)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
aload 1
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
1: lload 2
iload 4
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 5
start local 5 2: aload 1
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
astore 6
start local 6 3: aload 6
ifnull 6
4: aload 1
iload 5
aconst_null
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
5: aload 0
lload 2
lconst_1
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soConsumerIndex:(J)V
6: StackMap locals: int java.lang.Object
StackMap stack:
aload 6
areturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 7 1 nextBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 7 2 index J
0 7 4 mask I
2 7 5 offsetInNew I
3 7 6 n TT;
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;JI)TT;
MethodParameters:
Name Flags
nextBuffer
index final
mask final
public T peek();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
astore 1
start local 1 1: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lpConsumerIndex:()J
lstore 2
start local 2 2: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerMask:I
istore 4
start local 4 3: lload 2
iload 4
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 5
start local 5 4: aload 1
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
astore 6
start local 6 5: aload 6
getstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.HAS_NEXT:Ljava/lang/Object;
if_acmpne 7
6: aload 0
aload 0
aload 1
iload 4
iconst_1
iadd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvNextBufferAndUnlink:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/util/concurrent/atomic/AtomicReferenceArray;
lload 2
iload 4
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.newBufferPeek:(Ljava/util/concurrent/atomic/AtomicReferenceArray;JI)Ljava/lang/Object;
areturn
7: StackMap locals: io.reactivex.internal.queue.SpscLinkedArrayQueue java.util.concurrent.atomic.AtomicReferenceArray long int int java.lang.Object
StackMap stack:
aload 6
areturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
1 8 1 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
2 8 2 index J
3 8 4 mask I
4 8 5 offset I
5 8 6 e Ljava/lang/Object;
Signature: ()TT;
private T newBufferPeek(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, long, );
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;JI)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
aload 1
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
1: lload 2
iload 4
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 5
start local 5 2: aload 1
iload 5
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
areturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 3 1 nextBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 3 2 index J
0 3 4 mask I
2 3 5 offsetInNew I
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;JI)TT;
MethodParameters:
Name Flags
nextBuffer
index final
mask final
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 io.reactivex.internal.queue.SpscLinkedArrayQueue.poll:()Ljava/lang/Object;
ifnonnull 0
aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.isEmpty:()Z
ifeq 0
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=1
start local 0 0: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvConsumerIndex:()J
lstore 1
start local 1 1: StackMap locals: long
StackMap stack:
lload 1
lstore 3
start local 3 2: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvProducerIndex:()J
lstore 5
start local 5 3: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvConsumerIndex:()J
lstore 1
4: lload 3
lload 1
lcmp
ifne 1
5: lload 5
lload 1
lsub
l2i
ireturn
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
1 6 1 after J
2 6 3 before J
3 6 5 currentProducerIndex J
public boolean isEmpty();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvProducerIndex:()J
aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvConsumerIndex:()J
lcmp
ifne 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 Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
private void adjustLookAheadStep(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
iconst_4
idiv
getstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.MAX_LOOK_AHEAD_STEP:I
invokestatic java.lang.Math.min:(II)I
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerLookAheadStep:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 2 1 capacity I
MethodParameters:
Name Flags
capacity
private long lvProducerIndex();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
private long lvConsumerIndex();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
private long lpProducerIndex();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
private long lpConsumerIndex();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
private void soProducerIndex(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokevirtual java.util.concurrent.atomic.AtomicLong.lazySet:(J)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 2 1 v J
MethodParameters:
Name Flags
v
private void soConsumerIndex(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokevirtual java.util.concurrent.atomic.AtomicLong.lazySet:(J)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 2 1 v J
MethodParameters:
Name Flags
v
private static int calcWrappedOffset(long, int);
descriptor: (JI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 2 0: lload 0
l2i
iload 2
iand
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcDirectOffset:(I)I
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 index J
0 1 2 mask I
MethodParameters:
Name Flags
index
mask
private static int calcDirectOffset(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iload 0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 index I
MethodParameters:
Name Flags
index
private static void soElement(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, int, );
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.lazySet:(ILjava/lang/Object;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 2 1 offset I
0 2 2 e Ljava/lang/Object;
Signature: (Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;ILjava/lang/Object;)V
MethodParameters:
Name Flags
buffer
offset
e
private static <E> lvElement(java.util.concurrent.atomic.AtomicReferenceArray<java.lang.Object>, int);
descriptor: (Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.get:(I)Ljava/lang/Object;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
0 1 1 offset I
Signature: <E:Ljava/lang/Object;>(Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;I)Ljava/lang/Object;
MethodParameters:
Name Flags
buffer
offset
public boolean offer(T, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
astore 3
start local 3 1: aload 0
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.lvProducerIndex:()J
lstore 4
start local 4 2: aload 0
getfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerMask:I
istore 6
start local 6 3: lload 4
ldc 2
ladd
iload 6
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 7
start local 7 4: aload 3
iload 7
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.lvElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;I)Ljava/lang/Object;
ifnonnull 10
5: lload 4
iload 6
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 7
6: aload 3
iload 7
iconst_1
iadd
aload 2
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
7: aload 3
iload 7
aload 1
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
8: aload 0
lload 4
ldc 2
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soProducerIndex:(J)V
9: goto 19
10: StackMap locals: io.reactivex.internal.queue.SpscLinkedArrayQueue java.lang.Object java.lang.Object java.util.concurrent.atomic.AtomicReferenceArray long int int
StackMap stack:
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.length:()I
istore 8
start local 8 11: new java.util.concurrent.atomic.AtomicReferenceArray
dup
iload 8
invokespecial java.util.concurrent.atomic.AtomicReferenceArray.<init>:(I)V
astore 9
start local 9 12: aload 0
aload 9
putfield io.reactivex.internal.queue.SpscLinkedArrayQueue.producerBuffer:Ljava/util/concurrent/atomic/AtomicReferenceArray;
13: lload 4
iload 6
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.calcWrappedOffset:(JI)I
istore 7
14: aload 9
iload 7
iconst_1
iadd
aload 2
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
15: aload 9
iload 7
aload 1
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
16: aload 0
aload 3
aload 9
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soNext:(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray;)V
17: aload 3
iload 7
getstatic io.reactivex.internal.queue.SpscLinkedArrayQueue.HAS_NEXT:Ljava/lang/Object;
invokestatic io.reactivex.internal.queue.SpscLinkedArrayQueue.soElement:(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;)V
18: aload 0
lload 4
ldc 2
ladd
invokevirtual io.reactivex.internal.queue.SpscLinkedArrayQueue.soProducerIndex:(J)V
end local 9 end local 8 19: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;
0 20 1 first TT;
0 20 2 second TT;
1 20 3 buffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
2 20 4 p J
3 20 6 m I
4 20 7 pi I
11 19 8 capacity I
12 19 9 newBuffer Ljava/util/concurrent/atomic/AtomicReferenceArray<Ljava/lang/Object;>;
Signature: (TT;TT;)Z
MethodParameters:
Name Flags
first
second
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lio/reactivex/internal/fuseable/SimplePlainQueue<TT;>;
SourceFile: "SpscLinkedArrayQueue.java"