.class public Lkotlinx/coroutines/internal/LockFreeTaskQueue; .super Ljava/lang/Object; .source "SourceFile" # static fields .field public static final _cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; # instance fields .field private volatile _cur:Ljava/lang/Object; # direct methods .method static constructor ()V .locals 3 const-class v0, Ljava/lang/Object; const-string v1, "_cur" const-class v2, Lkotlinx/coroutines/internal/LockFreeTaskQueue; invoke-static {v2, v0, v1}, 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/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; return-void .end method .method public constructor (Z)V .locals 2 .line 30 invoke-direct {p0}, Ljava/lang/Object;->()V .line 33 new-instance v0, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; const/16 v1, 0x8 invoke-direct {v0, v1, p1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->(IZ)V iput-object v0, p0, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur:Ljava/lang/Object; return-void .end method # virtual methods .method public final addLast(Ljava/lang/Object;)Z .locals 4 sget-object v0, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; :goto_0 invoke-virtual {v0, p0}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; .line 48 invoke-virtual {v1, p1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->addLast(Ljava/lang/Object;)I move-result v2 const/4 v3, 0x1 if-eqz v2, :cond_2 if-eq v2, v3, :cond_1 const/4 v1, 0x2 if-eq v2, v1, :cond_0 goto :goto_0 :cond_0 const/4 p1, 0x0 return p1 :cond_1 sget-object v2, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .line 51 invoke-virtual {v1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->next()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; move-result-object v3 invoke-static {v2, p0, v1, v3}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_0 :cond_2 return v3 .end method .method public final close()V .locals 4 sget-object v0, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; :goto_0 invoke-virtual {v0, p0}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; .line 41 invoke-virtual {v1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->close()Z move-result v2 if-eqz v2, :cond_0 return-void :cond_0 sget-object v2, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .line 42 invoke-virtual {v1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->next()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; move-result-object v3 invoke-static {v2, p0, v1, v3}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_0 .end method .method public final getSize()I .locals 1 sget-object v0, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .line 37 invoke-virtual {v0, p0}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 check-cast v0, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; invoke-virtual {v0}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->getSize()I move-result v0 return v0 .end method .method public final removeFirstOrNull()Ljava/lang/Object; .locals 4 sget-object v0, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; :goto_0 invoke-virtual {v0, p0}, Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; .line 59 invoke-virtual {v1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->removeFirstOrNull()Ljava/lang/Object; move-result-object v2 .line 60 sget-object v3, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->REMOVE_FROZEN:Lkotlinx/coroutines/internal/Symbol; if-eq v2, v3, :cond_0 return-object v2 :cond_0 sget-object v2, Lkotlinx/coroutines/internal/LockFreeTaskQueue;->_cur$FU:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .line 61 invoke-virtual {v1}, Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;->next()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; move-result-object v3 invoke-static {v2, p0, v1, v3}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z goto :goto_0 .end method