ObservableFlatMap$MergeObserver.smali
.class final Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;
.super Ljava/util/concurrent/atomic/AtomicInteger;
.source "ObservableFlatMap.java"
# interfaces
.implements Lio/reactivex/disposables/Disposable;
.implements Lio/reactivex/Observer;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/internal/operators/observable/ObservableFlatMap;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "MergeObserver"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
"U:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/atomic/AtomicInteger;",
"Lio/reactivex/disposables/Disposable;",
"Lio/reactivex/Observer<",
"TT;>;"
}
.end annotation
# static fields
.field static final CANCELLED:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.annotation system Ldalvik/annotation/Signature;
value = {
"[",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"**>;"
}
.end annotation
.end field
.field static final EMPTY:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.annotation system Ldalvik/annotation/Signature;
value = {
"[",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"**>;"
}
.end annotation
.end field
.field private static final serialVersionUID:J = -0x1d634c9cafb5cc5aL
# instance fields
.field final actual:Lio/reactivex/Observer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/Observer<",
"-TU;>;"
}
.end annotation
.end field
.field final bufferSize:I
.field volatile cancelled:Z
.field final delayErrors:Z
.field volatile done:Z
.field final errors:Lio/reactivex/internal/util/AtomicThrowable;
.field lastId:J
.field lastIndex:I
.field final mapper:Lio/reactivex/functions/Function;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/functions/Function<",
"-TT;+",
"Lio/reactivex/ObservableSource<",
"+TU;>;>;"
}
.end annotation
.end field
.field final maxConcurrency:I
.field final observers:Ljava/util/concurrent/atomic/AtomicReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReference<",
"[",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"**>;>;"
}
.end annotation
.end field
.field volatile queue:Lio/reactivex/internal/fuseable/SimplePlainQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/fuseable/SimplePlainQueue<",
"TU;>;"
}
.end annotation
.end field
.field s:Lio/reactivex/disposables/Disposable;
.field sources:Ljava/util/Queue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Queue<",
"Lio/reactivex/ObservableSource<",
"+TU;>;>;"
}
.end annotation
.end field
.field uniqueId:J
.field wip:I
# direct methods
.method static constructor <clinit>()V
.registers 2
.line 78
const/4 v0, 0x0
new-array v1, v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
sput-object v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->EMPTY:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 80
new-array v0, v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
sput-object v0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->CANCELLED:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
return-void
.end method
.method constructor <init>(Lio/reactivex/Observer;Lio/reactivex/functions/Function;ZII)V
.registers 8
.param p3, "delayErrors" # Z
.param p4, "maxConcurrency" # I
.param p5, "bufferSize" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TU;>;",
"Lio/reactivex/functions/Function<",
"-TT;+",
"Lio/reactivex/ObservableSource<",
"+TU;>;>;ZII)V"
}
.end annotation
.line 93
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "actual":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.local p2, "mapper":Lio/reactivex/functions/Function;, "Lio/reactivex/functions/Function<-TT;+Lio/reactivex/ObservableSource<+TU;>;>;"
invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V
.line 72
new-instance v0, Lio/reactivex/internal/util/AtomicThrowable;
invoke-direct {v0}, Lio/reactivex/internal/util/AtomicThrowable;-><init>()V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
.line 94
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
.line 95
iput-object p2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->mapper:Lio/reactivex/functions/Function;
.line 96
iput-boolean p3, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->delayErrors:Z
.line 97
iput p4, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
.line 98
iput p5, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->bufferSize:I
.line 99
const v0, 0x7fffffff
if-eq p4, v0, :cond_20
.line 100
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0, p4}, Ljava/util/ArrayDeque;-><init>(I)V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->sources:Ljava/util/Queue;
.line 102
:cond_20
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
sget-object v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->EMPTY:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
.line 103
return-void
.end method
# virtual methods
.method addInner(Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"TT;TU;>;)Z"
}
.end annotation
.line 171
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
:goto_0
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 172
.local v0, "a":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
sget-object v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->CANCELLED:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
const/4 v2, 0x0
if-ne v0, v1, :cond_11
.line 173
invoke-virtual {p1}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->dispose()V
.line 174
return v2
.line 176
:cond_11
array-length v1, v0
.line 177
.local v1, "n":I
add-int/lit8 v3, v1, 0x1
new-array v3, v3, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 178
.local v3, "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
invoke-static {v0, v2, v3, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 179
aput-object p1, v3, v1
.line 180
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v2, v0, v3}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_25
.line 181
const/4 v2, 0x1
return v2
.line 183
.end local v0 # "a":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.end local v1 # "n":I
.end local v3 # "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
:cond_25
goto :goto_0
.end method
.method checkTerminate()Z
.registers 4
.line 487
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->cancelled:Z
const/4 v1, 0x1
if-eqz v0, :cond_6
.line 488
return v1
.line 490
:cond_6
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v0}, Lio/reactivex/internal/util/AtomicThrowable;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Throwable;
.line 491
.local v0, "e":Ljava/lang/Throwable;
iget-boolean v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->delayErrors:Z
if-nez v2, :cond_27
if-eqz v0, :cond_27
.line 492
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->disposeAll()Z
.line 493
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v2}, Lio/reactivex/internal/util/AtomicThrowable;->terminate()Ljava/lang/Throwable;
move-result-object v0
.line 494
sget-object v2, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
if-eq v0, v2, :cond_26
.line 495
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
invoke-interface {v2, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
.line 497
:cond_26
return v1
.line 499
:cond_27
const/4 v1, 0x0
return v1
.end method
.method public dispose()V
.registers 3
.line 305
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->cancelled:Z
if-nez v0, :cond_1c
.line 306
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->cancelled:Z
.line 307
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->disposeAll()Z
move-result v0
if-eqz v0, :cond_1c
.line 308
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v0}, Lio/reactivex/internal/util/AtomicThrowable;->terminate()Ljava/lang/Throwable;
move-result-object v0
.line 309
.local v0, "ex":Ljava/lang/Throwable;
if-eqz v0, :cond_1c
sget-object v1, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
if-eq v0, v1, :cond_1c
.line 310
invoke-static {v0}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 314
.end local v0 # "ex":Ljava/lang/Throwable;
:cond_1c
return-void
.end method
.method disposeAll()Z
.registers 5
.line 503
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->s:Lio/reactivex/disposables/Disposable;
invoke-interface {v0}, Lio/reactivex/disposables/Disposable;->dispose()V
.line 504
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 505
.local v0, "a":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
sget-object v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->CANCELLED:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
const/4 v2, 0x0
if-eq v0, v1, :cond_2c
.line 506
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
move-object v0, v1
check-cast v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 507
sget-object v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->CANCELLED:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
if-eq v0, v1, :cond_2c
.line 508
array-length v1, v0
:goto_20
if-ge v2, v1, :cond_2a
aget-object v3, v0, v2
.line 509
.local v3, "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
invoke-virtual {v3}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->dispose()V
.line 508
.end local v3 # "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
add-int/lit8 v2, v2, 0x1
goto :goto_20
.line 511
:cond_2a
const/4 v1, 0x1
return v1
.line 514
:cond_2c
return v2
.end method
.method drain()V
.registers 2
.line 322
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->getAndIncrement()I
move-result v0
if-nez v0, :cond_9
.line 323
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drainLoop()V
.line 325
:cond_9
return-void
.end method
.method drainLoop()V
.registers 18
.line 328
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
move-object/from16 v1, p0
iget-object v2, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
.line 329
.local v2, "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
const/4 v0, 0x1
move v3, v0
.line 331
.local v3, "missed":I
:goto_6
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v0
if-eqz v0, :cond_d
.line 332
return-void
.line 334
:cond_d
iget-object v0, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->queue:Lio/reactivex/internal/fuseable/SimplePlainQueue;
.line 336
.local v0, "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
if-eqz v0, :cond_27
.line 340
:goto_11
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v4
if-eqz v4, :cond_18
.line 341
return-void
.line 344
:cond_18
invoke-interface {v0}, Lio/reactivex/internal/fuseable/SimplePlainQueue;->poll()Ljava/lang/Object;
move-result-object v4
.line 346
.local v4, "o":Ljava/lang/Object;, "TU;"
if-nez v4, :cond_23
.line 347
nop
.line 352
if-nez v4, :cond_22
.line 353
goto :goto_27
.line 355
.end local v4 # "o":Ljava/lang/Object;, "TU;"
:cond_22
goto :goto_11
.line 350
.restart local v4 # "o":Ljava/lang/Object;, "TU;"
:cond_23
invoke-interface {v2, v4}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
goto :goto_11
.line 358
.end local v4 # "o":Ljava/lang/Object;, "TU;"
:cond_27
:goto_27
iget-boolean v4, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
.line 359
.local v4, "d":Z
iget-object v5, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->queue:Lio/reactivex/internal/fuseable/SimplePlainQueue;
.line 360
.end local v0 # "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
.local v5, "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
iget-object v0, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
move-object v6, v0
check-cast v6, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 361
.local v6, "inner":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
array-length v7, v6
.line 363
.local v7, "n":I
if-eqz v4, :cond_55
if-eqz v5, :cond_3f
invoke-interface {v5}, Lio/reactivex/internal/fuseable/SimplePlainQueue;->isEmpty()Z
move-result v0
if-eqz v0, :cond_55
:cond_3f
if-nez v7, :cond_55
.line 364
iget-object v0, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v0}, Lio/reactivex/internal/util/AtomicThrowable;->terminate()Ljava/lang/Throwable;
move-result-object v0
.line 365
.local v0, "ex":Ljava/lang/Throwable;
sget-object v8, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
if-eq v0, v8, :cond_54
.line 366
if-nez v0, :cond_51
.line 367
invoke-interface {v2}, Lio/reactivex/Observer;->onComplete()V
goto :goto_54
.line 369
:cond_51
invoke-interface {v2, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
.line 372
:cond_54
:goto_54
return-void
.line 375
.end local v0 # "ex":Ljava/lang/Throwable;
:cond_55
const/4 v0, 0x0
.line 376
.local v0, "innerCompleted":Z
if-eqz v7, :cond_10d
.line 377
iget-wide v8, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastId:J
.line 378
.local v8, "startId":J
iget v10, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastIndex:I
.line 380
.local v10, "index":I
if-le v7, v10, :cond_66
aget-object v11, v6, v10
iget-wide v11, v11, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->id:J
cmp-long v13, v11, v8
if-eqz v13, :cond_87
.line 381
:cond_66
if-gt v7, v10, :cond_69
.line 382
const/4 v10, 0x0
.line 384
:cond_69
move v11, v10
.line 385
.local v11, "j":I
const/4 v12, 0x0
.local v12, "i":I
:goto_6b
if-ge v12, v7, :cond_7e
.line 386
aget-object v13, v6, v11
iget-wide v13, v13, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->id:J
cmp-long v15, v13, v8
if-nez v15, :cond_76
.line 387
goto :goto_7e
.line 389
:cond_76
add-int/lit8 v11, v11, 0x1
.line 390
if-ne v11, v7, :cond_7b
.line 391
const/4 v11, 0x0
.line 385
:cond_7b
add-int/lit8 v12, v12, 0x1
goto :goto_6b
.line 394
.end local v12 # "i":I
:cond_7e
:goto_7e
move v10, v11
.line 395
iput v11, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastIndex:I
.line 396
aget-object v12, v6, v11
iget-wide v12, v12, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->id:J
iput-wide v12, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastId:J
.line 399
.end local v11 # "j":I
:cond_87
move v11, v10
.line 401
.restart local v11 # "j":I
const/4 v12, 0x0
move v13, v12
move v12, v11
move v11, v0
.end local v0 # "innerCompleted":Z
.local v11, "innerCompleted":Z
.local v12, "j":I
.local v13, "i":I
:goto_8c
if-ge v13, v7, :cond_102
.line 402
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v0
if-eqz v0, :cond_95
.line 403
return-void
.line 406
:cond_95
aget-object v14, v6, v12
.line 409
.local v14, "is":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
:goto_97
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v0
if-eqz v0, :cond_9e
.line 410
return-void
.line 412
:cond_9e
iget-object v15, v14, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 413
.local v15, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
if-nez v15, :cond_a3
.line 414
goto :goto_ae
.line 419
:cond_a3
:try_start_a3
invoke-interface {v15}, Lio/reactivex/internal/fuseable/SimpleQueue;->poll()Ljava/lang/Object;
move-result-object v0
:try_end_a7
.catchall {:try_start_a3 .. :try_end_a7} :catchall_dd
.line 431
.local v0, "o":Ljava/lang/Object;, "TU;"
nop
.line 432
if-nez v0, :cond_d3
.line 433
nop
.line 442
if-nez v0, :cond_d2
.line 443
nop
.line 446
.end local v0 # "o":Ljava/lang/Object;, "TU;"
.end local v15 # "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
:goto_ae
iget-boolean v0, v14, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->done:Z
.line 447
.local v0, "innerDone":Z
iget-object v15, v14, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 448
.local v15, "innerQueue":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
if-eqz v0, :cond_c7
if-eqz v15, :cond_bc
invoke-interface {v15}, Lio/reactivex/internal/fuseable/SimpleQueue;->isEmpty()Z
move-result v16
if-eqz v16, :cond_c7
.line 449
:cond_bc
invoke-virtual {v1, v14}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->removeInner(Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)V
.line 450
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v16
if-eqz v16, :cond_c6
.line 451
return-void
.line 453
:cond_c6
const/4 v11, 0x1
.line 456
:cond_c7
add-int/lit8 v12, v12, 0x1
.line 457
if-ne v12, v7, :cond_cf
.line 458
const/4 v12, 0x0
move-object/from16 v16, v2
goto :goto_fd
.line 457
:cond_cf
move-object/from16 v16, v2
goto :goto_fd
.line 445
.end local v0 # "innerDone":Z
.end local v15 # "innerQueue":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
:cond_d2
goto :goto_97
.line 436
.local v0, "o":Ljava/lang/Object;, "TU;"
.local v15, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
:cond_d3
invoke-interface {v2, v0}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 438
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v16
if-eqz v16, :cond_a3
.line 439
return-void
.line 420
.end local v0 # "o":Ljava/lang/Object;, "TU;"
:catchall_dd
move-exception v0
move-object/from16 v16, v0
move-object/from16 v0, v16
.line 421
.local v0, "ex":Ljava/lang/Throwable;
invoke-static {v0}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 422
invoke-virtual {v14}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->dispose()V
.line 423
move-object/from16 v16, v2
.end local v2 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.local v16, "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
iget-object v2, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v2, v0}, Lio/reactivex/internal/util/AtomicThrowable;->addThrowable(Ljava/lang/Throwable;)Z
.line 424
invoke-virtual/range {p0 .. p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->checkTerminate()Z
move-result v2
if-eqz v2, :cond_f6
.line 425
return-void
.line 427
:cond_f6
invoke-virtual {v1, v14}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->removeInner(Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)V
.line 428
const/4 v2, 0x1
.line 429
.end local v11 # "innerCompleted":Z
.local v2, "innerCompleted":Z
add-int/lit8 v13, v13, 0x1
.line 430
move v11, v2
.line 401
.end local v0 # "ex":Ljava/lang/Throwable;
.end local v2 # "innerCompleted":Z
.end local v14 # "is":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
.end local v15 # "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
.restart local v11 # "innerCompleted":Z
:goto_fd
add-int/lit8 v13, v13, 0x1
move-object/from16 v2, v16
goto :goto_8c
.end local v16 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.local v2, "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
:cond_102
move-object/from16 v16, v2
.line 461
.end local v2 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.end local v13 # "i":I
.restart local v16 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
iput v12, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastIndex:I
.line 462
aget-object v0, v6, v12
iget-wide v13, v0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->id:J
iput-wide v13, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->lastId:J
goto :goto_110
.line 376
.end local v8 # "startId":J
.end local v10 # "index":I
.end local v11 # "innerCompleted":Z
.end local v12 # "j":I
.end local v16 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.local v0, "innerCompleted":Z
.restart local v2 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
:cond_10d
move-object/from16 v16, v2
.end local v2 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
.restart local v16 # "child":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TU;>;"
move v11, v0
.line 465
.end local v0 # "innerCompleted":Z
.restart local v11 # "innerCompleted":Z
:goto_110
if-eqz v11, :cond_138
.line 466
iget v0, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
const v2, 0x7fffffff
if-eq v0, v2, :cond_134
.line 468
monitor-enter p0
.line 469
:try_start_11a
iget-object v0, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->sources:Ljava/util/Queue;
invoke-interface {v0}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/reactivex/ObservableSource;
.line 470
.local v0, "p":Lio/reactivex/ObservableSource;, "Lio/reactivex/ObservableSource<+TU;>;"
if-nez v0, :cond_12c
.line 471
iget v2, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
add-int/lit8 v2, v2, -0x1
iput v2, v1, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
.line 472
monitor-exit p0
goto :goto_134
.line 474
:cond_12c
monitor-exit p0
:try_end_12d
.catchall {:try_start_11a .. :try_end_12d} :catchall_131
.line 475
invoke-virtual {v1, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->subscribeInner(Lio/reactivex/ObservableSource;)V
.line 476
.end local v0 # "p":Lio/reactivex/ObservableSource;, "Lio/reactivex/ObservableSource<+TU;>;"
goto :goto_134
.line 474
:catchall_131
move-exception v0
:try_start_132
monitor-exit p0
:try_end_133
.catchall {:try_start_132 .. :try_end_133} :catchall_131
throw v0
.line 331
.end local v4 # "d":Z
.end local v5 # "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
.end local v6 # "inner":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.end local v7 # "n":I
.end local v11 # "innerCompleted":Z
:cond_134
:goto_134
move-object/from16 v2, v16
goto/16 :goto_6
.line 479
.restart local v4 # "d":Z
.restart local v5 # "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
.restart local v6 # "inner":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.restart local v7 # "n":I
.restart local v11 # "innerCompleted":Z
:cond_138
neg-int v0, v3
invoke-virtual {v1, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->addAndGet(I)I
move-result v3
.line 480
if-nez v3, :cond_141
.line 481
nop
.line 484
.end local v4 # "d":Z
.end local v5 # "svq":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
.end local v6 # "inner":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.end local v7 # "n":I
.end local v11 # "innerCompleted":Z
return-void
.line 483
:cond_141
move-object/from16 v2, v16
goto/16 :goto_6
.end method
.method public isDisposed()Z
.registers 2
.line 318
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->cancelled:Z
return v0
.end method
.method public onComplete()V
.registers 2
.line 296
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
if-eqz v0, :cond_5
.line 297
return-void
.line 299
:cond_5
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
.line 300
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drain()V
.line 301
return-void
.end method
.method public onError(Ljava/lang/Throwable;)V
.registers 3
.param p1, "t" # Ljava/lang/Throwable;
.line 282
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
if-eqz v0, :cond_8
.line 283
invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 284
return-void
.line 286
:cond_8
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v0, p1}, Lio/reactivex/internal/util/AtomicThrowable;->addThrowable(Ljava/lang/Throwable;)Z
move-result v0
if-eqz v0, :cond_17
.line 287
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
.line 288
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drain()V
goto :goto_1a
.line 290
:cond_17
invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 292
:goto_1a
return-void
.end method
.method public onNext(Ljava/lang/Object;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 116
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "t":Ljava/lang/Object;, "TT;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->done:Z
if-eqz v0, :cond_5
.line 117
return-void
.line 121
:cond_5
:try_start_5
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->mapper:Lio/reactivex/functions/Function;
invoke-interface {v0, p1}, Lio/reactivex/functions/Function;->apply(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
const-string v1, "The mapper returned a null ObservableSource"
invoke-static {v0, v1}, Lio/reactivex/internal/functions/ObjectHelper;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/reactivex/ObservableSource;
:try_end_13
.catchall {:try_start_5 .. :try_end_13} :catchall_38
.line 127
.local v0, "p":Lio/reactivex/ObservableSource;, "Lio/reactivex/ObservableSource<+TU;>;"
nop
.line 129
iget v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
const v2, 0x7fffffff
if-eq v1, v2, :cond_34
.line 130
monitor-enter p0
.line 131
:try_start_1c
iget v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
iget v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
if-ne v1, v2, :cond_29
.line 132
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->sources:Ljava/util/Queue;
invoke-interface {v1, v0}, Ljava/util/Queue;->offer(Ljava/lang/Object;)Z
.line 133
monitor-exit p0
return-void
.line 135
:cond_29
iget v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
add-int/lit8 v1, v1, 0x1
iput v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
.line 136
monitor-exit p0
goto :goto_34
:catchall_31
move-exception v1
monitor-exit p0
:try_end_33
.catchall {:try_start_1c .. :try_end_33} :catchall_31
throw v1
.line 139
:cond_34
:goto_34
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->subscribeInner(Lio/reactivex/ObservableSource;)V
.line 140
return-void
.line 122
.end local v0 # "p":Lio/reactivex/ObservableSource;, "Lio/reactivex/ObservableSource<+TU;>;"
:catchall_38
move-exception v0
.line 123
.local v0, "e":Ljava/lang/Throwable;
invoke-static {v0}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 124
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->s:Lio/reactivex/disposables/Disposable;
invoke-interface {v1}, Lio/reactivex/disposables/Disposable;->dispose()V
.line 125
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->onError(Ljava/lang/Throwable;)V
.line 126
return-void
.end method
.method public onSubscribe(Lio/reactivex/disposables/Disposable;)V
.registers 3
.param p1, "s" # Lio/reactivex/disposables/Disposable;
.line 107
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->s:Lio/reactivex/disposables/Disposable;
invoke-static {v0, p1}, Lio/reactivex/internal/disposables/DisposableHelper;->validate(Lio/reactivex/disposables/Disposable;Lio/reactivex/disposables/Disposable;)Z
move-result v0
if-eqz v0, :cond_f
.line 108
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->s:Lio/reactivex/disposables/Disposable;
.line 109
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
invoke-interface {v0, p0}, Lio/reactivex/Observer;->onSubscribe(Lio/reactivex/disposables/Disposable;)V
.line 111
:cond_f
return-void
.end method
.method removeInner(Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"TT;TU;>;)V"
}
.end annotation
.line 188
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
:goto_0
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 189
.local v0, "a":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
array-length v1, v0
.line 190
.local v1, "n":I
if-nez v1, :cond_c
.line 191
return-void
.line 193
:cond_c
const/4 v2, -0x1
.line 194
.local v2, "j":I
const/4 v3, 0x0
.local v3, "i":I
:goto_e
if-ge v3, v1, :cond_19
.line 195
aget-object v4, v0, v3
if-ne v4, p1, :cond_16
.line 196
move v2, v3
.line 197
goto :goto_19
.line 194
:cond_16
add-int/lit8 v3, v3, 0x1
goto :goto_e
.line 200
.end local v3 # "i":I
:cond_19
:goto_19
if-gez v2, :cond_1c
.line 201
return-void
.line 204
:cond_1c
const/4 v3, 0x1
if-ne v1, v3, :cond_22
.line 205
sget-object v3, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->EMPTY:[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.local v3, "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
goto :goto_33
.line 207
.end local v3 # "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
:cond_22
add-int/lit8 v4, v1, -0x1
new-array v4, v4, [Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
.line 208
.local v4, "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
const/4 v5, 0x0
invoke-static {v0, v5, v4, v5, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 209
add-int/lit8 v5, v2, 0x1
sub-int v6, v1, v2
sub-int/2addr v6, v3
invoke-static {v0, v5, v4, v2, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move-object v3, v4
.line 211
.end local v4 # "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.restart local v3 # "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
:goto_33
iget-object v4, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->observers:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v4, v0, v3}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_3c
.line 212
return-void
.line 214
.end local v0 # "a":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
.end local v1 # "n":I
.end local v2 # "j":I
.end local v3 # "b":[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "[Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<**>;"
:cond_3c
goto :goto_0
.end method
.method subscribeInner(Lio/reactivex/ObservableSource;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/ObservableSource<",
"+TU;>;)V"
}
.end annotation
.line 145
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "p":Lio/reactivex/ObservableSource;, "Lio/reactivex/ObservableSource<+TU;>;"
:goto_0
instance-of v0, p1, Ljava/util/concurrent/Callable;
if-eqz v0, :cond_2a
.line 146
move-object v0, p1
check-cast v0, Ljava/util/concurrent/Callable;
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->tryEmitScalar(Ljava/util/concurrent/Callable;)V
.line 148
iget v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
const v1, 0x7fffffff
if-eq v0, v1, :cond_3f
.line 149
monitor-enter p0
.line 150
:try_start_12
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->sources:Ljava/util/Queue;
invoke-interface {v0}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/reactivex/ObservableSource;
move-object p1, v0
.line 151
if-nez p1, :cond_25
.line 152
iget v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->wip:I
.line 153
monitor-exit p0
goto :goto_3f
.line 155
:cond_25
monitor-exit p0
goto :goto_0
:catchall_27
move-exception v0
monitor-exit p0
:try_end_29
.catchall {:try_start_12 .. :try_end_29} :catchall_27
throw v0
.line 160
:cond_2a
new-instance v0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;
iget-wide v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->uniqueId:J
const-wide/16 v3, 0x1
add-long/2addr v3, v1
iput-wide v3, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->uniqueId:J
invoke-direct {v0, p0, v1, v2}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;-><init>(Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;J)V
.line 161
.local v0, "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->addInner(Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)Z
move-result v1
if-eqz v1, :cond_3f
.line 162
invoke-interface {p1, v0}, Lio/reactivex/ObservableSource;->subscribe(Lio/reactivex/Observer;)V
.line 167
.end local v0 # "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
:cond_3f
:goto_3f
return-void
.end method
.method tryEmit(Ljava/lang/Object;Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(TU;",
"Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<",
"TT;TU;>;)V"
}
.end annotation
.line 261
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "value":Ljava/lang/Object;, "TU;"
.local p2, "inner":Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver<TT;TU;>;"
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->get()I
move-result v0
if-nez v0, :cond_1a
const/4 v0, 0x0
const/4 v1, 0x1
invoke-virtual {p0, v0, v1}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->compareAndSet(II)Z
move-result v0
if-eqz v0, :cond_1a
.line 262
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
invoke-interface {v0, p1}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 263
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->decrementAndGet()I
move-result v0
if-nez v0, :cond_32
.line 264
return-void
.line 267
:cond_1a
iget-object v0, p2, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 268
.local v0, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
if-nez v0, :cond_28
.line 269
new-instance v1, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
iget v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->bufferSize:I
invoke-direct {v1, v2}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;-><init>(I)V
move-object v0, v1
.line 270
iput-object v0, p2, Lio/reactivex/internal/operators/observable/ObservableFlatMap$InnerObserver;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 272
:cond_28
invoke-interface {v0, p1}, Lio/reactivex/internal/fuseable/SimpleQueue;->offer(Ljava/lang/Object;)Z
.line 273
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->getAndIncrement()I
move-result v1
if-eqz v1, :cond_32
.line 274
return-void
.line 277
.end local v0 # "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TU;>;"
:cond_32
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drainLoop()V
.line 278
return-void
.end method
.method tryEmitScalar(Ljava/util/concurrent/Callable;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/Callable<",
"+TU;>;)V"
}
.end annotation
.line 220
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;, "Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver<TT;TU;>;"
.local p1, "value":Ljava/util/concurrent/Callable;, "Ljava/util/concurrent/Callable<+TU;>;"
:try_start_0
invoke-interface {p1}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object;
move-result-object v0
:try_end_4
.catchall {:try_start_0 .. :try_end_4} :catchall_5c
.line 226
.local v0, "u":Ljava/lang/Object;, "TU;"
nop
.line 228
if-nez v0, :cond_8
.line 229
return-void
.line 233
:cond_8
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->get()I
move-result v1
if-nez v1, :cond_22
const/4 v1, 0x0
const/4 v2, 0x1
invoke-virtual {p0, v1, v2}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->compareAndSet(II)Z
move-result v1
if-eqz v1, :cond_22
.line 234
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->actual:Lio/reactivex/Observer;
invoke-interface {v1, v0}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 235
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->decrementAndGet()I
move-result v1
if-nez v1, :cond_58
.line 236
return-void
.line 239
:cond_22
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->queue:Lio/reactivex/internal/fuseable/SimplePlainQueue;
.line 240
.local v1, "q":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
if-nez v1, :cond_40
.line 241
iget v2, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
const v3, 0x7fffffff
if-ne v2, v3, :cond_36
.line 242
new-instance v2, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
iget v3, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->bufferSize:I
invoke-direct {v2, v3}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;-><init>(I)V
move-object v1, v2
goto :goto_3e
.line 244
:cond_36
new-instance v2, Lio/reactivex/internal/queue/SpscArrayQueue;
iget v3, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->maxConcurrency:I
invoke-direct {v2, v3}, Lio/reactivex/internal/queue/SpscArrayQueue;-><init>(I)V
move-object v1, v2
.line 246
:goto_3e
iput-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->queue:Lio/reactivex/internal/fuseable/SimplePlainQueue;
.line 249
:cond_40
invoke-interface {v1, v0}, Lio/reactivex/internal/fuseable/SimplePlainQueue;->offer(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_51
.line 250
new-instance v2, Ljava/lang/IllegalStateException;
const-string v3, "Scalar queue full?!"
invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
invoke-virtual {p0, v2}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->onError(Ljava/lang/Throwable;)V
.line 251
return-void
.line 253
:cond_51
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->getAndIncrement()I
move-result v2
if-eqz v2, :cond_58
.line 254
return-void
.line 257
.end local v1 # "q":Lio/reactivex/internal/fuseable/SimplePlainQueue;, "Lio/reactivex/internal/fuseable/SimplePlainQueue<TU;>;"
:cond_58
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drainLoop()V
.line 258
return-void
.line 221
.end local v0 # "u":Ljava/lang/Object;, "TU;"
:catchall_5c
move-exception v0
.line 222
.local v0, "ex":Ljava/lang/Throwable;
invoke-static {v0}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 223
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->errors:Lio/reactivex/internal/util/AtomicThrowable;
invoke-virtual {v1, v0}, Lio/reactivex/internal/util/AtomicThrowable;->addThrowable(Ljava/lang/Throwable;)Z
.line 224
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableFlatMap$MergeObserver;->drain()V
.line 225
return-void
.end method