.class public final Lkotlin/coroutines/SafeContinuation; .super Ljava/lang/Object; .source "SourceFile" # interfaces .implements Lkotlin/coroutines/Continuation; .implements Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lkotlin/coroutines/SafeContinuation$Companion; } .end annotation # static fields .field public static final Companion:Lkotlin/coroutines/SafeContinuation$Companion; .field public static final RESULT:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; # instance fields .field public final delegate:Lkotlin/coroutines/Continuation; .field private volatile result:Ljava/lang/Object; # direct methods .method static constructor ()V .locals 3 new-instance v0, Lkotlin/coroutines/SafeContinuation$Companion; const/4 v1, 0x0 invoke-direct {v0, v1}, Lkotlin/coroutines/SafeContinuation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V sput-object v0, Lkotlin/coroutines/SafeContinuation;->Companion:Lkotlin/coroutines/SafeContinuation$Companion; const-class v0, Ljava/lang/Object; const-string v1, "result" const-class v2, Lkotlin/coroutines/SafeContinuation; .line 30 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, Lkotlin/coroutines/SafeContinuation;->RESULT:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; return-void .end method .method public constructor (Lkotlin/coroutines/Continuation;)V .locals 1 const-string v0, "delegate" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 20 sget-object v0, Lkotlin/coroutines/intrinsics/CoroutineSingletons;->UNDECIDED:Lkotlin/coroutines/intrinsics/CoroutineSingletons; invoke-direct {p0, p1, v0}, Lkotlin/coroutines/SafeContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V return-void .end method .method public constructor (Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V .locals 1 const-string v0, "delegate" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 12 invoke-direct {p0}, Ljava/lang/Object;->()V iput-object p1, p0, Lkotlin/coroutines/SafeContinuation;->delegate:Lkotlin/coroutines/Continuation; iput-object p2, p0, Lkotlin/coroutines/SafeContinuation;->result:Ljava/lang/Object; return-void .end method # virtual methods .method public getCallerFrame()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; .locals 2 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->delegate:Lkotlin/coroutines/Continuation; .line 66 instance-of v1, v0, Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; if-eqz v1, :cond_0 check-cast v0, Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return-object v0 .end method .method public getContext()Lkotlin/coroutines/CoroutineContext; .locals 1 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->delegate:Lkotlin/coroutines/Continuation; .line 23 invoke-interface {v0}, Lkotlin/coroutines/Continuation;->getContext()Lkotlin/coroutines/CoroutineContext; move-result-object v0 return-object v0 .end method .method public final getOrThrow()Ljava/lang/Object; .locals 3 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->result:Ljava/lang/Object; .line 52 sget-object v1, Lkotlin/coroutines/intrinsics/CoroutineSingletons;->UNDECIDED:Lkotlin/coroutines/intrinsics/CoroutineSingletons; if-ne v0, v1, :cond_1 sget-object v0, Lkotlin/coroutines/SafeContinuation;->RESULT:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; .line 53 invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object v2 invoke-static {v0, p0, v1, v2}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object v0 return-object v0 :cond_0 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->result:Ljava/lang/Object; .line 57 :cond_1 sget-object v1, Lkotlin/coroutines/intrinsics/CoroutineSingletons;->RESUMED:Lkotlin/coroutines/intrinsics/CoroutineSingletons; if-ne v0, v1, :cond_2 invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object v0 goto :goto_0 .line 58 :cond_2 instance-of v1, v0, Lkotlin/Result$Failure; if-nez v1, :cond_3 :goto_0 return-object v0 :cond_3 check-cast v0, Lkotlin/Result$Failure; iget-object v0, v0, Lkotlin/Result$Failure;->exception:Ljava/lang/Throwable; throw v0 .end method .method public resumeWith(Ljava/lang/Object;)V .locals 3 :cond_0 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->result:Ljava/lang/Object; .line 39 sget-object v1, Lkotlin/coroutines/intrinsics/CoroutineSingletons;->UNDECIDED:Lkotlin/coroutines/intrinsics/CoroutineSingletons; if-ne v0, v1, :cond_1 sget-object v0, Lkotlin/coroutines/SafeContinuation;->RESULT:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; invoke-static {v0, p0, v1, p1}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 return-void .line 40 :cond_1 invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object v1 if-ne v0, v1, :cond_2 sget-object v0, Lkotlin/coroutines/SafeContinuation;->RESULT:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object v1 sget-object v2, Lkotlin/coroutines/intrinsics/CoroutineSingletons;->RESUMED:Lkotlin/coroutines/intrinsics/CoroutineSingletons; invoke-static {v0, p0, v1, v2}, Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lkotlin/coroutines/SafeContinuation;->delegate:Lkotlin/coroutines/Continuation; .line 41 invoke-interface {v0, p1}, Lkotlin/coroutines/Continuation;->resumeWith(Ljava/lang/Object;)V return-void .line 44 :cond_2 new-instance p1, Ljava/lang/IllegalStateException; const-string v0, "Already resumed" invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V throw p1 .end method .method public toString()Ljava/lang/String; .locals 2 .line 72 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V const-string v1, "SafeContinuation for " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; iget-object v1, p0, Lkotlin/coroutines/SafeContinuation;->delegate:Lkotlin/coroutines/Continuation; invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 .end method