BackpressureHelper.smali
.class public final Lio/reactivex/internal/util/BackpressureHelper;
.super Ljava/lang/Object;
.source "BackpressureHelper.java"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>()V
.registers 3
.line 24
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 25
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "No instances!"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static add(Ljava/util/concurrent/atomic/AtomicLong;J)J
.registers 8
.param p0, "requested" # Ljava/util/concurrent/atomic/AtomicLong;
.param p1, "n" # J
.line 67
:goto_0
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 68
.local v0, "r":J
const-wide v2, 0x7fffffffffffffffL
cmp-long v4, v0, v2
if-nez v4, :cond_e
.line 69
return-wide v2
.line 71
:cond_e
invoke-static {v0, v1, p1, p2}, Lio/reactivex/internal/util/BackpressureHelper;->addCap(JJ)J
move-result-wide v2
.line 72
.local v2, "u":J
invoke-virtual {p0, v0, v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z
move-result v4
if-eqz v4, :cond_19
.line 73
return-wide v0
.line 75
.end local v0 # "r":J
.end local v2 # "u":J
:cond_19
goto :goto_0
.end method
.method public static addCancel(Ljava/util/concurrent/atomic/AtomicLong;J)J
.registers 8
.param p0, "requested" # Ljava/util/concurrent/atomic/AtomicLong;
.param p1, "n" # J
.line 88
:goto_0
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 89
.local v0, "r":J
const-wide/high16 v2, -0x8000000000000000L
cmp-long v4, v0, v2
if-nez v4, :cond_b
.line 90
return-wide v2
.line 92
:cond_b
const-wide v2, 0x7fffffffffffffffL
cmp-long v4, v0, v2
if-nez v4, :cond_15
.line 93
return-wide v2
.line 95
:cond_15
invoke-static {v0, v1, p1, p2}, Lio/reactivex/internal/util/BackpressureHelper;->addCap(JJ)J
move-result-wide v2
.line 96
.local v2, "u":J
invoke-virtual {p0, v0, v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z
move-result v4
if-eqz v4, :cond_20
.line 97
return-wide v0
.line 99
.end local v0 # "r":J
.end local v2 # "u":J
:cond_20
goto :goto_0
.end method
.method public static addCap(JJ)J
.registers 9
.param p0, "a" # J
.param p2, "b" # J
.line 35
add-long v0, p0, p2
.line 36
.local v0, "u":J
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-gez v4, :cond_e
.line 37
const-wide v2, 0x7fffffffffffffffL
return-wide v2
.line 39
:cond_e
return-wide v0
.end method
.method public static multiplyCap(JJ)J
.registers 11
.param p0, "a" # J
.param p2, "b" # J
.line 49
mul-long v0, p0, p2
.line 50
.local v0, "u":J
or-long v2, p0, p2
const/16 v4, 0x1f
ushr-long/2addr v2, v4
const-wide/16 v4, 0x0
cmp-long v6, v2, v4
if-eqz v6, :cond_19
.line 51
div-long v2, v0, p0
cmp-long v4, v2, p2
if-eqz v4, :cond_19
.line 52
const-wide v2, 0x7fffffffffffffffL
return-wide v2
.line 55
:cond_19
return-wide v0
.end method
.method public static produced(Ljava/util/concurrent/atomic/AtomicLong;J)J
.registers 10
.param p0, "requested" # Ljava/util/concurrent/atomic/AtomicLong;
.param p1, "n" # J
.line 110
:goto_0
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 111
.local v0, "current":J
const-wide v2, 0x7fffffffffffffffL
cmp-long v4, v0, v2
if-nez v4, :cond_e
.line 112
return-wide v2
.line 114
:cond_e
sub-long v2, v0, p1
.line 115
.local v2, "update":J
const-wide/16 v4, 0x0
cmp-long v6, v2, v4
if-gez v6, :cond_31
.line 116
new-instance v4, Ljava/lang/IllegalStateException;
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "More produced than requested: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
invoke-static {v4}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 117
const-wide/16 v2, 0x0
.line 119
:cond_31
invoke-virtual {p0, v0, v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z
move-result v4
if-eqz v4, :cond_38
.line 120
return-wide v2
.line 122
.end local v0 # "current":J
.end local v2 # "update":J
:cond_38
goto :goto_0
.end method
.method public static producedCancel(Ljava/util/concurrent/atomic/AtomicLong;J)J
.registers 10
.param p0, "requested" # Ljava/util/concurrent/atomic/AtomicLong;
.param p1, "n" # J
.line 134
:goto_0
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 135
.local v0, "current":J
const-wide/high16 v2, -0x8000000000000000L
cmp-long v4, v0, v2
if-nez v4, :cond_b
.line 136
return-wide v2
.line 138
:cond_b
const-wide v2, 0x7fffffffffffffffL
cmp-long v4, v0, v2
if-nez v4, :cond_15
.line 139
return-wide v2
.line 141
:cond_15
sub-long v2, v0, p1
.line 142
.local v2, "update":J
const-wide/16 v4, 0x0
cmp-long v6, v2, v4
if-gez v6, :cond_38
.line 143
new-instance v4, Ljava/lang/IllegalStateException;
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "More produced than requested: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
invoke-static {v4}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 144
const-wide/16 v2, 0x0
.line 146
:cond_38
invoke-virtual {p0, v0, v1, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z
move-result v4
if-eqz v4, :cond_3f
.line 147
return-wide v2
.line 149
.end local v0 # "current":J
.end local v2 # "update":J
:cond_3f
goto :goto_0
.end method