d.smali
.class public final Lrx/internal/util/atomic/d;
.super Ljava/lang/Object;
.source "SpscUnboundedAtomicArrayQueue.java"
# interfaces
.implements Ljava/util/Queue;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;",
"Ljava/util/Queue",
"<TT;>;"
}
.end annotation
# static fields
.field private static bSa:I
.field private static final bSg:Ljava/lang/Object;
# instance fields
.field private bSb:I
.field private bSc:I
.field private bSd:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReferenceArray",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private bSe:I
.field private bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReferenceArray",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
.field private producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
.field private producerLookAhead:J
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
.line 34
const-string v0, "jctools.spsc.max.lookahead.step"
const/16 v1, 0x1000
invoke-static {v0, v1}, Ljava/lang/Integer;->getInteger(Ljava/lang/String;I)Ljava/lang/Integer;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
sput v0, Lrx/internal/util/atomic/d;->bSa:I
.line 43
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
sput-object v0, Lrx/internal/util/atomic/d;->bSg:Ljava/lang/Object;
return-void
.end method
.method public constructor <init>(I)V
.registers 6
.prologue
.line 45
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 46
const/16 v0, 0x8
invoke-static {v0, p1}, Ljava/lang/Math;->max(II)I
move-result v0
invoke-static {v0}, Lrx/internal/util/a/c;->fi(I)I
move-result v0
.line 47
add-int/lit8 v1, v0, -0x1
.line 48
new-instance v2, Ljava/util/concurrent/atomic/AtomicLong;
invoke-direct {v2}, Ljava/util/concurrent/atomic/AtomicLong;-><init>()V
iput-object v2, p0, Lrx/internal/util/atomic/d;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
.line 49
new-instance v2, Ljava/util/concurrent/atomic/AtomicLong;
invoke-direct {v2}, Ljava/util/concurrent/atomic/AtomicLong;-><init>()V
iput-object v2, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
.line 50
new-instance v2, Ljava/util/concurrent/atomic/AtomicReferenceArray;
add-int/lit8 v3, v0, 0x1
invoke-direct {v2, v3}, Ljava/util/concurrent/atomic/AtomicReferenceArray;-><init>(I)V
.line 51
iput-object v2, p0, Lrx/internal/util/atomic/d;->bSd:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 52
iput v1, p0, Lrx/internal/util/atomic/d;->bSc:I
.line 1216
div-int/lit8 v0, v0, 0x4
sget v3, Lrx/internal/util/atomic/d;->bSa:I
invoke-static {v0, v3}, Ljava/lang/Math;->min(II)I
move-result v0
iput v0, p0, Lrx/internal/util/atomic/d;->bSb:I
.line 54
iput-object v2, p0, Lrx/internal/util/atomic/d;->bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 55
iput v1, p0, Lrx/internal/util/atomic/d;->bSe:I
.line 56
add-int/lit8 v0, v1, -0x1
int-to-long v0, v0
iput-wide v0, p0, Lrx/internal/util/atomic/d;->producerLookAhead:J
.line 57
const-wide/16 v0, 0x0
invoke-direct {p0, v0, v1}, Lrx/internal/util/atomic/d;->soProducerIndex(J)V
.line 58
return-void
.end method
.method private static a(Ljava/util/concurrent/atomic/AtomicReferenceArray;)Ljava/util/concurrent/atomic/AtomicReferenceArray;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/atomic/AtomicReferenceArray",
"<",
"Ljava/lang/Object;",
">;)",
"Ljava/util/concurrent/atomic/AtomicReferenceArray",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.prologue
.line 117
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I
move-result v0
add-int/lit8 v0, v0, -0x1
.line 8254
invoke-virtual {p0, v0}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
.line 117
check-cast v0, Ljava/util/concurrent/atomic/AtomicReferenceArray;
return-object v0
.end method
.method private a(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/atomic/AtomicReferenceArray",
"<",
"Ljava/lang/Object;",
">;TT;JI)Z"
}
.end annotation
.prologue
.line 94
const-wide/16 v0, 0x1
add-long/2addr v0, p3
invoke-direct {p0, v0, v1}, Lrx/internal/util/atomic/d;->soProducerIndex(J)V
.line 7250
invoke-virtual {p1, p5, p2}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
.line 96
const/4 v0, 0x1
return v0
.end method
.method private soConsumerIndex(J)V
.registers 4
.prologue
.line 240
iget-object v0, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0, p1, p2}, Ljava/util/concurrent/atomic/AtomicLong;->lazySet(J)V
.line 241
return-void
.end method
.method private soProducerIndex(J)V
.registers 4
.prologue
.line 236
iget-object v0, p0, Lrx/internal/util/atomic/d;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0, p1, p2}, Ljava/util/concurrent/atomic/AtomicLong;->lazySet(J)V
.line 237
return-void
.end method
# virtual methods
.method public final add(Ljava/lang/Object;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)Z"
}
.end annotation
.prologue
.line 304
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final addAll(Ljava/util/Collection;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<+TT;>;)Z"
}
.end annotation
.prologue
.line 289
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final clear()V
.registers 2
.prologue
.line 181
:cond_0
invoke-virtual {p0}, Lrx/internal/util/atomic/d;->poll()Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_0
invoke-virtual {p0}, Lrx/internal/util/atomic/d;->isEmpty()Z
move-result v0
if-eqz v0, :cond_0
.line 182
return-void
.end method
.method public final contains(Ljava/lang/Object;)Z
.registers 3
.prologue
.line 264
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final containsAll(Ljava/util/Collection;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
.prologue
.line 284
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final element()Ljava/lang/Object;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.prologue
.line 314
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final isEmpty()Z
.registers 5
.prologue
.line 212
.line 17220
iget-object v0, p0, Lrx/internal/util/atomic/d;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 17224
iget-object v2, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v2
.line 212
cmp-long v0, v0, v2
if-nez v0, :cond_12
const/4 v0, 0x1
:goto_11
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method
.method public final iterator()Ljava/util/Iterator;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Iterator",
"<TT;>;"
}
.end annotation
.prologue
.line 259
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final offer(Ljava/lang/Object;)Z
.registers 14
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)Z"
}
.end annotation
.prologue
const-wide/16 v10, 0x1
.line 67
if-nez p1, :cond_a
.line 68
new-instance v0, Ljava/lang/NullPointerException;
invoke-direct {v0}, Ljava/lang/NullPointerException;-><init>()V
throw v0
.line 71
:cond_a
iget-object v2, p0, Lrx/internal/util/atomic/d;->bSd:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 1228
iget-object v0, p0, Lrx/internal/util/atomic/d;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v4
.line 73
iget v0, p0, Lrx/internal/util/atomic/d;->bSc:I
.line 1244
long-to-int v1, v4
and-int v6, v1, v0
.line 75
iget-wide v8, p0, Lrx/internal/util/atomic/d;->producerLookAhead:J
cmp-long v1, v4, v8
if-gez v1, :cond_24
move-object v1, p0
move-object v3, p1
.line 76
invoke-direct/range {v1 .. v6}, Lrx/internal/util/atomic/d;->a(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
move-result v0
.line 88
:goto_23
return v0
.line 78
:cond_24
iget v1, p0, Lrx/internal/util/atomic/d;->bSb:I
.line 80
int-to-long v8, v1
add-long/2addr v8, v4
.line 2244
long-to-int v3, v8
and-int/2addr v3, v0
.line 2254
invoke-virtual {v2, v3}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v3
.line 81
if-nez v3, :cond_3c
.line 82
int-to-long v0, v1
add-long/2addr v0, v4
sub-long/2addr v0, v10
iput-wide v0, p0, Lrx/internal/util/atomic/d;->producerLookAhead:J
move-object v1, p0
move-object v3, p1
.line 83
invoke-direct/range {v1 .. v6}, Lrx/internal/util/atomic/d;->a(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
move-result v0
goto :goto_23
.line 84
:cond_3c
add-long v8, v4, v10
.line 3244
long-to-int v1, v8
and-int/2addr v1, v0
.line 3254
invoke-virtual {v2, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v1
.line 84
if-eqz v1, :cond_4d
move-object v1, p0
move-object v3, p1
.line 85
invoke-direct/range {v1 .. v6}, Lrx/internal/util/atomic/d;->a(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z
move-result v0
goto :goto_23
.line 87
:cond_4d
int-to-long v0, v0
.line 4101
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I
move-result v3
.line 4102
new-instance v7, Ljava/util/concurrent/atomic/AtomicReferenceArray;
invoke-direct {v7, v3}, Ljava/util/concurrent/atomic/AtomicReferenceArray;-><init>(I)V
.line 4103
iput-object v7, p0, Lrx/internal/util/atomic/d;->bSd:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 4104
add-long/2addr v0, v4
sub-long/2addr v0, v10
iput-wide v0, p0, Lrx/internal/util/atomic/d;->producerLookAhead:J
.line 4105
add-long v0, v4, v10
invoke-direct {p0, v0, v1}, Lrx/internal/util/atomic/d;->soProducerIndex(J)V
.line 4250
invoke-virtual {v7, v6, p1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
.line 5113
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I
move-result v0
add-int/lit8 v0, v0, -0x1
.line 5250
invoke-virtual {v2, v0, v7}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
.line 4108
sget-object v0, Lrx/internal/util/atomic/d;->bSg:Ljava/lang/Object;
.line 6250
invoke-virtual {v2, v6, v0}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
.line 88
const/4 v0, 0x1
goto :goto_23
.end method
.method public final peek()Ljava/lang/Object;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.prologue
.line 167
iget-object v1, p0, Lrx/internal/util/atomic/d;->bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 13232
iget-object v0, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v2
.line 169
iget v4, p0, Lrx/internal/util/atomic/d;->bSe:I
.line 13244
long-to-int v0, v2
and-int/2addr v0, v4
.line 13254
invoke-virtual {v1, v0}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
.line 172
sget-object v5, Lrx/internal/util/atomic/d;->bSg:Ljava/lang/Object;
if-ne v0, v5, :cond_20
.line 173
invoke-static {v1}, Lrx/internal/util/atomic/d;->a(Ljava/util/concurrent/atomic/AtomicReferenceArray;)Ljava/util/concurrent/atomic/AtomicReferenceArray;
move-result-object v0
.line 14186
iput-object v0, p0, Lrx/internal/util/atomic/d;->bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 14244
long-to-int v1, v2
and-int/2addr v1, v4
.line 14254
invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
.line 176
:cond_20
return-object v0
.end method
.method public final poll()Ljava/lang/Object;
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.prologue
const-wide/16 v8, 0x1
const/4 v1, 0x0
.line 128
iget-object v3, p0, Lrx/internal/util/atomic/d;->bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 9232
iget-object v0, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v4
.line 130
iget v6, p0, Lrx/internal/util/atomic/d;->bSe:I
.line 9244
long-to-int v0, v4
and-int v7, v0, v6
.line 9254
invoke-virtual {v3, v7}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
.line 133
sget-object v2, Lrx/internal/util/atomic/d;->bSg:Ljava/lang/Object;
if-ne v0, v2, :cond_25
const/4 v2, 0x1
.line 134
:goto_19
if-eqz v0, :cond_27
if-nez v2, :cond_27
.line 135
add-long/2addr v4, v8
invoke-direct {p0, v4, v5}, Lrx/internal/util/atomic/d;->soConsumerIndex(J)V
.line 10250
invoke-virtual {v3, v7, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
.line 11151
:goto_24
return-object v0
.line 133
:cond_25
const/4 v2, 0x0
goto :goto_19
.line 138
:cond_27
if-eqz v2, :cond_42
.line 139
invoke-static {v3}, Lrx/internal/util/atomic/d;->a(Ljava/util/concurrent/atomic/AtomicReferenceArray;)Ljava/util/concurrent/atomic/AtomicReferenceArray;
move-result-object v2
.line 11147
iput-object v2, p0, Lrx/internal/util/atomic/d;->bSf:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 11244
long-to-int v0, v4
and-int v3, v0, v6
.line 11254
invoke-virtual {v2, v3}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
.line 11150
if-nez v0, :cond_3a
move-object v0, v1
.line 11151
goto :goto_24
.line 11153
:cond_3a
add-long/2addr v4, v8
invoke-direct {p0, v4, v5}, Lrx/internal/util/atomic/d;->soConsumerIndex(J)V
.line 12250
invoke-virtual {v2, v3, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
goto :goto_24
:cond_42
move-object v0, v1
.line 142
goto :goto_24
.end method
.method public final remove()Ljava/lang/Object;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.prologue
.line 309
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final remove(Ljava/lang/Object;)Z
.registers 3
.prologue
.line 279
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final removeAll(Ljava/util/Collection;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
.prologue
.line 294
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final retainAll(Ljava/util/Collection;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
.prologue
.line 299
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final size()I
.registers 7
.prologue
.line 199
.line 15224
iget-object v0, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v0
.line 16220
:goto_6
iget-object v2, p0, Lrx/internal/util/atomic/d;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v4
.line 16224
iget-object v2, p0, Lrx/internal/util/atomic/d;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v2
.line 204
cmp-long v0, v0, v2
if-nez v0, :cond_1a
.line 205
sub-long v0, v4, v2
long-to-int v0, v0
return v0
:cond_1a
move-wide v0, v2
.line 207
goto :goto_6
.end method
.method public final toArray()[Ljava/lang/Object;
.registers 2
.prologue
.line 269
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method
.method public final toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"<E:",
"Ljava/lang/Object;",
">([TE;)[TE;"
}
.end annotation
.prologue
.line 274
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
.end method