.class public final Lkotlinx/coroutines/a/l; .super Ljava/lang/Object; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lkotlinx/coroutines/a/l$b;, Lkotlinx/coroutines/a/l$a; } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "", "Ljava/lang/Object;" } .end annotation # static fields .field public static final bTB:Lkotlinx/coroutines/a/o; .field public static final bTC:Lkotlinx/coroutines/a/l$a; .field private static final bTl:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .field public static final bTz:Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; # instance fields .field public final bTA: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 volatile bTk:Ljava/lang/Object; .field public volatile bTy:J .field private final capacity:I .field public final mask:I # direct methods .method static constructor ()V .locals 3 new-instance v0, Lkotlinx/coroutines/a/l$a; const/4 v1, 0x0 invoke-direct {v0, v1}, Lkotlinx/coroutines/a/l$a;->(B)V sput-object v0, Lkotlinx/coroutines/a/l;->bTC:Lkotlinx/coroutines/a/l$a; new-instance v0, Lkotlinx/coroutines/a/o; const-string v1, "REMOVE_FROZEN" invoke-direct {v0, v1}, Lkotlinx/coroutines/a/o;->(Ljava/lang/String;)V sput-object v0, Lkotlinx/coroutines/a/l;->bTB:Lkotlinx/coroutines/a/o; const-class v0, Lkotlinx/coroutines/a/l; const-class v1, Ljava/lang/Object; const-string v2, "bTk" invoke-static {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; move-result-object v0 sput-object v0, Lkotlinx/coroutines/a/l;->bTl:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; const-class v0, Lkotlinx/coroutines/a/l; const-string v1, "bTy" invoke-static {v0, v1}, Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; move-result-object v0 sput-object v0, Lkotlinx/coroutines/a/l;->bTz:Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; return-void .end method .method public constructor (I)V .locals 3 invoke-direct {p0}, Ljava/lang/Object;->()V iput p1, p0, Lkotlinx/coroutines/a/l;->capacity:I iget p1, p0, Lkotlinx/coroutines/a/l;->capacity:I const/4 v0, 0x1 sub-int/2addr p1, v0 iput p1, p0, Lkotlinx/coroutines/a/l;->mask:I const/4 p1, 0x0 iput-object p1, p0, Lkotlinx/coroutines/a/l;->bTk:Ljava/lang/Object; const-wide/16 v1, 0x0 iput-wide v1, p0, Lkotlinx/coroutines/a/l;->bTy:J new-instance p1, Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v1, p0, Lkotlinx/coroutines/a/l;->capacity:I invoke-direct {p1, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->(I)V iput-object p1, p0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget p1, p0, Lkotlinx/coroutines/a/l;->mask:I const/4 v1, 0x0 const v2, 0x3fffffff # 1.9999999f if-gt p1, v2, :cond_0 const/4 p1, 0x1 goto :goto_0 :cond_0 const/4 p1, 0x0 :goto_0 if-eqz p1, :cond_3 iget p1, p0, Lkotlinx/coroutines/a/l;->capacity:I iget v2, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr p1, v2 if-nez p1, :cond_1 goto :goto_1 :cond_1 const/4 v0, 0x0 :goto_1 if-eqz v0, :cond_2 return-void :cond_2 new-instance p1, Ljava/lang/IllegalStateException; const-string v0, "Check failed." invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V check-cast p1, Ljava/lang/Throwable; throw p1 :cond_3 new-instance p1, Ljava/lang/IllegalStateException; const-string v0, "Check failed." invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V check-cast p1, Ljava/lang/Throwable; throw p1 .end method .method private final Gu()J .locals 9 :cond_0 iget-wide v2, p0, Lkotlinx/coroutines/a/l;->bTy:J const-wide/high16 v0, 0x1000000000000000L and-long v4, v2, v0 const-wide/16 v6, 0x0 cmp-long v8, v4, v6 if-eqz v8, :cond_1 return-wide v2 :cond_1 or-long v6, v2, v0 sget-object v0, Lkotlinx/coroutines/a/l;->bTz:Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; move-object v1, p0 move-wide v4, v6 invoke-virtual/range {v0 .. v5}, Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;->compareAndSet(Ljava/lang/Object;JJ)Z move-result v0 if-eqz v0, :cond_0 return-wide v6 .end method .method private final aN(J)Lkotlinx/coroutines/a/l; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(J)", "Lkotlinx/coroutines/a/l<", "TE;>;" } .end annotation :goto_0 iget-object v0, p0, Lkotlinx/coroutines/a/l;->bTk:Ljava/lang/Object; check-cast v0, Lkotlinx/coroutines/a/l; if-eqz v0, :cond_0 return-object v0 :cond_0 sget-object v0, Lkotlinx/coroutines/a/l;->bTl:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; const/4 v1, 0x0 invoke-direct {p0, p1, p2}, Lkotlinx/coroutines/a/l;->aO(J)Lkotlinx/coroutines/a/l; move-result-object v2 invoke-virtual {v0, p0, v1, v2}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_0 .end method .method private final aO(J)Lkotlinx/coroutines/a/l; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(J)", "Lkotlinx/coroutines/a/l<", "TE;>;" } .end annotation new-instance v0, Lkotlinx/coroutines/a/l; iget v1, p0, Lkotlinx/coroutines/a/l;->capacity:I mul-int/lit8 v1, v1, 0x2 invoke-direct {v0, v1}, Lkotlinx/coroutines/a/l;->(I)V const-wide/32 v1, 0x3fffffff and-long/2addr v1, p1 const/4 v3, 0x0 shr-long/2addr v1, v3 long-to-int v1, v1 const-wide v2, 0xfffffffc0000000L and-long/2addr v2, p1 const/16 v4, 0x1e shr-long/2addr v2, v4 long-to-int v2, v2 :goto_0 iget v3, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v3, v1 iget v4, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v4, v2 if-eq v3, v4, :cond_1 iget-object v3, v0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v4, v0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v4, v1 iget-object v5, p0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v6, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v6, v1 invoke-virtual {v5, v6}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object; move-result-object v5 if-nez v5, :cond_0 new-instance v5, Lkotlinx/coroutines/a/l$b; invoke-direct {v5, v1}, Lkotlinx/coroutines/a/l$b;->(I)V :cond_0 invoke-virtual {v3, v4, v5}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->set(ILjava/lang/Object;)V add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_1 const-wide v1, -0x1000000000000001L # -3.1050361846014175E231 and-long/2addr p1, v1 iput-wide p1, v0, Lkotlinx/coroutines/a/l;->bTy:J return-object v0 .end method .method private final f(ILjava/lang/Object;)Lkotlinx/coroutines/a/l; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(ITE;)", "Lkotlinx/coroutines/a/l<", "TE;>;" } .end annotation iget-object v0, p0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v1, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v1, p1 invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object; move-result-object v0 instance-of v1, v0, Lkotlinx/coroutines/a/l$b; if-eqz v1, :cond_0 check-cast v0, Lkotlinx/coroutines/a/l$b; iget v0, v0, Lkotlinx/coroutines/a/l$b;->index:I if-ne v0, p1, :cond_0 iget-object v0, p0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v1, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr p1, v1 invoke-virtual {v0, p1, p2}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->set(ILjava/lang/Object;)V return-object p0 :cond_0 const/4 p1, 0x0 return-object p1 .end method # virtual methods .method public final Gt()Lkotlinx/coroutines/a/l; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lkotlinx/coroutines/a/l<", "TE;>;" } .end annotation invoke-direct {p0}, Lkotlinx/coroutines/a/l;->Gu()J move-result-wide v0 invoke-direct {p0, v0, v1}, Lkotlinx/coroutines/a/l;->aN(J)Lkotlinx/coroutines/a/l; move-result-object v0 return-object v0 .end method .method public final bU(Ljava/lang/Object;)I .locals 11 .annotation system Ldalvik/annotation/Signature; value = { "(TE;)I" } .end annotation const-string v0, "element" invoke-static {p1, v0}, Lkotlin/jvm/internal/j;->h(Ljava/lang/Object;Ljava/lang/String;)V :cond_0 iget-wide v3, p0, Lkotlinx/coroutines/a/l;->bTy:J const-wide/high16 v0, 0x3000000000000000L # 1.727233711018889E-77 and-long/2addr v0, v3 const-wide/16 v7, 0x0 cmp-long v2, v0, v7 if-eqz v2, :cond_1 invoke-static {v3, v4}, Lkotlinx/coroutines/a/l$a;->aP(J)I move-result p1 return p1 :cond_1 const-wide/32 v0, 0x3fffffff and-long/2addr v0, v3 const/4 v9, 0x0 shr-long/2addr v0, v9 long-to-int v0, v0 const-wide v1, 0xfffffffc0000000L and-long/2addr v1, v3 const/16 v5, 0x1e shr-long/2addr v1, v5 long-to-int v10, v1 add-int/lit8 v1, v10, 0x2 iget v2, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v1, v2 iget v2, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v0, v2 if-ne v1, v0, :cond_2 const/4 p1, 0x1 return p1 :cond_2 add-int/lit8 v0, v10, 0x1 const v1, 0x3fffffff # 1.9999999f and-int/2addr v0, v1 sget-object v1, Lkotlinx/coroutines/a/l;->bTz:Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; invoke-static {v3, v4, v0}, Lkotlinx/coroutines/a/l$a;->d(JI)J move-result-wide v5 move-object v2, p0 invoke-virtual/range {v1 .. v6}, Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;->compareAndSet(Ljava/lang/Object;JJ)Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lkotlinx/coroutines/a/l;->bTA:Ljava/util/concurrent/atomic/AtomicReferenceArray; iget v1, p0, Lkotlinx/coroutines/a/l;->mask:I and-int/2addr v1, v10 invoke-virtual {v0, v1, p1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->set(ILjava/lang/Object;)V move-object v0, p0 check-cast v0, Lkotlinx/coroutines/a/l; :cond_3 iget-wide v1, v0, Lkotlinx/coroutines/a/l;->bTy:J const-wide/high16 v3, 0x1000000000000000L and-long/2addr v1, v3 cmp-long v3, v1, v7 if-eqz v3, :cond_4 invoke-virtual {v0}, Lkotlinx/coroutines/a/l;->Gt()Lkotlinx/coroutines/a/l; move-result-object v0 invoke-direct {v0, v10, p1}, Lkotlinx/coroutines/a/l;->f(ILjava/lang/Object;)Lkotlinx/coroutines/a/l; move-result-object v0 if-nez v0, :cond_3 :cond_4 return v9 .end method .method public final isEmpty()Z .locals 7 iget-wide v0, p0, Lkotlinx/coroutines/a/l;->bTy:J const-wide/32 v2, 0x3fffffff and-long/2addr v2, v0 const/4 v4, 0x0 shr-long/2addr v2, v4 long-to-int v2, v2 const-wide v5, 0xfffffffc0000000L and-long/2addr v0, v5 const/16 v3, 0x1e shr-long/2addr v0, v3 long-to-int v0, v0 if-ne v2, v0, :cond_0 const/4 v0, 0x1 return v0 :cond_0 return v4 .end method