final class io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber<T> extends io.reactivex.internal.operators.parallel.ParallelRunOn$BaseRunOnSubscriber<T>
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber
super_class: io.reactivex.internal.operators.parallel.ParallelRunOn$BaseRunOnSubscriber
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1075119423897941642
final org.reactivestreams.Subscriber<? super T> downstream;
descriptor: Lorg/reactivestreams/Subscriber;
flags: (0x0010) ACC_FINAL
Signature: Lorg/reactivestreams/Subscriber<-TT;>;
void <init>(org.reactivestreams.Subscriber<? super T>, int, io.reactivex.internal.queue.SpscArrayQueue<T>, io.reactivex.Scheduler$Worker);
descriptor: (Lorg/reactivestreams/Subscriber;ILio/reactivex/internal/queue/SpscArrayQueue;Lio/reactivex/Scheduler$Worker;)V
flags: (0x0000)
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
iload 2
aload 3
aload 4
invokespecial io.reactivex.internal.operators.parallel.ParallelRunOn$BaseRunOnSubscriber.<init>:(ILio/reactivex/internal/queue/SpscArrayQueue;Lio/reactivex/Scheduler$Worker;)V
1: aload 0
aload 1
putfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.downstream:Lorg/reactivestreams/Subscriber;
2: return
end local 4 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/operators/parallel/ParallelRunOn$RunOnSubscriber<TT;>;
0 3 1 actual Lorg/reactivestreams/Subscriber<-TT;>;
0 3 2 prefetch I
0 3 3 queue Lio/reactivex/internal/queue/SpscArrayQueue<TT;>;
0 3 4 worker Lio/reactivex/Scheduler$Worker;
Signature: (Lorg/reactivestreams/Subscriber<-TT;>;ILio/reactivex/internal/queue/SpscArrayQueue<TT;>;Lio/reactivex/Scheduler$Worker;)V
MethodParameters:
Name Flags
actual
prefetch
queue
worker
public void onSubscribe(org.reactivestreams.Subscription);
descriptor: (Lorg/reactivestreams/Subscription;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.upstream:Lorg/reactivestreams/Subscription;
aload 1
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.validate:(Lorg/reactivestreams/Subscription;Lorg/reactivestreams/Subscription;)Z
ifeq 4
1: aload 0
aload 1
putfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.upstream:Lorg/reactivestreams/Subscription;
2: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.downstream:Lorg/reactivestreams/Subscriber;
aload 0
invokeinterface org.reactivestreams.Subscriber.onSubscribe:(Lorg/reactivestreams/Subscription;)V
3: aload 1
aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.prefetch:I
i2l
invokeinterface org.reactivestreams.Subscription.request:(J)V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/reactivex/internal/operators/parallel/ParallelRunOn$RunOnSubscriber<TT;>;
0 5 1 s Lorg/reactivestreams/Subscription;
MethodParameters:
Name Flags
s
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=14, args_size=1
start local 0 0: iconst_1
istore 1
start local 1 1: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.consumed:I
istore 2
start local 2 2: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.queue:Lio/reactivex/internal/queue/SpscArrayQueue;
astore 3
start local 3 3: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.downstream:Lorg/reactivestreams/Subscriber;
astore 4
start local 4 4: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.limit:I
istore 5
start local 5 5: StackMap locals: io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber int int io.reactivex.internal.queue.SpscArrayQueue org.reactivestreams.Subscriber int
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.requested:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 6
start local 6 6: lconst_0
lstore 8
start local 8 7: goto 35
8: StackMap locals: long long
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.cancelled:Z
ifeq 11
9: aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.clear:()V
10: return
11: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.done:Z
istore 10
start local 10 12: iload 10
ifeq 19
13: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.error:Ljava/lang/Throwable;
astore 11
start local 11 14: aload 11
ifnull 19
15: aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.clear:()V
16: aload 4
aload 11
invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
17: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.worker:Lio/reactivex/Scheduler$Worker;
invokevirtual io.reactivex.Scheduler$Worker.dispose:()V
18: return
end local 11 19: StackMap locals: int
StackMap stack:
aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.poll:()Ljava/lang/Object;
astore 11
start local 11 20: aload 11
ifnonnull 21
iconst_1
goto 22
StackMap locals: java.lang.Object
StackMap stack:
21: iconst_0
StackMap locals:
StackMap stack: int
22: istore 12
start local 12 23: iload 10
ifeq 27
iload 12
ifeq 27
24: aload 4
invokeinterface org.reactivestreams.Subscriber.onComplete:()V
25: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.worker:Lio/reactivex/Scheduler$Worker;
invokevirtual io.reactivex.Scheduler$Worker.dispose:()V
26: return
27: StackMap locals: int
StackMap stack:
iload 12
ifeq 29
28: goto 36
29: StackMap locals:
StackMap stack:
aload 4
aload 11
invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
30: lload 8
lconst_1
ladd
lstore 8
31: iinc 2 1
iload 2
istore 13
start local 13 32: iload 13
iload 5
if_icmpne 35
33: iconst_0
istore 2
34: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.upstream:Lorg/reactivestreams/Subscription;
iload 13
i2l
invokeinterface org.reactivestreams.Subscription.request:(J)V
end local 13 end local 12 end local 11 end local 10 35: StackMap locals:
StackMap stack:
lload 8
lload 6
lcmp
ifne 8
36: StackMap locals:
StackMap stack:
lload 8
lload 6
lcmp
ifne 51
37: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.cancelled:Z
ifeq 40
38: aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.clear:()V
39: return
40: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.done:Z
ifeq 51
41: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.error:Ljava/lang/Throwable;
astore 10
start local 10 42: aload 10
ifnull 47
43: aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.clear:()V
44: aload 4
aload 10
invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
45: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.worker:Lio/reactivex/Scheduler$Worker;
invokevirtual io.reactivex.Scheduler$Worker.dispose:()V
46: return
47: StackMap locals: java.lang.Throwable
StackMap stack:
aload 3
invokevirtual io.reactivex.internal.queue.SpscArrayQueue.isEmpty:()Z
ifeq 51
48: aload 4
invokeinterface org.reactivestreams.Subscriber.onComplete:()V
49: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.worker:Lio/reactivex/Scheduler$Worker;
invokevirtual io.reactivex.Scheduler$Worker.dispose:()V
50: return
end local 10 51: StackMap locals:
StackMap stack:
lload 8
lconst_0
lcmp
ifeq 53
lload 6
ldc 9223372036854775807
lcmp
ifeq 53
52: aload 0
getfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.requested:Ljava/util/concurrent/atomic/AtomicLong;
lload 8
lneg
invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
pop2
53: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.get:()I
istore 10
start local 10 54: iload 10
iload 1
if_icmpne 59
55: aload 0
iload 2
putfield io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.consumed:I
56: aload 0
iload 1
ineg
invokevirtual io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber.addAndGet:(I)I
istore 1
57: iload 1
ifne 5
58: goto 61
59: StackMap locals: int
StackMap stack:
iload 10
istore 1
end local 10 end local 8 end local 6 60: goto 5
61: StackMap locals:
StackMap stack:
return
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 62 0 this Lio/reactivex/internal/operators/parallel/ParallelRunOn$RunOnSubscriber<TT;>;
1 62 1 missed I
2 62 2 c I
3 62 3 q Lio/reactivex/internal/queue/SpscArrayQueue<TT;>;
4 62 4 a Lorg/reactivestreams/Subscriber<-TT;>;
5 62 5 lim I
6 60 6 r J
7 60 8 e J
12 35 10 d Z
14 19 11 ex Ljava/lang/Throwable;
20 35 11 v TT;
23 35 12 empty Z
32 35 13 p I
42 51 10 ex Ljava/lang/Throwable;
54 60 10 w I
}
Signature: <T:Ljava/lang/Object;>Lio/reactivex/internal/operators/parallel/ParallelRunOn$BaseRunOnSubscriber<TT;>;
SourceFile: "ParallelRunOn.java"
NestHost: io.reactivex.internal.operators.parallel.ParallelRunOn
InnerClasses:
public abstract Worker = io.reactivex.Scheduler$Worker of io.reactivex.Scheduler
abstract BaseRunOnSubscriber = io.reactivex.internal.operators.parallel.ParallelRunOn$BaseRunOnSubscriber of io.reactivex.internal.operators.parallel.ParallelRunOn
final RunOnSubscriber = io.reactivex.internal.operators.parallel.ParallelRunOn$RunOnSubscriber of io.reactivex.internal.operators.parallel.ParallelRunOn