.class public abstract Lkotlinx/coroutines/internal/ThreadContextKt; .super Ljava/lang/Object; .source "SourceFile" # static fields .field public static final NO_THREAD_ELEMENTS:Lkotlinx/coroutines/internal/Symbol; .field public static final countAll:Lkotlin/jvm/functions/Function2; .field public static final findOne:Lkotlin/jvm/functions/Function2; .field public static final updateState:Lkotlin/jvm/functions/Function2; # direct methods .method static constructor ()V .locals 2 .line 11 new-instance v0, Lkotlinx/coroutines/internal/Symbol; const-string v1, "NO_THREAD_ELEMENTS" invoke-direct {v0, v1}, Lkotlinx/coroutines/internal/Symbol;->(Ljava/lang/String;)V sput-object v0, Lkotlinx/coroutines/internal/ThreadContextKt;->NO_THREAD_ELEMENTS:Lkotlinx/coroutines/internal/Symbol; sget-object v0, Lkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->INSTANCE:Lkotlinx/coroutines/internal/ThreadContextKt$countAll$1; sput-object v0, Lkotlinx/coroutines/internal/ThreadContextKt;->countAll:Lkotlin/jvm/functions/Function2; sget-object v0, Lkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->INSTANCE:Lkotlinx/coroutines/internal/ThreadContextKt$findOne$1; sput-object v0, Lkotlinx/coroutines/internal/ThreadContextKt;->findOne:Lkotlin/jvm/functions/Function2; sget-object v0, Lkotlinx/coroutines/internal/ThreadContextKt$updateState$1;->INSTANCE:Lkotlinx/coroutines/internal/ThreadContextKt$updateState$1; sput-object v0, Lkotlinx/coroutines/internal/ThreadContextKt;->updateState:Lkotlin/jvm/functions/Function2; return-void .end method .method public static final restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V .locals 2 sget-object v0, Lkotlinx/coroutines/internal/ThreadContextKt;->NO_THREAD_ELEMENTS:Lkotlinx/coroutines/internal/Symbol; if-ne p1, v0, :cond_0 return-void .line 86 :cond_0 instance-of v0, p1, Lkotlinx/coroutines/internal/ThreadState; if-eqz v0, :cond_1 .line 88 check-cast p1, Lkotlinx/coroutines/internal/ThreadState; invoke-virtual {p1, p0}, Lkotlinx/coroutines/internal/ThreadState;->restore(Lkotlin/coroutines/CoroutineContext;)V goto :goto_0 :cond_1 const/4 v0, 0x0 sget-object v1, Lkotlinx/coroutines/internal/ThreadContextKt;->findOne:Lkotlin/jvm/functions/Function2; .line 93 invoke-interface {p0, v0, v1}, Lkotlin/coroutines/CoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; move-result-object v0 const-string v1, "null cannot be cast to non-null type kotlinx.coroutines.ThreadContextElement" invoke-static {v0, v1}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V check-cast v0, Lkotlinx/coroutines/ThreadContextElement; .line 94 invoke-interface {v0, p0, p1}, Lkotlinx/coroutines/ThreadContextElement;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V :goto_0 return-void .end method .method public static final threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; .locals 2 const/4 v0, 0x0 .line 59 invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v0 sget-object v1, Lkotlinx/coroutines/internal/ThreadContextKt;->countAll:Lkotlin/jvm/functions/Function2; invoke-interface {p0, v0, v1}, Lkotlin/coroutines/CoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; move-result-object p0 invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V return-object p0 .end method .method public static final updateThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Ljava/lang/Object; .locals 1 if-nez p1, :cond_0 .line 65 invoke-static {p0}, Lkotlinx/coroutines/internal/ThreadContextKt;->threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; move-result-object p1 :cond_0 const/4 v0, 0x0 .line 68 invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v0 if-ne p1, v0, :cond_1 sget-object p0, Lkotlinx/coroutines/internal/ThreadContextKt;->NO_THREAD_ELEMENTS:Lkotlinx/coroutines/internal/Symbol; goto :goto_0 .line 70 :cond_1 instance-of v0, p1, Ljava/lang/Integer; if-eqz v0, :cond_2 .line 72 new-instance v0, Lkotlinx/coroutines/internal/ThreadState; check-cast p1, Ljava/lang/Number; invoke-virtual {p1}, Ljava/lang/Number;->intValue()I move-result p1 invoke-direct {v0, p0, p1}, Lkotlinx/coroutines/internal/ThreadState;->(Lkotlin/coroutines/CoroutineContext;I)V sget-object p1, Lkotlinx/coroutines/internal/ThreadContextKt;->updateState:Lkotlin/jvm/functions/Function2; invoke-interface {p0, v0, p1}, Lkotlin/coroutines/CoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; move-result-object p0 goto :goto_0 :cond_2 const-string v0, "null cannot be cast to non-null type kotlinx.coroutines.ThreadContextElement" .line 77 invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V check-cast p1, Lkotlinx/coroutines/ThreadContextElement; .line 78 invoke-interface {p1, p0}, Lkotlinx/coroutines/ThreadContextElement;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; move-result-object p0 :goto_0 return-object p0 .end method