FlowableReplay$UnboundedReplayBuffer.smali
.class final Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;
.super Ljava/util/ArrayList;
.source "FlowableReplay.java"
# interfaces
.implements Lio/reactivex/internal/operators/flowable/FlowableReplay$ReplayBuffer;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/internal/operators/flowable/FlowableReplay;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "UnboundedReplayBuffer"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/util/ArrayList<",
"Ljava/lang/Object;",
">;",
"Lio/reactivex/internal/operators/flowable/FlowableReplay$ReplayBuffer<",
"TT;>;"
}
.end annotation
# static fields
.field private static final serialVersionUID:J = 0x62057d556fa2a2d8L
# instance fields
.field volatile size:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(I)V
.registers 2
.param p1, "capacityHint" # I
.line 645
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer<TT;>;"
invoke-direct {p0, p1}, Ljava/util/ArrayList;-><init>(I)V
.line 646
return-void
.end method
# virtual methods
.method public complete()V
.registers 2
.line 661
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer<TT;>;"
invoke-static {}, Lio/reactivex/internal/util/NotificationLite;->complete()Ljava/lang/Object;
move-result-object v0
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->add(Ljava/lang/Object;)Z
.line 662
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
.line 663
return-void
.end method
.method public error(Ljava/lang/Throwable;)V
.registers 3
.param p1, "e" # Ljava/lang/Throwable;
.line 655
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer<TT;>;"
invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->error(Ljava/lang/Throwable;)Ljava/lang/Object;
move-result-object v0
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->add(Ljava/lang/Object;)Z
.line 656
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
.line 657
return-void
.end method
.method public next(Ljava/lang/Object;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 649
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer<TT;>;"
.local p1, "value":Ljava/lang/Object;, "TT;"
invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->next(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->add(Ljava/lang/Object;)Z
.line 650
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
.line 651
return-void
.end method
.method public replay(Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;)V
.registers 16
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription<",
"TT;>;)V"
}
.end annotation
.line 667
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer<TT;>;"
.local p1, "output":Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;, "Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription<TT;>;"
monitor-enter p1
.line 668
:try_start_1
iget-boolean v0, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->emitting:Z
const/4 v1, 0x1
if-eqz v0, :cond_a
.line 669
iput-boolean v1, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->missed:Z
.line 670
monitor-exit p1
return-void
.line 672
:cond_a
iput-boolean v1, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->emitting:Z
.line 673
monitor-exit p1
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_8d
.line 674
iget-object v0, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->child:Lorg/reactivestreams/Subscriber;
.line 677
.local v0, "child":Lorg/reactivestreams/Subscriber;, "Lorg/reactivestreams/Subscriber<-TT;>;"
:goto_f
invoke-virtual {p1}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->isDisposed()Z
move-result v1
if-eqz v1, :cond_16
.line 678
return-void
.line 680
:cond_16
iget v1, p0, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->size:I
.line 682
.local v1, "sourceIndex":I
invoke-virtual {p1}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->index()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/Integer;
.line 683
.local v2, "destinationIndexObject":Ljava/lang/Integer;
const/4 v3, 0x0
if-eqz v2, :cond_26
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v4
goto :goto_27
:cond_26
const/4 v4, 0x0
.line 685
.local v4, "destinationIndex":I
:goto_27
invoke-virtual {p1}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->get()J
move-result-wide v5
.line 686
.local v5, "r":J
move-wide v7, v5
.line 687
.local v7, "r0":J
const-wide/16 v9, 0x0
.line 689
.local v9, "e":J
:goto_2e
const-wide/16 v11, 0x0
cmp-long v13, v5, v11
if-eqz v13, :cond_67
if-ge v4, v1, :cond_67
.line 690
invoke-virtual {p0, v4}, Lio/reactivex/internal/operators/flowable/FlowableReplay$UnboundedReplayBuffer;->get(I)Ljava/lang/Object;
move-result-object v11
.line 692
.local v11, "o":Ljava/lang/Object;
:try_start_3a
invoke-static {v11, v0}, Lio/reactivex/internal/util/NotificationLite;->accept(Ljava/lang/Object;Lorg/reactivestreams/Subscriber;)Z
move-result v12
:try_end_3e
.catchall {:try_start_3a .. :try_end_3e} :catchall_50
if-eqz v12, :cond_41
.line 693
return-void
.line 702
:cond_41
nop
.line 703
invoke-virtual {p1}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->isDisposed()Z
move-result v12
if-eqz v12, :cond_49
.line 704
return-void
.line 706
:cond_49
add-int/lit8 v4, v4, 0x1
.line 707
const-wide/16 v12, 0x1
sub-long/2addr v5, v12
.line 708
add-long/2addr v9, v12
.line 709
.end local v11 # "o":Ljava/lang/Object;
goto :goto_2e
.line 695
.restart local v11 # "o":Ljava/lang/Object;
:catchall_50
move-exception v3
.line 696
.local v3, "err":Ljava/lang/Throwable;
invoke-static {v3}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 697
invoke-virtual {p1}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->dispose()V
.line 698
invoke-static {v11}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
move-result v12
if-nez v12, :cond_66
invoke-static {v11}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
move-result v12
if-nez v12, :cond_66
.line 699
invoke-interface {v0, v3}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 701
:cond_66
return-void
.line 710
.end local v3 # "err":Ljava/lang/Throwable;
.end local v11 # "o":Ljava/lang/Object;
:cond_67
cmp-long v13, v9, v11
if-eqz v13, :cond_7d
.line 711
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v11
iput-object v11, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->index:Ljava/lang/Object;
.line 712
const-wide v11, 0x7fffffffffffffffL
cmp-long v13, v7, v11
if-eqz v13, :cond_7d
.line 713
invoke-virtual {p1, v9, v10}, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->produced(J)J
.line 717
:cond_7d
monitor-enter p1
.line 718
:try_start_7e
iget-boolean v11, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->missed:Z
if-nez v11, :cond_86
.line 719
iput-boolean v3, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->emitting:Z
.line 720
monitor-exit p1
return-void
.line 722
:cond_86
iput-boolean v3, p1, Lio/reactivex/internal/operators/flowable/FlowableReplay$InnerSubscription;->missed:Z
.line 723
monitor-exit p1
.line 724
.end local v1 # "sourceIndex":I
.end local v2 # "destinationIndexObject":Ljava/lang/Integer;
.end local v4 # "destinationIndex":I
.end local v5 # "r":J
.end local v7 # "r0":J
.end local v9 # "e":J
goto :goto_f
.line 723
.restart local v1 # "sourceIndex":I
.restart local v2 # "destinationIndexObject":Ljava/lang/Integer;
.restart local v4 # "destinationIndex":I
.restart local v5 # "r":J
.restart local v7 # "r0":J
.restart local v9 # "e":J
:catchall_8a
move-exception v3
monitor-exit p1
:try_end_8c
.catchall {:try_start_7e .. :try_end_8c} :catchall_8a
throw v3
.line 673
.end local v0 # "child":Lorg/reactivestreams/Subscriber;, "Lorg/reactivestreams/Subscriber<-TT;>;"
.end local v1 # "sourceIndex":I
.end local v2 # "destinationIndexObject":Ljava/lang/Integer;
.end local v4 # "destinationIndex":I
.end local v5 # "r":J
.end local v7 # "r0":J
.end local v9 # "e":J
:catchall_8d
move-exception v0
:try_start_8e
monitor-exit p1
:try_end_8f
.catchall {:try_start_8e .. :try_end_8f} :catchall_8d
goto :goto_91
:goto_90
throw v0
:goto_91
goto :goto_90
.end method