public class io.reactivex.internal.subscriptions.SubscriptionArbiter extends java.util.concurrent.atomic.AtomicInteger implements org.reactivestreams.Subscription
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.reactivex.internal.subscriptions.SubscriptionArbiter
super_class: java.util.concurrent.atomic.AtomicInteger
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -2189523197179400958
org.reactivestreams.Subscription actual;
descriptor: Lorg/reactivestreams/Subscription;
flags: (0x0000)
long requested;
descriptor: J
flags: (0x0000)
final java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription> missedSubscription;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lorg/reactivestreams/Subscription;>;
final java.util.concurrent.atomic.AtomicLong missedRequested;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0010) ACC_FINAL
final java.util.concurrent.atomic.AtomicLong missedProduced;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0010) ACC_FINAL
final boolean cancelOnReplace;
descriptor: Z
flags: (0x0010) ACC_FINAL
volatile boolean cancelled;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
protected boolean unbounded;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
public void <init>(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
1: aload 0
iload 1
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelOnReplace:Z
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedSubscription:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedProduced:Ljava/util/concurrent/atomic/AtomicLong;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
0 6 1 cancelOnReplace Z
MethodParameters:
Name Flags
cancelOnReplace
public final void setSubscription(org.reactivestreams.Subscription);
descriptor: (Lorg/reactivestreams/Subscription;)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelled:Z
ifeq 3
1: aload 1
invokeinterface org.reactivestreams.Subscription.cancel:()V
2: return
3: StackMap locals:
StackMap stack:
aload 1
ldc "s is null"
invokestatic io.reactivex.internal.functions.ObjectHelper.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
4: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.get:()I
ifne 15
aload 0
iconst_0
iconst_1
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.compareAndSet:(II)Z
ifeq 15
5: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
astore 2
start local 2 6: aload 2
ifnull 8
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelOnReplace:Z
ifeq 8
7: aload 2
invokeinterface org.reactivestreams.Subscription.cancel:()V
8: StackMap locals: org.reactivestreams.Subscription
StackMap stack:
aload 0
aload 1
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
9: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
lstore 3
start local 3 10: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.decrementAndGet:()I
ifeq 12
11: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drainLoop:()V
12: StackMap locals: long
StackMap stack:
lload 3
lconst_0
lcmp
ifeq 14
13: aload 1
lload 3
invokeinterface org.reactivestreams.Subscription.request:(J)V
14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 15: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedSubscription:Ljava/util/concurrent/atomic/AtomicReference;
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.reactivestreams.Subscription
astore 2
start local 2 16: aload 2
ifnull 18
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelOnReplace:Z
ifeq 18
17: aload 2
invokeinterface org.reactivestreams.Subscription.cancel:()V
18: StackMap locals: org.reactivestreams.Subscription
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drain:()V
19: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
0 20 1 s Lorg/reactivestreams/Subscription;
6 15 2 a Lorg/reactivestreams/Subscription;
10 15 3 r J
16 20 2 a Lorg/reactivestreams/Subscription;
MethodParameters:
Name Flags
s
public final void request(long);
descriptor: (J)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: lload 1
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.validate:(J)Z
ifeq 18
1: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.unbounded:Z
ifeq 3
2: return
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.get:()I
ifne 16
aload 0
iconst_0
iconst_1
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.compareAndSet:(II)Z
ifeq 16
4: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
lstore 3
start local 3 5: lload 3
ldc 9223372036854775807
lcmp
ifeq 10
6: lload 3
lload 1
invokestatic io.reactivex.internal.util.BackpressureHelper.addCap:(JJ)J
lstore 3
7: aload 0
lload 3
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
8: lload 3
ldc 9223372036854775807
lcmp
ifne 10
9: aload 0
iconst_1
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.unbounded:Z
10: StackMap locals: long
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
astore 5
start local 5 11: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.decrementAndGet:()I
ifeq 13
12: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drainLoop:()V
13: StackMap locals: org.reactivestreams.Subscription
StackMap stack:
aload 5
ifnull 15
14: aload 5
lload 1
invokeinterface org.reactivestreams.Subscription.request:(J)V
15: StackMap locals:
StackMap stack:
return
end local 5 end local 3 16: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokestatic io.reactivex.internal.util.BackpressureHelper.add:(Ljava/util/concurrent/atomic/AtomicLong;J)J
pop2
17: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drain:()V
18: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
0 19 1 n J
5 16 3 r J
11 16 5 a Lorg/reactivestreams/Subscription;
MethodParameters:
Name Flags
n
public final void produced(long);
descriptor: (J)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.unbounded:Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.get:()I
ifne 14
aload 0
iconst_0
iconst_1
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.compareAndSet:(II)Z
ifeq 14
3: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
lstore 3
start local 3 4: lload 3
ldc 9223372036854775807
lcmp
ifeq 10
5: lload 3
lload 1
lsub
lstore 5
start local 5 6: lload 5
lconst_0
lcmp
ifge 9
7: lload 5
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.reportMoreProduced:(J)V
8: lconst_0
lstore 5
9: StackMap locals: long long
StackMap stack:
aload 0
lload 5
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
end local 5 10: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.decrementAndGet:()I
ifne 12
11: return
12: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drainLoop:()V
13: return
end local 3 14: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedProduced:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokestatic io.reactivex.internal.util.BackpressureHelper.add:(Ljava/util/concurrent/atomic/AtomicLong;J)J
pop2
15: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drain:()V
16: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
0 17 1 n J
4 14 3 r J
6 10 5 u J
MethodParameters:
Name Flags
n
public void cancel();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelled:Z
ifne 3
1: aload 0
iconst_1
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelled:Z
2: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drain:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
final void drain();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.getAndIncrement:()I
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.drainLoop:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
final void drainLoop();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=17, args_size=1
start local 0 0: iconst_1
istore 1
start local 1 1: lconst_0
lstore 2
start local 2 2: aconst_null
astore 4
start local 4 3: StackMap locals: int long org.reactivestreams.Subscription
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedSubscription:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.reactivestreams.Subscription
astore 5
start local 5 4: aload 5
ifnull 6
5: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedSubscription:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.reactivestreams.Subscription
astore 5
6: StackMap locals: org.reactivestreams.Subscription
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 6
start local 6 7: lload 6
lconst_0
lcmp
ifeq 9
8: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
lconst_0
invokevirtual java.util.concurrent.atomic.AtomicLong.getAndSet:(J)J
lstore 6
9: StackMap locals: long
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedProduced:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 8
start local 8 10: lload 8
lconst_0
lcmp
ifeq 12
11: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.missedProduced:Ljava/util/concurrent/atomic/AtomicLong;
lconst_0
invokevirtual java.util.concurrent.atomic.AtomicLong.getAndSet:(J)J
lstore 8
12: StackMap locals: long
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
astore 10
start local 10 13: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelled:Z
ifeq 20
14: aload 10
ifnull 17
15: aload 10
invokeinterface org.reactivestreams.Subscription.cancel:()V
16: aload 0
aconst_null
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
17: StackMap locals: org.reactivestreams.Subscription
StackMap stack:
aload 5
ifnull 43
18: aload 5
invokeinterface org.reactivestreams.Subscription.cancel:()V
19: goto 43
20: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
lstore 11
start local 11 21: lload 11
ldc 9223372036854775807
lcmp
ifeq 32
22: lload 11
lload 6
invokestatic io.reactivex.internal.util.BackpressureHelper.addCap:(JJ)J
lstore 13
start local 13 23: lload 13
ldc 9223372036854775807
lcmp
ifeq 30
24: lload 13
lload 8
lsub
lstore 15
start local 15 25: lload 15
lconst_0
lcmp
ifge 28
26: lload 15
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.reportMoreProduced:(J)V
27: lconst_0
lstore 15
28: StackMap locals: long long long
StackMap stack:
lload 15
lstore 11
end local 15 29: goto 31
30: StackMap locals:
StackMap stack:
lload 13
lstore 11
31: StackMap locals:
StackMap stack:
aload 0
lload 11
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.requested:J
end local 13 32: StackMap locals:
StackMap stack:
aload 5
ifnull 40
33: aload 10
ifnull 35
aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelOnReplace:Z
ifeq 35
34: aload 10
invokeinterface org.reactivestreams.Subscription.cancel:()V
35: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield io.reactivex.internal.subscriptions.SubscriptionArbiter.actual:Lorg/reactivestreams/Subscription;
36: lload 11
lconst_0
lcmp
ifeq 43
37: lload 2
lload 11
invokestatic io.reactivex.internal.util.BackpressureHelper.addCap:(JJ)J
lstore 2
38: aload 5
astore 4
39: goto 43
StackMap locals:
StackMap stack:
40: aload 10
ifnull 43
lload 6
lconst_0
lcmp
ifeq 43
41: lload 2
lload 6
invokestatic io.reactivex.internal.util.BackpressureHelper.addCap:(JJ)J
lstore 2
42: aload 10
astore 4
end local 11 43: StackMap locals:
StackMap stack:
aload 0
iload 1
ineg
invokevirtual io.reactivex.internal.subscriptions.SubscriptionArbiter.addAndGet:(I)I
istore 1
44: iload 1
ifne 3
45: lload 2
lconst_0
lcmp
ifeq 47
46: aload 4
lload 2
invokeinterface org.reactivestreams.Subscription.request:(J)V
47: StackMap locals:
StackMap stack:
return
end local 10 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 48 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
1 48 1 missed I
2 48 2 requestAmount J
3 48 4 requestTarget Lorg/reactivestreams/Subscription;
4 48 5 ms Lorg/reactivestreams/Subscription;
7 48 6 mr J
10 48 8 mp J
13 48 10 a Lorg/reactivestreams/Subscription;
21 43 11 r J
23 32 13 u J
25 29 15 v J
public final boolean isUnbounded();
descriptor: ()Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.unbounded:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
public final boolean isCancelled();
descriptor: ()Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.subscriptions.SubscriptionArbiter.cancelled:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/subscriptions/SubscriptionArbiter;
}
SourceFile: "SubscriptionArbiter.java"