- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
78 lines
3.5 KiB
Java
78 lines
3.5 KiB
Java
package kotlinx.coroutines.internal;
|
|
|
|
import kotlin.coroutines.CoroutineContext;
|
|
import kotlin.jvm.functions.Function2;
|
|
import kotlin.jvm.internal.Intrinsics;
|
|
import kotlinx.coroutines.ThreadContextElement;
|
|
|
|
/* loaded from: classes5.dex */
|
|
public abstract class ThreadContextKt {
|
|
public static final Symbol NO_THREAD_ELEMENTS = new Symbol("NO_THREAD_ELEMENTS");
|
|
public static final Function2 countAll = new Function2() { // from class: kotlinx.coroutines.internal.ThreadContextKt$countAll$1
|
|
@Override // kotlin.jvm.functions.Function2
|
|
public final Object invoke(Object obj, CoroutineContext.Element element) {
|
|
if (!(element instanceof ThreadContextElement)) {
|
|
return obj;
|
|
}
|
|
Integer num = obj instanceof Integer ? (Integer) obj : null;
|
|
int intValue = num != null ? num.intValue() : 1;
|
|
return intValue == 0 ? element : Integer.valueOf(intValue + 1);
|
|
}
|
|
};
|
|
public static final Function2 findOne = new Function2() { // from class: kotlinx.coroutines.internal.ThreadContextKt$findOne$1
|
|
@Override // kotlin.jvm.functions.Function2
|
|
public final ThreadContextElement invoke(ThreadContextElement threadContextElement, CoroutineContext.Element element) {
|
|
if (threadContextElement != null) {
|
|
return threadContextElement;
|
|
}
|
|
if (element instanceof ThreadContextElement) {
|
|
return (ThreadContextElement) element;
|
|
}
|
|
return null;
|
|
}
|
|
};
|
|
public static final Function2 updateState = new Function2() { // from class: kotlinx.coroutines.internal.ThreadContextKt$updateState$1
|
|
@Override // kotlin.jvm.functions.Function2
|
|
public final ThreadState invoke(ThreadState threadState, CoroutineContext.Element element) {
|
|
if (element instanceof ThreadContextElement) {
|
|
ThreadContextElement threadContextElement = (ThreadContextElement) element;
|
|
threadState.append(threadContextElement, threadContextElement.updateThreadContext(threadState.context));
|
|
}
|
|
return threadState;
|
|
}
|
|
};
|
|
|
|
public static final Object threadContextElements(CoroutineContext coroutineContext) {
|
|
Object fold = coroutineContext.fold(0, countAll);
|
|
Intrinsics.checkNotNull(fold);
|
|
return fold;
|
|
}
|
|
|
|
public static final Object updateThreadContext(CoroutineContext coroutineContext, Object obj) {
|
|
if (obj == null) {
|
|
obj = threadContextElements(coroutineContext);
|
|
}
|
|
if (obj == 0) {
|
|
return NO_THREAD_ELEMENTS;
|
|
}
|
|
if (obj instanceof Integer) {
|
|
return coroutineContext.fold(new ThreadState(coroutineContext, ((Number) obj).intValue()), updateState);
|
|
}
|
|
Intrinsics.checkNotNull(obj, "null cannot be cast to non-null type kotlinx.coroutines.ThreadContextElement<kotlin.Any?>");
|
|
return ((ThreadContextElement) obj).updateThreadContext(coroutineContext);
|
|
}
|
|
|
|
public static final void restoreThreadContext(CoroutineContext coroutineContext, Object obj) {
|
|
if (obj == NO_THREAD_ELEMENTS) {
|
|
return;
|
|
}
|
|
if (obj instanceof ThreadState) {
|
|
((ThreadState) obj).restore(coroutineContext);
|
|
return;
|
|
}
|
|
Object fold = coroutineContext.fold(null, findOne);
|
|
Intrinsics.checkNotNull(fold, "null cannot be cast to non-null type kotlinx.coroutines.ThreadContextElement<kotlin.Any?>");
|
|
((ThreadContextElement) fold).restoreThreadContext(coroutineContext, obj);
|
|
}
|
|
}
|