ADD week 5
This commit is contained in:
@ -0,0 +1,92 @@
|
||||
package kotlinx.coroutines.debug;
|
||||
|
||||
import java.lang.instrument.ClassFileTransformer;
|
||||
import java.lang.instrument.Instrumentation;
|
||||
import java.security.ProtectionDomain;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Result;
|
||||
import kotlin.ResultKt;
|
||||
import kotlin.io.ByteStreamsKt;
|
||||
import kotlin.jvm.JvmStatic;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.debug.internal.AgentInstallationType;
|
||||
import kotlinx.coroutines.debug.internal.DebugProbesImpl;
|
||||
import sun.misc.Signal;
|
||||
import sun.misc.SignalHandler;
|
||||
|
||||
/* compiled from: AgentPremain.kt */
|
||||
@Metadata(d1 = {"\u0000(\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\bÁ\u0002\u0018\u00002\u00020\u0001:\u0001\fB\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\b\u0010\u0005\u001a\u00020\u0006H\u0002J\u001a\u0010\u0007\u001a\u00020\u00062\b\u0010\b\u001a\u0004\u0018\u00010\t2\u0006\u0010\n\u001a\u00020\u000bH\u0007R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\r"}, d2 = {"Lkotlinx/coroutines/debug/AgentPremain;", "", "()V", "enableCreationStackTraces", "", "installSignalHandler", "", "premain", "args", "", "instrumentation", "Ljava/lang/instrument/Instrumentation;", "DebugProbesTransformer", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class AgentPremain {
|
||||
public static final AgentPremain INSTANCE = new AgentPremain();
|
||||
private static final boolean enableCreationStackTraces;
|
||||
|
||||
private AgentPremain() {
|
||||
}
|
||||
|
||||
static {
|
||||
Object m288constructorimpl;
|
||||
boolean enableCreationStackTraces2;
|
||||
try {
|
||||
Result.Companion companion = Result.INSTANCE;
|
||||
String property = System.getProperty("kotlinx.coroutines.debug.enable.creation.stack.trace");
|
||||
m288constructorimpl = Result.m288constructorimpl(property != null ? Boolean.valueOf(Boolean.parseBoolean(property)) : null);
|
||||
} catch (Throwable th) {
|
||||
Result.Companion companion2 = Result.INSTANCE;
|
||||
m288constructorimpl = Result.m288constructorimpl(ResultKt.createFailure(th));
|
||||
}
|
||||
Boolean bool = (Boolean) (Result.m294isFailureimpl(m288constructorimpl) ? null : m288constructorimpl);
|
||||
if (bool != null) {
|
||||
enableCreationStackTraces2 = bool.booleanValue();
|
||||
} else {
|
||||
enableCreationStackTraces2 = DebugProbesImpl.INSTANCE.getEnableCreationStackTraces();
|
||||
}
|
||||
enableCreationStackTraces = enableCreationStackTraces2;
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public static final void premain(String args, Instrumentation instrumentation) {
|
||||
AgentInstallationType.INSTANCE.setInstalledStatically$kotlinx_coroutines_core(true);
|
||||
instrumentation.addTransformer(DebugProbesTransformer.INSTANCE);
|
||||
DebugProbesImpl.INSTANCE.setEnableCreationStackTraces(enableCreationStackTraces);
|
||||
DebugProbesImpl.INSTANCE.install();
|
||||
INSTANCE.installSignalHandler();
|
||||
}
|
||||
|
||||
/* compiled from: AgentPremain.kt */
|
||||
@Metadata(d1 = {"\u0000,\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0012\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\bÀ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J<\u0010\u0003\u001a\u0004\u0018\u00010\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u00062\u0006\u0010\u0007\u001a\u00020\b2\f\u0010\t\u001a\b\u0012\u0002\b\u0003\u0018\u00010\n2\u0006\u0010\u000b\u001a\u00020\f2\b\u0010\r\u001a\u0004\u0018\u00010\u0004H\u0016¨\u0006\u000e"}, d2 = {"Lkotlinx/coroutines/debug/AgentPremain$DebugProbesTransformer;", "Ljava/lang/instrument/ClassFileTransformer;", "()V", "transform", "", "loader", "Ljava/lang/ClassLoader;", "className", "", "classBeingRedefined", "Ljava/lang/Class;", "protectionDomain", "Ljava/security/ProtectionDomain;", "classfileBuffer", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
public static final class DebugProbesTransformer implements ClassFileTransformer {
|
||||
public static final DebugProbesTransformer INSTANCE = new DebugProbesTransformer();
|
||||
|
||||
private DebugProbesTransformer() {
|
||||
}
|
||||
|
||||
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) {
|
||||
if (loader == null || !Intrinsics.areEqual(className, "kotlin/coroutines/jvm/internal/DebugProbesKt")) {
|
||||
return null;
|
||||
}
|
||||
AgentInstallationType.INSTANCE.setInstalledStatically$kotlinx_coroutines_core(true);
|
||||
return ByteStreamsKt.readBytes(loader.getResourceAsStream("DebugProbesKt.bin"));
|
||||
}
|
||||
}
|
||||
|
||||
private final void installSignalHandler() {
|
||||
try {
|
||||
Signal.handle(new Signal("TRAP"), new SignalHandler() { // from class: kotlinx.coroutines.debug.AgentPremain$$ExternalSyntheticLambda0
|
||||
public final void handle(Signal signal) {
|
||||
AgentPremain.installSignalHandler$lambda$1(signal);
|
||||
}
|
||||
});
|
||||
} catch (Throwable unused) {
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public static final void installSignalHandler$lambda$1(Signal signal) {
|
||||
if (DebugProbesImpl.INSTANCE.isInstalled$kotlinx_coroutines_core()) {
|
||||
DebugProbesImpl.INSTANCE.dumpCoroutines(System.out);
|
||||
} else {
|
||||
System.out.println((Object) "Cannot perform coroutines dump, debug probes are disabled");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
|
||||
/* compiled from: AgentInstallationType.kt */
|
||||
@Metadata(d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0005\bÀ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u001a\u0010\u0003\u001a\u00020\u0004X\u0080\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\t"}, d2 = {"Lkotlinx/coroutines/debug/internal/AgentInstallationType;", "", "()V", "isInstalledStatically", "", "isInstalledStatically$kotlinx_coroutines_core", "()Z", "setInstalledStatically$kotlinx_coroutines_core", "(Z)V", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class AgentInstallationType {
|
||||
public static final AgentInstallationType INSTANCE = new AgentInstallationType();
|
||||
private static boolean isInstalledStatically;
|
||||
|
||||
public final boolean isInstalledStatically$kotlinx_coroutines_core() {
|
||||
return isInstalledStatically;
|
||||
}
|
||||
|
||||
public final void setInstalledStatically$kotlinx_coroutines_core(boolean z) {
|
||||
isInstalledStatically = z;
|
||||
}
|
||||
|
||||
private AgentInstallationType() {
|
||||
}
|
||||
}
|
@ -0,0 +1,535 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.ReferenceQueue;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
|
||||
import java.util.concurrent.atomic.AtomicReferenceArray;
|
||||
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
|
||||
import kotlin.KotlinNothingValueException;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.collections.AbstractMutableMap;
|
||||
import kotlin.collections.AbstractMutableSet;
|
||||
import kotlin.jvm.Volatile;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import kotlin.jvm.functions.Function2;
|
||||
import kotlin.jvm.internal.DefaultConstructorMarker;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.markers.KMutableIterator;
|
||||
import kotlin.jvm.internal.markers.KMutableMap;
|
||||
import kotlin.ranges.RangesKt;
|
||||
import kotlinx.coroutines.channels.ChannelSegment$$ExternalSyntheticBackportWithForwarding0;
|
||||
import kotlinx.coroutines.debug.internal.ConcurrentWeakMap;
|
||||
import kotlinx.coroutines.internal.Symbol;
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000R\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010#\n\u0002\u0010'\n\u0002\b\u0005\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u000f\b\u0000\u0018\u0000*\b\b\u0000\u0010\u0001*\u00020\u0002*\b\b\u0001\u0010\u0003*\u00020\u00022\u000e\u0012\u0004\u0012\u0002H\u0001\u0012\u0004\u0012\u0002H\u00030\u0004:\u0003()*B\u000f\u0012\b\b\u0002\u0010\u0005\u001a\u00020\u0006¢\u0006\u0002\u0010\u0007J\u0014\u0010\u0019\u001a\u00020\u001a2\n\u0010\u001b\u001a\u0006\u0012\u0002\b\u00030\u001cH\u0002J\b\u0010\u001d\u001a\u00020\u001aH\u0016J\b\u0010\u001e\u001a\u00020\u001aH\u0002J\u0018\u0010\u001f\u001a\u0004\u0018\u00018\u00012\u0006\u0010 \u001a\u00028\u0000H\u0096\u0002¢\u0006\u0002\u0010!J\u001f\u0010\"\u001a\u0004\u0018\u00018\u00012\u0006\u0010 \u001a\u00028\u00002\u0006\u0010#\u001a\u00028\u0001H\u0016¢\u0006\u0002\u0010$J!\u0010%\u001a\u0004\u0018\u00018\u00012\u0006\u0010 \u001a\u00028\u00002\b\u0010#\u001a\u0004\u0018\u00018\u0001H\u0002¢\u0006\u0002\u0010$J\u0017\u0010&\u001a\u0004\u0018\u00018\u00012\u0006\u0010 \u001a\u00028\u0000H\u0016¢\u0006\u0002\u0010!J\u0006\u0010'\u001a\u00020\u001aR\t\u0010\b\u001a\u00020\tX\u0082\u0004R\u001f\u0010\n\u001a\u0018\u0012\u0014\u0012\u00120\fR\u000e\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u00010\u00000\u000bX\u0082\u0004R&\u0010\r\u001a\u0014\u0012\u0010\u0012\u000e\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u00010\u000f0\u000e8VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0010\u0010\u0011R\u001a\u0010\u0012\u001a\b\u0012\u0004\u0012\u00028\u00000\u000e8VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0013\u0010\u0011R\u0014\u0010\u0014\u001a\u00020\u00158VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0016\u0010\u0017R\u0016\u0010\u0005\u001a\n\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0018X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006+"}, d2 = {"Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap;", "K", "", "V", "Lkotlin/collections/AbstractMutableMap;", "weakRefQueue", "", "(Z)V", "_size", "Lkotlinx/atomicfu/AtomicInt;", "core", "Lkotlinx/atomicfu/AtomicRef;", "Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$Core;", "entries", "", "", "getEntries", "()Ljava/util/Set;", "keys", "getKeys", "size", "", "getSize", "()I", "Ljava/lang/ref/ReferenceQueue;", "cleanWeakRef", "", "w", "Lkotlinx/coroutines/debug/internal/HashedWeakRef;", "clear", "decrementSize", "get", "key", "(Ljava/lang/Object;)Ljava/lang/Object;", "put", "value", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", "putSynchronized", "remove", "runWeakRefQueueCleaningLoopUntilInterrupted", "Core", "Entry", "KeyValueSet", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class ConcurrentWeakMap<K, V> extends AbstractMutableMap<K, V> {
|
||||
private static final AtomicIntegerFieldUpdater _size$FU = AtomicIntegerFieldUpdater.newUpdater(ConcurrentWeakMap.class, "_size");
|
||||
private static final AtomicReferenceFieldUpdater core$FU = AtomicReferenceFieldUpdater.newUpdater(ConcurrentWeakMap.class, Object.class, "core");
|
||||
|
||||
@Volatile
|
||||
private volatile int _size;
|
||||
|
||||
@Volatile
|
||||
private volatile Object core;
|
||||
private final ReferenceQueue<K> weakRefQueue;
|
||||
|
||||
public ConcurrentWeakMap() {
|
||||
this(false, 1, null);
|
||||
}
|
||||
|
||||
public /* synthetic */ ConcurrentWeakMap(boolean z, int i, DefaultConstructorMarker defaultConstructorMarker) {
|
||||
this((i & 1) != 0 ? false : z);
|
||||
}
|
||||
|
||||
public ConcurrentWeakMap(boolean z) {
|
||||
this.core = new Core(16);
|
||||
this.weakRefQueue = z ? new ReferenceQueue<>() : null;
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableMap
|
||||
public int getSize() {
|
||||
return _size$FU.get(this);
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public final void decrementSize() {
|
||||
_size$FU.decrementAndGet(this);
|
||||
}
|
||||
|
||||
@Override // java.util.AbstractMap, java.util.Map
|
||||
public V get(Object key) {
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
return (V) ((Core) core$FU.get(this)).getImpl(key);
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableMap, java.util.AbstractMap, java.util.Map
|
||||
public V put(K key, V value) {
|
||||
Symbol symbol;
|
||||
V v = (V) Core.putImpl$default((Core) core$FU.get(this), key, value, null, 4, null);
|
||||
symbol = ConcurrentWeakMapKt.REHASH;
|
||||
if (v == symbol) {
|
||||
v = putSynchronized(key, value);
|
||||
}
|
||||
if (v == null) {
|
||||
_size$FU.incrementAndGet(this);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
@Override // java.util.AbstractMap, java.util.Map
|
||||
public V remove(Object key) {
|
||||
Symbol symbol;
|
||||
if (key == 0) {
|
||||
return null;
|
||||
}
|
||||
V v = (V) Core.putImpl$default((Core) core$FU.get(this), key, null, null, 4, null);
|
||||
symbol = ConcurrentWeakMapKt.REHASH;
|
||||
if (v == symbol) {
|
||||
v = putSynchronized(key, null);
|
||||
}
|
||||
if (v != null) {
|
||||
_size$FU.decrementAndGet(this);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
private final synchronized V putSynchronized(K key, V value) {
|
||||
V v;
|
||||
Symbol symbol;
|
||||
Core core = (Core) core$FU.get(this);
|
||||
while (true) {
|
||||
v = (V) Core.putImpl$default(core, key, value, null, 4, null);
|
||||
symbol = ConcurrentWeakMapKt.REHASH;
|
||||
if (v == symbol) {
|
||||
core = core.rehash();
|
||||
core$FU.set(this, core);
|
||||
}
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableMap
|
||||
public Set<K> getKeys() {
|
||||
return new KeyValueSet(new Function2<K, V, K>() { // from class: kotlinx.coroutines.debug.internal.ConcurrentWeakMap$keys$1
|
||||
@Override // kotlin.jvm.functions.Function2
|
||||
public final K invoke(K k, V v) {
|
||||
return k;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableMap
|
||||
public Set<Map.Entry<K, V>> getEntries() {
|
||||
return new KeyValueSet(new Function2<K, V, Map.Entry<K, V>>() { // from class: kotlinx.coroutines.debug.internal.ConcurrentWeakMap$entries$1
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
@Override // kotlin.jvm.functions.Function2
|
||||
public /* bridge */ /* synthetic */ Object invoke(Object obj, Object obj2) {
|
||||
return invoke((ConcurrentWeakMap$entries$1<K, V>) obj, obj2);
|
||||
}
|
||||
|
||||
@Override // kotlin.jvm.functions.Function2
|
||||
public final Map.Entry<K, V> invoke(K k, V v) {
|
||||
return new ConcurrentWeakMap.Entry(k, v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override // java.util.AbstractMap, java.util.Map
|
||||
public void clear() {
|
||||
Iterator<K> it = keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
remove(it.next());
|
||||
}
|
||||
}
|
||||
|
||||
public final void runWeakRefQueueCleaningLoopUntilInterrupted() {
|
||||
if (this.weakRefQueue == null) {
|
||||
throw new IllegalStateException("Must be created with weakRefQueue = true".toString());
|
||||
}
|
||||
while (true) {
|
||||
try {
|
||||
Reference<? extends K> remove = this.weakRefQueue.remove();
|
||||
Intrinsics.checkNotNull(remove, "null cannot be cast to non-null type kotlinx.coroutines.debug.internal.HashedWeakRef<*>");
|
||||
cleanWeakRef((HashedWeakRef) remove);
|
||||
} catch (InterruptedException unused) {
|
||||
Thread.currentThread().interrupt();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final void cleanWeakRef(HashedWeakRef<?> w) {
|
||||
((Core) core$FU.get(this)).cleanWeakRef(w);
|
||||
}
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000D\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0002\n\u0002\b\u0007\n\u0002\u0010)\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0082\u0004\u0018\u00002\u00020\u0001:\u0001!B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u0012\u0010\r\u001a\u00020\u000e2\n\u0010\u000f\u001a\u0006\u0012\u0002\b\u00030\u0007J\u0015\u0010\u0010\u001a\u0004\u0018\u00018\u00012\u0006\u0010\u0011\u001a\u00028\u0000¢\u0006\u0002\u0010\u0012J\u0010\u0010\u0013\u001a\u00020\u00032\u0006\u0010\u0014\u001a\u00020\u0003H\u0002J,\u0010\u0015\u001a\b\u0012\u0004\u0012\u0002H\u00170\u0016\"\u0004\b\u0002\u0010\u00172\u0018\u0010\u0018\u001a\u0014\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u0001\u0012\u0004\u0012\u0002H\u00170\u0019J1\u0010\u001a\u001a\u0004\u0018\u00010\u00012\u0006\u0010\u0011\u001a\u00028\u00002\b\u0010\u001b\u001a\u0004\u0018\u00018\u00012\u0010\b\u0002\u0010\u001c\u001a\n\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0007¢\u0006\u0002\u0010\u001dJ\u0016\u0010\u001e\u001a\u00120\u0000R\u000e\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u00010\u001fJ\u0010\u0010 \u001a\u00020\u000e2\u0006\u0010\u0013\u001a\u00020\u0003H\u0002R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u0017\u0010\u0005\u001a\u0010\u0012\f\u0012\n\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u00070\u0006X\u0082\u0004R\t\u0010\b\u001a\u00020\tX\u0082\u0004R\u000e\u0010\n\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u000b\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u0011\u0010\f\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u00010\u0006X\u0082\u0004¨\u0006\""}, d2 = {"Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$Core;", "", "allocated", "", "(Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap;I)V", "keys", "Lkotlinx/atomicfu/AtomicArray;", "Lkotlinx/coroutines/debug/internal/HashedWeakRef;", "load", "Lkotlinx/atomicfu/AtomicInt;", "shift", "threshold", "values", "cleanWeakRef", "", "weakRef", "getImpl", "key", "(Ljava/lang/Object;)Ljava/lang/Object;", "index", "hash", "keyValueIterator", "", "E", "factory", "Lkotlin/Function2;", "putImpl", "value", "weakKey0", "(Ljava/lang/Object;Ljava/lang/Object;Lkotlinx/coroutines/debug/internal/HashedWeakRef;)Ljava/lang/Object;", "rehash", "Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap;", "removeCleanedAt", "KeyValueIterator", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
private final class Core {
|
||||
private static final AtomicIntegerFieldUpdater load$FU = AtomicIntegerFieldUpdater.newUpdater(Core.class, "load");
|
||||
private final int allocated;
|
||||
private final AtomicReferenceArray keys;
|
||||
|
||||
@Volatile
|
||||
private volatile int load;
|
||||
private final int shift;
|
||||
private final int threshold;
|
||||
private final AtomicReferenceArray values;
|
||||
|
||||
private final int index(int hash) {
|
||||
return (hash * (-1640531527)) >>> this.shift;
|
||||
}
|
||||
|
||||
private final void update$atomicfu(AtomicIntegerFieldUpdater atomicIntegerFieldUpdater, Function1<? super Integer, Integer> function1, Object obj) {
|
||||
int i;
|
||||
do {
|
||||
i = atomicIntegerFieldUpdater.get(obj);
|
||||
} while (!atomicIntegerFieldUpdater.compareAndSet(obj, i, function1.invoke(Integer.valueOf(i)).intValue()));
|
||||
}
|
||||
|
||||
public Core(int i) {
|
||||
this.allocated = i;
|
||||
this.shift = Integer.numberOfLeadingZeros(i) + 1;
|
||||
this.threshold = (i * 2) / 3;
|
||||
this.keys = new AtomicReferenceArray(i);
|
||||
this.values = new AtomicReferenceArray(i);
|
||||
}
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public final V getImpl(K key) {
|
||||
int index = index(key.hashCode());
|
||||
while (true) {
|
||||
HashedWeakRef hashedWeakRef = (HashedWeakRef) this.keys.get(index);
|
||||
if (hashedWeakRef == null) {
|
||||
return null;
|
||||
}
|
||||
Object obj = hashedWeakRef.get();
|
||||
if (Intrinsics.areEqual(key, obj)) {
|
||||
V v = (V) this.values.get(index);
|
||||
return v instanceof Marked ? (V) ((Marked) v).ref : v;
|
||||
}
|
||||
if (obj == null) {
|
||||
removeCleanedAt(index);
|
||||
}
|
||||
if (index == 0) {
|
||||
index = this.allocated;
|
||||
}
|
||||
index--;
|
||||
}
|
||||
}
|
||||
|
||||
private final void removeCleanedAt(int index) {
|
||||
Object obj;
|
||||
do {
|
||||
obj = this.values.get(index);
|
||||
if (obj == null || (obj instanceof Marked)) {
|
||||
return;
|
||||
}
|
||||
} while (!ChannelSegment$$ExternalSyntheticBackportWithForwarding0.m(this.values, index, obj, null));
|
||||
ConcurrentWeakMap.this.decrementSize();
|
||||
}
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public static /* synthetic */ Object putImpl$default(Core core, Object obj, Object obj2, HashedWeakRef hashedWeakRef, int i, Object obj3) {
|
||||
if ((i & 4) != 0) {
|
||||
hashedWeakRef = null;
|
||||
}
|
||||
return core.putImpl(obj, obj2, hashedWeakRef);
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:18:0x0058, code lost:
|
||||
|
||||
r6 = r5.values.get(r0);
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:19:0x0060, code lost:
|
||||
|
||||
if ((r6 instanceof kotlinx.coroutines.debug.internal.Marked) == false) goto L30;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:21:0x006d, code lost:
|
||||
|
||||
if (kotlinx.coroutines.channels.ChannelSegment$$ExternalSyntheticBackportWithForwarding0.m(r5.values, r0, r6, r7) == false) goto L50;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:23:0x006f, code lost:
|
||||
|
||||
return r6;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:27:0x0062, code lost:
|
||||
|
||||
r6 = kotlinx.coroutines.debug.internal.ConcurrentWeakMapKt.REHASH;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:28:0x0066, code lost:
|
||||
|
||||
return r6;
|
||||
*/
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public final java.lang.Object putImpl(K r6, V r7, kotlinx.coroutines.debug.internal.HashedWeakRef<K> r8) {
|
||||
/*
|
||||
r5 = this;
|
||||
int r0 = r6.hashCode()
|
||||
int r0 = r5.index(r0)
|
||||
r1 = 0
|
||||
L9:
|
||||
java.util.concurrent.atomic.AtomicReferenceArray r2 = r5.keys
|
||||
java.lang.Object r2 = r2.get(r0)
|
||||
kotlinx.coroutines.debug.internal.HashedWeakRef r2 = (kotlinx.coroutines.debug.internal.HashedWeakRef) r2
|
||||
if (r2 != 0) goto L47
|
||||
r2 = 0
|
||||
if (r7 != 0) goto L17
|
||||
return r2
|
||||
L17:
|
||||
if (r1 != 0) goto L31
|
||||
java.util.concurrent.atomic.AtomicIntegerFieldUpdater r3 = kotlinx.coroutines.debug.internal.ConcurrentWeakMap.Core.load$FU
|
||||
L1b:
|
||||
int r1 = r3.get(r5)
|
||||
int r4 = r5.threshold
|
||||
if (r1 < r4) goto L28
|
||||
kotlinx.coroutines.internal.Symbol r6 = kotlinx.coroutines.debug.internal.ConcurrentWeakMapKt.access$getREHASH$p()
|
||||
return r6
|
||||
L28:
|
||||
int r4 = r1 + 1
|
||||
boolean r1 = r3.compareAndSet(r5, r1, r4)
|
||||
if (r1 == 0) goto L1b
|
||||
r1 = 1
|
||||
L31:
|
||||
if (r8 != 0) goto L3e
|
||||
kotlinx.coroutines.debug.internal.HashedWeakRef r8 = new kotlinx.coroutines.debug.internal.HashedWeakRef
|
||||
kotlinx.coroutines.debug.internal.ConcurrentWeakMap<K, V> r3 = kotlinx.coroutines.debug.internal.ConcurrentWeakMap.this
|
||||
java.lang.ref.ReferenceQueue r3 = kotlinx.coroutines.debug.internal.ConcurrentWeakMap.access$getWeakRefQueue$p(r3)
|
||||
r8.<init>(r6, r3)
|
||||
L3e:
|
||||
java.util.concurrent.atomic.AtomicReferenceArray r3 = r5.keys
|
||||
boolean r2 = kotlinx.coroutines.channels.ChannelSegment$$ExternalSyntheticBackportWithForwarding0.m(r3, r0, r2, r8)
|
||||
if (r2 != 0) goto L58
|
||||
goto L9
|
||||
L47:
|
||||
java.lang.Object r2 = r2.get()
|
||||
boolean r3 = kotlin.jvm.internal.Intrinsics.areEqual(r6, r2)
|
||||
if (r3 == 0) goto L70
|
||||
if (r1 == 0) goto L58
|
||||
java.util.concurrent.atomic.AtomicIntegerFieldUpdater r6 = kotlinx.coroutines.debug.internal.ConcurrentWeakMap.Core.load$FU
|
||||
r6.decrementAndGet(r5)
|
||||
L58:
|
||||
java.util.concurrent.atomic.AtomicReferenceArray r6 = r5.values
|
||||
java.lang.Object r6 = r6.get(r0)
|
||||
boolean r8 = r6 instanceof kotlinx.coroutines.debug.internal.Marked
|
||||
if (r8 == 0) goto L67
|
||||
kotlinx.coroutines.internal.Symbol r6 = kotlinx.coroutines.debug.internal.ConcurrentWeakMapKt.access$getREHASH$p()
|
||||
return r6
|
||||
L67:
|
||||
java.util.concurrent.atomic.AtomicReferenceArray r8 = r5.values
|
||||
boolean r8 = kotlinx.coroutines.channels.ChannelSegment$$ExternalSyntheticBackportWithForwarding0.m(r8, r0, r6, r7)
|
||||
if (r8 == 0) goto L58
|
||||
return r6
|
||||
L70:
|
||||
if (r2 != 0) goto L75
|
||||
r5.removeCleanedAt(r0)
|
||||
L75:
|
||||
if (r0 != 0) goto L79
|
||||
int r0 = r5.allocated
|
||||
L79:
|
||||
int r0 = r0 + (-1)
|
||||
goto L9
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: kotlinx.coroutines.debug.internal.ConcurrentWeakMap.Core.putImpl(java.lang.Object, java.lang.Object, kotlinx.coroutines.debug.internal.HashedWeakRef):java.lang.Object");
|
||||
}
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public final ConcurrentWeakMap<K, V>.Core rehash() {
|
||||
Object obj;
|
||||
Symbol symbol;
|
||||
Marked mark;
|
||||
while (true) {
|
||||
ConcurrentWeakMap<K, V>.Core core = (ConcurrentWeakMap<K, V>.Core) ConcurrentWeakMap.this.new Core(Integer.highestOneBit(RangesKt.coerceAtLeast(ConcurrentWeakMap.this.size(), 4)) * 4);
|
||||
int i = this.allocated;
|
||||
for (int i2 = 0; i2 < i; i2++) {
|
||||
HashedWeakRef hashedWeakRef = (HashedWeakRef) this.keys.get(i2);
|
||||
Object obj2 = hashedWeakRef != null ? hashedWeakRef.get() : null;
|
||||
if (hashedWeakRef != null && obj2 == null) {
|
||||
removeCleanedAt(i2);
|
||||
}
|
||||
while (true) {
|
||||
obj = this.values.get(i2);
|
||||
if (!(obj instanceof Marked)) {
|
||||
AtomicReferenceArray atomicReferenceArray = this.values;
|
||||
mark = ConcurrentWeakMapKt.mark(obj);
|
||||
if (ChannelSegment$$ExternalSyntheticBackportWithForwarding0.m(atomicReferenceArray, i2, obj, mark)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
obj = ((Marked) obj).ref;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (obj2 != null && obj != null) {
|
||||
Object putImpl = core.putImpl(obj2, obj, hashedWeakRef);
|
||||
symbol = ConcurrentWeakMapKt.REHASH;
|
||||
if (putImpl != symbol) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return core;
|
||||
}
|
||||
}
|
||||
|
||||
public final void cleanWeakRef(HashedWeakRef<?> weakRef) {
|
||||
int index = index(weakRef.hash);
|
||||
while (true) {
|
||||
HashedWeakRef<?> hashedWeakRef = (HashedWeakRef) this.keys.get(index);
|
||||
if (hashedWeakRef == null) {
|
||||
return;
|
||||
}
|
||||
if (hashedWeakRef == weakRef) {
|
||||
removeCleanedAt(index);
|
||||
return;
|
||||
} else {
|
||||
if (index == 0) {
|
||||
index = this.allocated;
|
||||
}
|
||||
index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final <E> Iterator<E> keyValueIterator(Function2<? super K, ? super V, ? extends E> factory) {
|
||||
return new KeyValueIterator(factory);
|
||||
}
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u00000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010)\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0010\u0001\n\u0000\b\u0082\u0004\u0018\u0000*\u0004\b\u0002\u0010\u00012\b\u0012\u0004\u0012\u0002H\u00010\u0002B\u001f\u0012\u0018\u0010\u0003\u001a\u0014\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u0001\u0012\u0004\u0012\u00028\u00020\u0004¢\u0006\u0002\u0010\u0005J\b\u0010\u000b\u001a\u00020\fH\u0002J\t\u0010\r\u001a\u00020\u000eH\u0096\u0002J\u000e\u0010\u000f\u001a\u00028\u0002H\u0096\u0002¢\u0006\u0002\u0010\u0010J\b\u0010\u0011\u001a\u00020\u0012H\u0016R \u0010\u0003\u001a\u0014\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u0001\u0012\u0004\u0012\u00028\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\b\u001a\u00028\u0000X\u0082.¢\u0006\u0004\n\u0002\u0010\tR\u0010\u0010\n\u001a\u00028\u0001X\u0082.¢\u0006\u0004\n\u0002\u0010\t¨\u0006\u0013"}, d2 = {"Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$Core$KeyValueIterator;", "E", "", "factory", "Lkotlin/Function2;", "(Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$Core;Lkotlin/jvm/functions/Function2;)V", "index", "", "key", "Ljava/lang/Object;", "value", "findNext", "", "hasNext", "", "next", "()Ljava/lang/Object;", "remove", "", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
private final class KeyValueIterator<E> implements Iterator<E>, KMutableIterator {
|
||||
private final Function2<K, V, E> factory;
|
||||
private int index = -1;
|
||||
private K key;
|
||||
private V value;
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public KeyValueIterator(Function2<? super K, ? super V, ? extends E> function2) {
|
||||
this.factory = function2;
|
||||
findNext();
|
||||
}
|
||||
|
||||
private final void findNext() {
|
||||
K k;
|
||||
while (true) {
|
||||
int i = this.index + 1;
|
||||
this.index = i;
|
||||
if (i >= ((Core) Core.this).allocated) {
|
||||
return;
|
||||
}
|
||||
HashedWeakRef hashedWeakRef = (HashedWeakRef) ((Core) Core.this).keys.get(this.index);
|
||||
if (hashedWeakRef != null && (k = (K) hashedWeakRef.get()) != null) {
|
||||
this.key = k;
|
||||
Object obj = (V) ((Core) Core.this).values.get(this.index);
|
||||
if (obj instanceof Marked) {
|
||||
obj = (V) ((Marked) obj).ref;
|
||||
}
|
||||
if (obj != null) {
|
||||
this.value = (V) obj;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public boolean hasNext() {
|
||||
return this.index < ((Core) Core.this).allocated;
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public E next() {
|
||||
if (this.index >= ((Core) Core.this).allocated) {
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
Function2<K, V, E> function2 = this.factory;
|
||||
K k = this.key;
|
||||
if (k == false) {
|
||||
Intrinsics.throwUninitializedPropertyAccessException("key");
|
||||
k = (K) Unit.INSTANCE;
|
||||
}
|
||||
V v = this.value;
|
||||
if (v == false) {
|
||||
Intrinsics.throwUninitializedPropertyAccessException("value");
|
||||
v = (V) Unit.INSTANCE;
|
||||
}
|
||||
E e = (E) function2.invoke(k, v);
|
||||
findNext();
|
||||
return e;
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public Void remove() {
|
||||
ConcurrentWeakMapKt.noImpl();
|
||||
throw new KotlinNothingValueException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000\u0010\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010'\n\u0002\b\u000b\b\u0002\u0018\u0000*\u0004\b\u0002\u0010\u0001*\u0004\b\u0003\u0010\u00022\u000e\u0012\u0004\u0012\u0002H\u0001\u0012\u0004\u0012\u0002H\u00020\u0003B\u0015\u0012\u0006\u0010\u0004\u001a\u00028\u0002\u0012\u0006\u0010\u0005\u001a\u00028\u0003¢\u0006\u0002\u0010\u0006J\u0015\u0010\u000b\u001a\u00028\u00032\u0006\u0010\f\u001a\u00028\u0003H\u0016¢\u0006\u0002\u0010\rR\u0016\u0010\u0004\u001a\u00028\u0002X\u0096\u0004¢\u0006\n\n\u0002\u0010\t\u001a\u0004\b\u0007\u0010\bR\u0016\u0010\u0005\u001a\u00028\u0003X\u0096\u0004¢\u0006\n\n\u0002\u0010\t\u001a\u0004\b\n\u0010\b¨\u0006\u000e"}, d2 = {"Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$Entry;", "K", "V", "", "key", "value", "(Ljava/lang/Object;Ljava/lang/Object;)V", "getKey", "()Ljava/lang/Object;", "Ljava/lang/Object;", "getValue", "setValue", "newValue", "(Ljava/lang/Object;)Ljava/lang/Object;", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
static final class Entry<K, V> implements Map.Entry<K, V>, KMutableMap.Entry {
|
||||
private final K key;
|
||||
private final V value;
|
||||
|
||||
@Override // java.util.Map.Entry
|
||||
public K getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override // java.util.Map.Entry
|
||||
public V getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public Entry(K k, V v) {
|
||||
this.key = k;
|
||||
this.value = v;
|
||||
}
|
||||
|
||||
@Override // java.util.Map.Entry
|
||||
public V setValue(V newValue) {
|
||||
ConcurrentWeakMapKt.noImpl();
|
||||
throw new KotlinNothingValueException();
|
||||
}
|
||||
}
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000*\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0010)\n\u0000\b\u0082\u0004\u0018\u0000*\u0004\b\u0002\u0010\u00012\b\u0012\u0004\u0012\u0002H\u00010\u0002B\u001f\u0012\u0018\u0010\u0003\u001a\u0014\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u0001\u0012\u0004\u0012\u00028\u00020\u0004¢\u0006\u0002\u0010\u0005J\u0015\u0010\n\u001a\u00020\u000b2\u0006\u0010\f\u001a\u00028\u0002H\u0016¢\u0006\u0002\u0010\rJ\u000f\u0010\u000e\u001a\b\u0012\u0004\u0012\u00028\u00020\u000fH\u0096\u0002R \u0010\u0003\u001a\u0014\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u0001\u0012\u0004\u0012\u00028\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0006\u001a\u00020\u00078VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\b\u0010\t¨\u0006\u0010"}, d2 = {"Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap$KeyValueSet;", "E", "Lkotlin/collections/AbstractMutableSet;", "factory", "Lkotlin/Function2;", "(Lkotlinx/coroutines/debug/internal/ConcurrentWeakMap;Lkotlin/jvm/functions/Function2;)V", "size", "", "getSize", "()I", "add", "", "element", "(Ljava/lang/Object;)Z", "iterator", "", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
private final class KeyValueSet<E> extends AbstractMutableSet<E> {
|
||||
private final Function2<K, V, E> factory;
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
public KeyValueSet(Function2<? super K, ? super V, ? extends E> function2) {
|
||||
this.factory = function2;
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableSet
|
||||
public int getSize() {
|
||||
return ConcurrentWeakMap.this.size();
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.AbstractMutableSet, java.util.AbstractCollection, java.util.Collection, java.util.Set
|
||||
public boolean add(E element) {
|
||||
ConcurrentWeakMapKt.noImpl();
|
||||
throw new KotlinNothingValueException();
|
||||
}
|
||||
|
||||
@Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
|
||||
public Iterator<E> iterator() {
|
||||
return ((Core) ConcurrentWeakMap.core$FU.get(ConcurrentWeakMap.this)).keyValueIterator(this.factory);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.internal.Symbol;
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000\"\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0001\n\u0000\n\u0002\u0010\u0000\n\u0000\u001a\b\u0010\b\u001a\u00020\tH\u0002\u001a\u000e\u0010\n\u001a\u00020\u0003*\u0004\u0018\u00010\u000bH\u0002\"\u000e\u0010\u0000\u001a\u00020\u0001X\u0082T¢\u0006\u0002\n\u0000\"\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000\"\u000e\u0010\u0004\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000\"\u000e\u0010\u0005\u001a\u00020\u0001X\u0082T¢\u0006\u0002\n\u0000\"\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\f"}, d2 = {"MAGIC", "", "MARKED_NULL", "Lkotlinx/coroutines/debug/internal/Marked;", "MARKED_TRUE", "MIN_CAPACITY", "REHASH", "Lkotlinx/coroutines/internal/Symbol;", "noImpl", "", "mark", "", "kotlinx-coroutines-core"}, k = 2, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class ConcurrentWeakMapKt {
|
||||
private static final int MAGIC = -1640531527;
|
||||
private static final int MIN_CAPACITY = 16;
|
||||
private static final Symbol REHASH = new Symbol("REHASH");
|
||||
private static final Marked MARKED_NULL = new Marked(null);
|
||||
private static final Marked MARKED_TRUE = new Marked(true);
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public static final Marked mark(Object obj) {
|
||||
return obj == null ? MARKED_NULL : Intrinsics.areEqual(obj, (Object) true) ? MARKED_TRUE : new Marked(obj);
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public static final Void noImpl() {
|
||||
throw new UnsupportedOperationException("not implemented");
|
||||
}
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.CoroutineContext;
|
||||
import kotlin.coroutines.jvm.internal.CoroutineStackFrame;
|
||||
|
||||
/* compiled from: DebugCoroutineInfo.kt */
|
||||
@Metadata(d1 = {"\u0000D\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\t\n\u0002\b\u0003\n\u0002\u0010\u000e\n\u0002\b\u0003\b\u0001\u0018\u00002\u00020\u0001B\u0015\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006R\u0011\u0010\u0004\u001a\u00020\u0005¢\u0006\b\n\u0000\u001a\u0004\b\u0007\u0010\bR\u0013\u0010\t\u001a\u0004\u0018\u00010\n¢\u0006\b\n\u0000\u001a\u0004\b\u000b\u0010\fR\u0017\u0010\r\u001a\b\u0012\u0004\u0012\u00020\u000f0\u000e¢\u0006\b\n\u0000\u001a\u0004\b\u0010\u0010\u0011R\u0013\u0010\u0012\u001a\u0004\u0018\u00010\n¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\fR\u0019\u0010\u0014\u001a\b\u0012\u0004\u0012\u00020\u000f0\u000e8G¢\u0006\b\n\u0000\u001a\u0004\b\u0014\u0010\u0011R\u0013\u0010\u0015\u001a\u0004\u0018\u00010\u0016¢\u0006\b\n\u0000\u001a\u0004\b\u0017\u0010\u0018R\u0011\u0010\u0019\u001a\u00020\u001a¢\u0006\b\n\u0000\u001a\u0004\b\u001b\u0010\u001cR\u0011\u0010\u001d\u001a\u00020\u001e¢\u0006\b\n\u0000\u001a\u0004\b\u001f\u0010 ¨\u0006!"}, d2 = {"Lkotlinx/coroutines/debug/internal/DebugCoroutineInfo;", "", "source", "Lkotlinx/coroutines/debug/internal/DebugCoroutineInfoImpl;", "context", "Lkotlin/coroutines/CoroutineContext;", "(Lkotlinx/coroutines/debug/internal/DebugCoroutineInfoImpl;Lkotlin/coroutines/CoroutineContext;)V", "getContext", "()Lkotlin/coroutines/CoroutineContext;", "creationStackBottom", "Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "getCreationStackBottom", "()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "creationStackTrace", "", "Ljava/lang/StackTraceElement;", "getCreationStackTrace", "()Ljava/util/List;", "lastObservedFrame", "getLastObservedFrame", "lastObservedStackTrace", "lastObservedThread", "Ljava/lang/Thread;", "getLastObservedThread", "()Ljava/lang/Thread;", "sequenceNumber", "", "getSequenceNumber", "()J", "state", "", "getState", "()Ljava/lang/String;", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugCoroutineInfo {
|
||||
private final CoroutineContext context;
|
||||
private final CoroutineStackFrame creationStackBottom;
|
||||
private final List<StackTraceElement> creationStackTrace;
|
||||
private final CoroutineStackFrame lastObservedFrame;
|
||||
private final List<StackTraceElement> lastObservedStackTrace;
|
||||
private final Thread lastObservedThread;
|
||||
private final long sequenceNumber;
|
||||
private final String state;
|
||||
|
||||
public final CoroutineContext getContext() {
|
||||
return this.context;
|
||||
}
|
||||
|
||||
public final CoroutineStackFrame getCreationStackBottom() {
|
||||
return this.creationStackBottom;
|
||||
}
|
||||
|
||||
public final List<StackTraceElement> getCreationStackTrace() {
|
||||
return this.creationStackTrace;
|
||||
}
|
||||
|
||||
public final CoroutineStackFrame getLastObservedFrame() {
|
||||
return this.lastObservedFrame;
|
||||
}
|
||||
|
||||
public final Thread getLastObservedThread() {
|
||||
return this.lastObservedThread;
|
||||
}
|
||||
|
||||
public final long getSequenceNumber() {
|
||||
return this.sequenceNumber;
|
||||
}
|
||||
|
||||
public final String getState() {
|
||||
return this.state;
|
||||
}
|
||||
|
||||
public final List<StackTraceElement> lastObservedStackTrace() {
|
||||
return this.lastObservedStackTrace;
|
||||
}
|
||||
|
||||
public DebugCoroutineInfo(DebugCoroutineInfoImpl debugCoroutineInfoImpl, CoroutineContext coroutineContext) {
|
||||
this.context = coroutineContext;
|
||||
this.creationStackBottom = debugCoroutineInfoImpl.getCreationStackBottom();
|
||||
this.sequenceNumber = debugCoroutineInfoImpl.sequenceNumber;
|
||||
this.creationStackTrace = debugCoroutineInfoImpl.getCreationStackTrace();
|
||||
this.state = debugCoroutineInfoImpl.get_state();
|
||||
this.lastObservedThread = debugCoroutineInfoImpl.lastObservedThread;
|
||||
this.lastObservedFrame = debugCoroutineInfoImpl.getLastObservedFrame$kotlinx_coroutines_core();
|
||||
this.lastObservedStackTrace = debugCoroutineInfoImpl.lastObservedStackTrace();
|
||||
}
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.ResultKt;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.intrinsics.IntrinsicsKt;
|
||||
import kotlin.coroutines.jvm.internal.DebugMetadata;
|
||||
import kotlin.coroutines.jvm.internal.RestrictedSuspendLambda;
|
||||
import kotlin.jvm.functions.Function2;
|
||||
import kotlin.sequences.SequenceScope;
|
||||
|
||||
/* compiled from: DebugCoroutineInfoImpl.kt */
|
||||
@Metadata(d1 = {"\u0000\u000e\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0000\u0010\u0003\u001a\u00020\u0002*\b\u0012\u0004\u0012\u00020\u00010\u0000H\u008a@"}, d2 = {"Lkotlin/sequences/SequenceScope;", "Ljava/lang/StackTraceElement;", "", "<anonymous>"}, k = 3, mv = {1, 8, 0})
|
||||
@DebugMetadata(c = "kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$creationStackTrace$1", f = "DebugCoroutineInfoImpl.kt", i = {}, l = {158}, m = "invokeSuspend", n = {}, s = {})
|
||||
/* loaded from: classes.dex */
|
||||
final class DebugCoroutineInfoImpl$creationStackTrace$1 extends RestrictedSuspendLambda implements Function2<SequenceScope<? super StackTraceElement>, Continuation<? super Unit>, Object> {
|
||||
final /* synthetic */ StackTraceFrame $bottom;
|
||||
private /* synthetic */ Object L$0;
|
||||
int label;
|
||||
final /* synthetic */ DebugCoroutineInfoImpl this$0;
|
||||
|
||||
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
|
||||
DebugCoroutineInfoImpl$creationStackTrace$1(DebugCoroutineInfoImpl debugCoroutineInfoImpl, StackTraceFrame stackTraceFrame, Continuation<? super DebugCoroutineInfoImpl$creationStackTrace$1> continuation) {
|
||||
super(2, continuation);
|
||||
this.this$0 = debugCoroutineInfoImpl;
|
||||
this.$bottom = stackTraceFrame;
|
||||
}
|
||||
|
||||
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
|
||||
public final Continuation<Unit> create(Object obj, Continuation<?> continuation) {
|
||||
DebugCoroutineInfoImpl$creationStackTrace$1 debugCoroutineInfoImpl$creationStackTrace$1 = new DebugCoroutineInfoImpl$creationStackTrace$1(this.this$0, this.$bottom, continuation);
|
||||
debugCoroutineInfoImpl$creationStackTrace$1.L$0 = obj;
|
||||
return debugCoroutineInfoImpl$creationStackTrace$1;
|
||||
}
|
||||
|
||||
@Override // kotlin.jvm.functions.Function2
|
||||
public final Object invoke(SequenceScope<? super StackTraceElement> sequenceScope, Continuation<? super Unit> continuation) {
|
||||
return ((DebugCoroutineInfoImpl$creationStackTrace$1) create(sequenceScope, continuation)).invokeSuspend(Unit.INSTANCE);
|
||||
}
|
||||
|
||||
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
|
||||
public final Object invokeSuspend(Object obj) {
|
||||
Object yieldFrames;
|
||||
Object coroutine_suspended = IntrinsicsKt.getCOROUTINE_SUSPENDED();
|
||||
int i = this.label;
|
||||
if (i == 0) {
|
||||
ResultKt.throwOnFailure(obj);
|
||||
SequenceScope sequenceScope = (SequenceScope) this.L$0;
|
||||
this.label = 1;
|
||||
yieldFrames = this.this$0.yieldFrames(sequenceScope, this.$bottom.getCallerFrame(), this);
|
||||
if (yieldFrames == coroutine_suspended) {
|
||||
return coroutine_suspended;
|
||||
}
|
||||
} else {
|
||||
if (i != 1) {
|
||||
throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
|
||||
}
|
||||
ResultKt.throwOnFailure(obj);
|
||||
}
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import androidx.constraintlayout.core.motion.utils.TypedValues;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.jvm.internal.ContinuationImpl;
|
||||
import kotlin.coroutines.jvm.internal.DebugMetadata;
|
||||
|
||||
/* compiled from: DebugCoroutineInfoImpl.kt */
|
||||
@Metadata(k = 3, mv = {1, 8, 0}, xi = 48)
|
||||
@DebugMetadata(c = "kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl", f = "DebugCoroutineInfoImpl.kt", i = {0, 0, 0}, l = {163}, m = "yieldFrames", n = {"this", "$this$yieldFrames", TypedValues.AttributesType.S_FRAME}, s = {"L$0", "L$1", "L$2"})
|
||||
/* loaded from: classes.dex */
|
||||
final class DebugCoroutineInfoImpl$yieldFrames$1 extends ContinuationImpl {
|
||||
Object L$0;
|
||||
Object L$1;
|
||||
Object L$2;
|
||||
int label;
|
||||
/* synthetic */ Object result;
|
||||
final /* synthetic */ DebugCoroutineInfoImpl this$0;
|
||||
|
||||
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
|
||||
DebugCoroutineInfoImpl$yieldFrames$1(DebugCoroutineInfoImpl debugCoroutineInfoImpl, Continuation<? super DebugCoroutineInfoImpl$yieldFrames$1> continuation) {
|
||||
super(continuation);
|
||||
this.this$0 = debugCoroutineInfoImpl;
|
||||
}
|
||||
|
||||
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
|
||||
public final Object invokeSuspend(Object obj) {
|
||||
Object yieldFrames;
|
||||
this.result = obj;
|
||||
this.label |= Integer.MIN_VALUE;
|
||||
yieldFrames = this.this$0.yieldFrames(null, null, this);
|
||||
return yieldFrames;
|
||||
}
|
||||
}
|
@ -0,0 +1,190 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import androidx.constraintlayout.core.motion.utils.TypedValues;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.CoroutineContext;
|
||||
import kotlin.coroutines.jvm.internal.CoroutineStackFrame;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.sequences.SequencesKt;
|
||||
|
||||
/* compiled from: DebugCoroutineInfoImpl.kt */
|
||||
@Metadata(d1 = {"\u0000j\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0005\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0000\u0018\u00002\u00020\u0001B!\u0012\b\u0010\u0002\u001a\u0004\u0018\u00010\u0003\u0012\b\u0010\u0004\u001a\u0004\u0018\u00010\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007¢\u0006\u0002\u0010\bJ\u000e\u0010\u0013\u001a\b\u0012\u0004\u0012\u00020\u00150\u0014H\u0002J\f\u0010%\u001a\b\u0012\u0004\u0012\u00020\u00150\u0014J\b\u0010&\u001a\u00020\u000eH\u0016J)\u0010'\u001a\u00020(2\u0006\u0010 \u001a\u00020\u000e2\n\u0010)\u001a\u0006\u0012\u0002\b\u00030*2\u0006\u0010+\u001a\u00020,H\u0000¢\u0006\u0002\b-J%\u0010.\u001a\u00020(*\b\u0012\u0004\u0012\u00020\u00150/2\b\u0010)\u001a\u0004\u0018\u00010\fH\u0082Pø\u0001\u0000¢\u0006\u0002\u00100R\u0016\u0010\t\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u00030\nX\u0082\u0004¢\u0006\u0002\n\u0000R\u0016\u0010\u000b\u001a\n\u0012\u0004\u0012\u00020\f\u0018\u00010\nX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\r\u001a\u00020\u000eX\u0082\u000e¢\u0006\u0002\n\u0000R\u0013\u0010\u0002\u001a\u0004\u0018\u00010\u00038F¢\u0006\u0006\u001a\u0004\b\u000f\u0010\u0010R\u0013\u0010\u0004\u001a\u0004\u0018\u00010\u0005¢\u0006\b\n\u0000\u001a\u0004\b\u0011\u0010\u0012R\u0017\u0010\u0013\u001a\b\u0012\u0004\u0012\u00020\u00150\u00148F¢\u0006\u0006\u001a\u0004\b\u0016\u0010\u0017R(\u0010\u0019\u001a\u0004\u0018\u00010\f2\b\u0010\u0018\u001a\u0004\u0018\u00010\f8@@@X\u0080\u000e¢\u0006\f\u001a\u0004\b\u001a\u0010\u001b\"\u0004\b\u001c\u0010\u001dR\u0014\u0010\u001e\u001a\u0004\u0018\u00010\u001f8\u0000@\u0000X\u0081\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0006\u001a\u00020\u00078\u0000X\u0081\u0004¢\u0006\u0002\n\u0000R\u0011\u0010 \u001a\u00020\u000e8F¢\u0006\u0006\u001a\u0004\b!\u0010\"R\u000e\u0010#\u001a\u00020$X\u0082\u000e¢\u0006\u0002\n\u0000\u0082\u0002\u0004\n\u0002\b\u0019¨\u00061"}, d2 = {"Lkotlinx/coroutines/debug/internal/DebugCoroutineInfoImpl;", "", "context", "Lkotlin/coroutines/CoroutineContext;", "creationStackBottom", "Lkotlinx/coroutines/debug/internal/StackTraceFrame;", "sequenceNumber", "", "(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/debug/internal/StackTraceFrame;J)V", "_context", "Ljava/lang/ref/WeakReference;", "_lastObservedFrame", "Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "_state", "", "getContext", "()Lkotlin/coroutines/CoroutineContext;", "getCreationStackBottom", "()Lkotlinx/coroutines/debug/internal/StackTraceFrame;", "creationStackTrace", "", "Ljava/lang/StackTraceElement;", "getCreationStackTrace", "()Ljava/util/List;", "value", "lastObservedFrame", "getLastObservedFrame$kotlinx_coroutines_core", "()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "setLastObservedFrame$kotlinx_coroutines_core", "(Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;)V", "lastObservedThread", "Ljava/lang/Thread;", "state", "getState", "()Ljava/lang/String;", "unmatchedResume", "", "lastObservedStackTrace", "toString", "updateState", "", TypedValues.AttributesType.S_FRAME, "Lkotlin/coroutines/Continuation;", "shouldBeMatched", "", "updateState$kotlinx_coroutines_core", "yieldFrames", "Lkotlin/sequences/SequenceScope;", "(Lkotlin/sequences/SequenceScope;Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugCoroutineInfoImpl {
|
||||
private final WeakReference<CoroutineContext> _context;
|
||||
private volatile WeakReference<CoroutineStackFrame> _lastObservedFrame;
|
||||
private volatile String _state = DebugCoroutineInfoImplKt.CREATED;
|
||||
private final StackTraceFrame creationStackBottom;
|
||||
public volatile Thread lastObservedThread;
|
||||
public final long sequenceNumber;
|
||||
private int unmatchedResume;
|
||||
|
||||
public final StackTraceFrame getCreationStackBottom() {
|
||||
return this.creationStackBottom;
|
||||
}
|
||||
|
||||
/* renamed from: getState, reason: from getter */
|
||||
public final String get_state() {
|
||||
return this._state;
|
||||
}
|
||||
|
||||
public DebugCoroutineInfoImpl(CoroutineContext coroutineContext, StackTraceFrame stackTraceFrame, long j) {
|
||||
this.creationStackBottom = stackTraceFrame;
|
||||
this.sequenceNumber = j;
|
||||
this._context = new WeakReference<>(coroutineContext);
|
||||
}
|
||||
|
||||
public final CoroutineContext getContext() {
|
||||
return this._context.get();
|
||||
}
|
||||
|
||||
public final List<StackTraceElement> getCreationStackTrace() {
|
||||
return creationStackTrace();
|
||||
}
|
||||
|
||||
public final synchronized void updateState$kotlinx_coroutines_core(String state, Continuation<?> frame, boolean shouldBeMatched) {
|
||||
if (Intrinsics.areEqual(this._state, DebugCoroutineInfoImplKt.RUNNING) && Intrinsics.areEqual(state, DebugCoroutineInfoImplKt.RUNNING) && shouldBeMatched) {
|
||||
this.unmatchedResume++;
|
||||
} else if (this.unmatchedResume > 0 && Intrinsics.areEqual(state, DebugCoroutineInfoImplKt.SUSPENDED)) {
|
||||
this.unmatchedResume--;
|
||||
return;
|
||||
}
|
||||
if (Intrinsics.areEqual(this._state, state) && Intrinsics.areEqual(state, DebugCoroutineInfoImplKt.SUSPENDED) && getLastObservedFrame$kotlinx_coroutines_core() != null) {
|
||||
return;
|
||||
}
|
||||
this._state = state;
|
||||
setLastObservedFrame$kotlinx_coroutines_core(frame instanceof CoroutineStackFrame ? (CoroutineStackFrame) frame : null);
|
||||
this.lastObservedThread = Intrinsics.areEqual(state, DebugCoroutineInfoImplKt.RUNNING) ? Thread.currentThread() : null;
|
||||
}
|
||||
|
||||
public final CoroutineStackFrame getLastObservedFrame$kotlinx_coroutines_core() {
|
||||
WeakReference<CoroutineStackFrame> weakReference = this._lastObservedFrame;
|
||||
if (weakReference != null) {
|
||||
return weakReference.get();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public final void setLastObservedFrame$kotlinx_coroutines_core(CoroutineStackFrame coroutineStackFrame) {
|
||||
this._lastObservedFrame = coroutineStackFrame != null ? new WeakReference<>(coroutineStackFrame) : null;
|
||||
}
|
||||
|
||||
public final List<StackTraceElement> lastObservedStackTrace() {
|
||||
CoroutineStackFrame lastObservedFrame$kotlinx_coroutines_core = getLastObservedFrame$kotlinx_coroutines_core();
|
||||
if (lastObservedFrame$kotlinx_coroutines_core == null) {
|
||||
return CollectionsKt.emptyList();
|
||||
}
|
||||
ArrayList arrayList = new ArrayList();
|
||||
while (lastObservedFrame$kotlinx_coroutines_core != null) {
|
||||
StackTraceElement stackTraceElement = lastObservedFrame$kotlinx_coroutines_core.getStackTraceElement();
|
||||
if (stackTraceElement != null) {
|
||||
arrayList.add(stackTraceElement);
|
||||
}
|
||||
lastObservedFrame$kotlinx_coroutines_core = lastObservedFrame$kotlinx_coroutines_core.getCallerFrame();
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
private final List<StackTraceElement> creationStackTrace() {
|
||||
StackTraceFrame stackTraceFrame = this.creationStackBottom;
|
||||
if (stackTraceFrame == null) {
|
||||
return CollectionsKt.emptyList();
|
||||
}
|
||||
return SequencesKt.toList(SequencesKt.sequence(new DebugCoroutineInfoImpl$creationStackTrace$1(this, stackTraceFrame, null)));
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* JADX WARN: Removed duplicated region for block: B:13:0x0069 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:17:0x0044 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:19:0x0047 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:27:0x003e */
|
||||
/* JADX WARN: Removed duplicated region for block: B:8:0x0024 */
|
||||
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:20:0x004b -> B:11:0x0062). Please report as a decompilation issue!!! */
|
||||
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:24:0x005c -> B:10:0x005f). Please report as a decompilation issue!!! */
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public final java.lang.Object yieldFrames(kotlin.sequences.SequenceScope<? super java.lang.StackTraceElement> r6, kotlin.coroutines.jvm.internal.CoroutineStackFrame r7, kotlin.coroutines.Continuation<? super kotlin.Unit> r8) {
|
||||
/*
|
||||
r5 = this;
|
||||
boolean r0 = r8 instanceof kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$yieldFrames$1
|
||||
if (r0 == 0) goto L14
|
||||
r0 = r8
|
||||
kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$yieldFrames$1 r0 = (kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$yieldFrames$1) r0
|
||||
int r1 = r0.label
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r1 = r1 & r2
|
||||
if (r1 == 0) goto L14
|
||||
int r8 = r0.label
|
||||
int r8 = r8 - r2
|
||||
r0.label = r8
|
||||
goto L19
|
||||
L14:
|
||||
kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$yieldFrames$1 r0 = new kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl$yieldFrames$1
|
||||
r0.<init>(r5, r8)
|
||||
L19:
|
||||
java.lang.Object r8 = r0.result
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.label
|
||||
r3 = 1
|
||||
if (r2 == 0) goto L3e
|
||||
if (r2 != r3) goto L36
|
||||
java.lang.Object r6 = r0.L$2
|
||||
kotlin.coroutines.jvm.internal.CoroutineStackFrame r6 = (kotlin.coroutines.jvm.internal.CoroutineStackFrame) r6
|
||||
java.lang.Object r7 = r0.L$1
|
||||
kotlin.sequences.SequenceScope r7 = (kotlin.sequences.SequenceScope) r7
|
||||
java.lang.Object r2 = r0.L$0
|
||||
kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl r2 = (kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl) r2
|
||||
kotlin.ResultKt.throwOnFailure(r8)
|
||||
goto L5f
|
||||
L36:
|
||||
java.lang.IllegalStateException r6 = new java.lang.IllegalStateException
|
||||
java.lang.String r7 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r6.<init>(r7)
|
||||
throw r6
|
||||
L3e:
|
||||
kotlin.ResultKt.throwOnFailure(r8)
|
||||
r2 = r5
|
||||
L42:
|
||||
if (r7 != 0) goto L47
|
||||
kotlin.Unit r6 = kotlin.Unit.INSTANCE
|
||||
return r6
|
||||
L47:
|
||||
java.lang.StackTraceElement r8 = r7.getStackTraceElement()
|
||||
if (r8 == 0) goto L62
|
||||
r0.L$0 = r2
|
||||
r0.L$1 = r6
|
||||
r0.L$2 = r7
|
||||
r0.label = r3
|
||||
java.lang.Object r8 = r6.yield(r8, r0)
|
||||
if (r8 != r1) goto L5c
|
||||
return r1
|
||||
L5c:
|
||||
r4 = r7
|
||||
r7 = r6
|
||||
r6 = r4
|
||||
L5f:
|
||||
r4 = r7
|
||||
r7 = r6
|
||||
r6 = r4
|
||||
L62:
|
||||
kotlin.coroutines.jvm.internal.CoroutineStackFrame r7 = r7.getCallerFrame()
|
||||
if (r7 == 0) goto L69
|
||||
goto L42
|
||||
L69:
|
||||
kotlin.Unit r6 = kotlin.Unit.INSTANCE
|
||||
return r6
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: kotlinx.coroutines.debug.internal.DebugCoroutineInfoImpl.yieldFrames(kotlin.sequences.SequenceScope, kotlin.coroutines.jvm.internal.CoroutineStackFrame, kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "DebugCoroutineInfo(state=" + get_state() + ",context=" + getContext() + ')';
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
|
||||
/* compiled from: DebugCoroutineInfoImpl.kt */
|
||||
@Metadata(d1 = {"\u0000\n\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0003\"\u000e\u0010\u0000\u001a\u00020\u0001X\u0080T¢\u0006\u0002\n\u0000\"\u000e\u0010\u0002\u001a\u00020\u0001X\u0080T¢\u0006\u0002\n\u0000\"\u000e\u0010\u0003\u001a\u00020\u0001X\u0080T¢\u0006\u0002\n\u0000¨\u0006\u0004"}, d2 = {DebugCoroutineInfoImplKt.CREATED, "", DebugCoroutineInfoImplKt.RUNNING, DebugCoroutineInfoImplKt.SUSPENDED, "kotlinx-coroutines-core"}, k = 2, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugCoroutineInfoImplKt {
|
||||
public static final String CREATED = "CREATED";
|
||||
public static final String RUNNING = "RUNNING";
|
||||
public static final String SUSPENDED = "SUSPENDED";
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.Volatile;
|
||||
import kotlin.jvm.internal.DefaultConstructorMarker;
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* compiled from: DebugProbesImpl.kt */
|
||||
@Metadata(k = 3, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugProbesImpl$Installations$kotlinx$VolatileWrapper {
|
||||
private static final AtomicIntegerFieldUpdater installations$FU = AtomicIntegerFieldUpdater.newUpdater(DebugProbesImpl$Installations$kotlinx$VolatileWrapper.class, "installations");
|
||||
|
||||
@Volatile
|
||||
private volatile int installations;
|
||||
|
||||
private DebugProbesImpl$Installations$kotlinx$VolatileWrapper() {
|
||||
}
|
||||
|
||||
public /* synthetic */ DebugProbesImpl$Installations$kotlinx$VolatileWrapper(DefaultConstructorMarker defaultConstructorMarker) {
|
||||
this();
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.Volatile;
|
||||
import kotlin.jvm.internal.DefaultConstructorMarker;
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* compiled from: DebugProbesImpl.kt */
|
||||
@Metadata(k = 3, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugProbesImpl$SequenceNumber$kotlinx$VolatileWrapper {
|
||||
private static final AtomicLongFieldUpdater sequenceNumber$FU = AtomicLongFieldUpdater.newUpdater(DebugProbesImpl$SequenceNumber$kotlinx$VolatileWrapper.class, "sequenceNumber");
|
||||
|
||||
@Volatile
|
||||
private volatile long sequenceNumber;
|
||||
|
||||
private DebugProbesImpl$SequenceNumber$kotlinx$VolatileWrapper() {
|
||||
}
|
||||
|
||||
public /* synthetic */ DebugProbesImpl$SequenceNumber$kotlinx$VolatileWrapper(DefaultConstructorMarker defaultConstructorMarker) {
|
||||
this();
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.util.Comparator;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.comparisons.ComparisonsKt;
|
||||
import kotlinx.coroutines.debug.internal.DebugProbesImpl;
|
||||
|
||||
/* compiled from: Comparisons.kt */
|
||||
@Metadata(d1 = {"\u0000\n\n\u0000\n\u0002\u0010\b\n\u0002\b\u0007\u0010\u0000\u001a\u00020\u0001\"\u0004\b\u0000\u0010\u00022\u000e\u0010\u0003\u001a\n \u0004*\u0004\u0018\u0001H\u0002H\u00022\u000e\u0010\u0005\u001a\n \u0004*\u0004\u0018\u0001H\u0002H\u0002H\n¢\u0006\u0004\b\u0006\u0010\u0007¨\u0006\b"}, d2 = {"<anonymous>", "", "T", "a", "kotlin.jvm.PlatformType", "b", "compare", "(Ljava/lang/Object;Ljava/lang/Object;)I", "kotlin/comparisons/ComparisonsKt__ComparisonsKt$compareBy$2"}, k = 3, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugProbesImpl$dumpCoroutinesInfoImpl$$inlined$sortedBy$1<T> implements Comparator {
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
@Override // java.util.Comparator
|
||||
public final int compare(T t, T t2) {
|
||||
return ComparisonsKt.compareValues(Long.valueOf(((DebugProbesImpl.CoroutineOwner) t).info.sequenceNumber), Long.valueOf(((DebugProbesImpl.CoroutineOwner) t2).info.sequenceNumber));
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,38 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.text.Typography;
|
||||
|
||||
/* compiled from: DebugProbesImpl.kt */
|
||||
@Metadata(d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u000e\n\u0000\u001a\f\u0010\u0000\u001a\u00020\u0001*\u00020\u0001H\u0002¨\u0006\u0002"}, d2 = {"repr", "", "kotlinx-coroutines-core"}, k = 2, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugProbesImplKt {
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public static final String repr(String str) {
|
||||
StringBuilder sb = new StringBuilder("\"");
|
||||
int length = str.length();
|
||||
for (int i = 0; i < length; i++) {
|
||||
char charAt = str.charAt(i);
|
||||
if (charAt == '\"') {
|
||||
sb.append("\\\"");
|
||||
} else if (charAt == '\\') {
|
||||
sb.append("\\\\");
|
||||
} else if (charAt == '\b') {
|
||||
sb.append("\\b");
|
||||
} else if (charAt == '\n') {
|
||||
sb.append("\\n");
|
||||
} else if (charAt == '\r') {
|
||||
sb.append("\\r");
|
||||
} else if (charAt == '\t') {
|
||||
sb.append("\\t");
|
||||
} else {
|
||||
sb.append(charAt);
|
||||
}
|
||||
}
|
||||
sb.append(Typography.quote);
|
||||
String sb2 = sb.toString();
|
||||
Intrinsics.checkNotNullExpressionValue(sb2, "StringBuilder().apply(builderAction).toString()");
|
||||
return sb2;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import androidx.constraintlayout.core.motion.utils.TypedValues;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.Continuation;
|
||||
|
||||
/* compiled from: DebugProbes.kt */
|
||||
@Metadata(d1 = {"\u0000\u0012\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0002\b\u0003\u001a\"\u0010\u0000\u001a\b\u0012\u0004\u0012\u0002H\u00020\u0001\"\u0004\b\u0000\u0010\u00022\f\u0010\u0003\u001a\b\u0012\u0004\u0012\u0002H\u00020\u0001H\u0000\u001a\u0014\u0010\u0004\u001a\u00020\u00052\n\u0010\u0006\u001a\u0006\u0012\u0002\b\u00030\u0001H\u0000\u001a\u0014\u0010\u0007\u001a\u00020\u00052\n\u0010\u0006\u001a\u0006\u0012\u0002\b\u00030\u0001H\u0000¨\u0006\b"}, d2 = {"probeCoroutineCreated", "Lkotlin/coroutines/Continuation;", "T", "completion", "probeCoroutineResumed", "", TypedValues.AttributesType.S_FRAME, "probeCoroutineSuspended", "kotlinx-coroutines-core"}, k = 2, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebugProbesKt {
|
||||
public static final void probeCoroutineResumed(Continuation<?> continuation) {
|
||||
DebugProbesImpl.INSTANCE.probeCoroutineResumed$kotlinx_coroutines_core(continuation);
|
||||
}
|
||||
|
||||
public static final void probeCoroutineSuspended(Continuation<?> continuation) {
|
||||
DebugProbesImpl.INSTANCE.probeCoroutineSuspended$kotlinx_coroutines_core(continuation);
|
||||
}
|
||||
|
||||
public static final <T> Continuation<T> probeCoroutineCreated(Continuation<? super T> continuation) {
|
||||
return DebugProbesImpl.INSTANCE.probeCoroutineCreated$kotlinx_coroutines_core(continuation);
|
||||
}
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.Thread;
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.ContinuationInterceptor;
|
||||
import kotlin.coroutines.CoroutineContext;
|
||||
import kotlinx.coroutines.CoroutineId;
|
||||
import kotlinx.coroutines.CoroutineName;
|
||||
|
||||
/* compiled from: DebuggerInfo.kt */
|
||||
@Metadata(d1 = {"\u00004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\b\u0004\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u000e\b\u0001\u0018\u00002\u00020\u0001B\u0015\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006R\u0015\u0010\u0007\u001a\u0004\u0018\u00010\b¢\u0006\n\n\u0002\u0010\u000b\u001a\u0004\b\t\u0010\nR\u0013\u0010\f\u001a\u0004\u0018\u00010\r¢\u0006\b\n\u0000\u001a\u0004\b\u000e\u0010\u000fR\u0017\u0010\u0010\u001a\b\u0012\u0004\u0012\u00020\u00120\u0011¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\u0014R\u0013\u0010\u0015\u001a\u0004\u0018\u00010\r¢\u0006\b\n\u0000\u001a\u0004\b\u0016\u0010\u000fR\u0013\u0010\u0017\u001a\u0004\u0018\u00010\r¢\u0006\b\n\u0000\u001a\u0004\b\u0018\u0010\u000fR\u0013\u0010\u0019\u001a\u0004\u0018\u00010\r¢\u0006\b\n\u0000\u001a\u0004\b\u001a\u0010\u000fR\u0011\u0010\u001b\u001a\u00020\b¢\u0006\b\n\u0000\u001a\u0004\b\u001c\u0010\u001dR\u0011\u0010\u001e\u001a\u00020\r¢\u0006\b\n\u0000\u001a\u0004\b\u001f\u0010\u000f¨\u0006 "}, d2 = {"Lkotlinx/coroutines/debug/internal/DebuggerInfo;", "Ljava/io/Serializable;", "source", "Lkotlinx/coroutines/debug/internal/DebugCoroutineInfoImpl;", "context", "Lkotlin/coroutines/CoroutineContext;", "(Lkotlinx/coroutines/debug/internal/DebugCoroutineInfoImpl;Lkotlin/coroutines/CoroutineContext;)V", "coroutineId", "", "getCoroutineId", "()Ljava/lang/Long;", "Ljava/lang/Long;", "dispatcher", "", "getDispatcher", "()Ljava/lang/String;", "lastObservedStackTrace", "", "Ljava/lang/StackTraceElement;", "getLastObservedStackTrace", "()Ljava/util/List;", "lastObservedThreadName", "getLastObservedThreadName", "lastObservedThreadState", "getLastObservedThreadState", "name", "getName", "sequenceNumber", "getSequenceNumber", "()J", "state", "getState", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class DebuggerInfo implements Serializable {
|
||||
private final Long coroutineId;
|
||||
private final String dispatcher;
|
||||
private final List<StackTraceElement> lastObservedStackTrace;
|
||||
private final String lastObservedThreadName;
|
||||
private final String lastObservedThreadState;
|
||||
private final String name;
|
||||
private final long sequenceNumber;
|
||||
private final String state;
|
||||
|
||||
public final Long getCoroutineId() {
|
||||
return this.coroutineId;
|
||||
}
|
||||
|
||||
public final String getDispatcher() {
|
||||
return this.dispatcher;
|
||||
}
|
||||
|
||||
public final List<StackTraceElement> getLastObservedStackTrace() {
|
||||
return this.lastObservedStackTrace;
|
||||
}
|
||||
|
||||
public final String getLastObservedThreadName() {
|
||||
return this.lastObservedThreadName;
|
||||
}
|
||||
|
||||
public final String getLastObservedThreadState() {
|
||||
return this.lastObservedThreadState;
|
||||
}
|
||||
|
||||
public final String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public final long getSequenceNumber() {
|
||||
return this.sequenceNumber;
|
||||
}
|
||||
|
||||
public final String getState() {
|
||||
return this.state;
|
||||
}
|
||||
|
||||
public DebuggerInfo(DebugCoroutineInfoImpl debugCoroutineInfoImpl, CoroutineContext coroutineContext) {
|
||||
Thread.State state;
|
||||
CoroutineId coroutineId = (CoroutineId) coroutineContext.get(CoroutineId.INSTANCE);
|
||||
this.coroutineId = coroutineId != null ? Long.valueOf(coroutineId.getId()) : null;
|
||||
ContinuationInterceptor continuationInterceptor = (ContinuationInterceptor) coroutineContext.get(ContinuationInterceptor.INSTANCE);
|
||||
this.dispatcher = continuationInterceptor != null ? continuationInterceptor.toString() : null;
|
||||
CoroutineName coroutineName = (CoroutineName) coroutineContext.get(CoroutineName.INSTANCE);
|
||||
this.name = coroutineName != null ? coroutineName.getName() : null;
|
||||
this.state = debugCoroutineInfoImpl.get_state();
|
||||
Thread thread = debugCoroutineInfoImpl.lastObservedThread;
|
||||
this.lastObservedThreadState = (thread == null || (state = thread.getState()) == null) ? null : state.toString();
|
||||
Thread thread2 = debugCoroutineInfoImpl.lastObservedThread;
|
||||
this.lastObservedThreadName = thread2 != null ? thread2.getName() : null;
|
||||
this.lastObservedStackTrace = debugCoroutineInfoImpl.lastObservedStackTrace();
|
||||
this.sequenceNumber = debugCoroutineInfoImpl.sequenceNumber;
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import java.lang.ref.ReferenceQueue;
|
||||
import java.lang.ref.WeakReference;
|
||||
import kotlin.Metadata;
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000\u001c\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\b\u0000\u0018\u0000*\u0004\b\u0000\u0010\u00012\b\u0012\u0004\u0012\u0002H\u00010\u0002B\u001d\u0012\u0006\u0010\u0003\u001a\u00028\u0000\u0012\u000e\u0010\u0004\u001a\n\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0005¢\u0006\u0002\u0010\u0006R\u0010\u0010\u0007\u001a\u00020\b8\u0006X\u0087\u0004¢\u0006\u0002\n\u0000¨\u0006\t"}, d2 = {"Lkotlinx/coroutines/debug/internal/HashedWeakRef;", "T", "Ljava/lang/ref/WeakReference;", "ref", "queue", "Ljava/lang/ref/ReferenceQueue;", "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V", "hash", "", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class HashedWeakRef<T> extends WeakReference<T> {
|
||||
public final int hash;
|
||||
|
||||
public HashedWeakRef(T t, ReferenceQueue<T> referenceQueue) {
|
||||
super(t, referenceQueue);
|
||||
this.hash = t != null ? t.hashCode() : 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
|
||||
/* compiled from: ConcurrentWeakMap.kt */
|
||||
@Metadata(d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0003\b\u0002\u0018\u00002\u00020\u0001B\u000f\u0012\b\u0010\u0002\u001a\u0004\u0018\u00010\u0001¢\u0006\u0002\u0010\u0003R\u0012\u0010\u0002\u001a\u0004\u0018\u00010\u00018\u0006X\u0087\u0004¢\u0006\u0002\n\u0000¨\u0006\u0004"}, d2 = {"Lkotlinx/coroutines/debug/internal/Marked;", "", "ref", "(Ljava/lang/Object;)V", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
final class Marked {
|
||||
public final Object ref;
|
||||
|
||||
public Marked(Object obj) {
|
||||
this.ref = obj;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package kotlinx.coroutines.debug.internal;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.jvm.internal.CoroutineStackFrame;
|
||||
|
||||
/* compiled from: StackTraceFrame.kt */
|
||||
@Metadata(d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\b\u0000\u0018\u00002\u00020\u0001B\u0017\u0012\b\u0010\u0002\u001a\u0004\u0018\u00010\u0001\u0012\u0006\u0010\u0003\u001a\u00020\u0004¢\u0006\u0002\u0010\u0005J\b\u0010\b\u001a\u00020\u0004H\u0016R\u0016\u0010\u0002\u001a\u0004\u0018\u00010\u0001X\u0096\u0004¢\u0006\b\n\u0000\u001a\u0004\b\u0006\u0010\u0007R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\t"}, d2 = {"Lkotlinx/coroutines/debug/internal/StackTraceFrame;", "Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "callerFrame", "stackTraceElement", "Ljava/lang/StackTraceElement;", "(Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;Ljava/lang/StackTraceElement;)V", "getCallerFrame", "()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "getStackTraceElement", "kotlinx-coroutines-core"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class StackTraceFrame implements CoroutineStackFrame {
|
||||
private final CoroutineStackFrame callerFrame;
|
||||
private final StackTraceElement stackTraceElement;
|
||||
|
||||
@Override // kotlin.coroutines.jvm.internal.CoroutineStackFrame
|
||||
public CoroutineStackFrame getCallerFrame() {
|
||||
return this.callerFrame;
|
||||
}
|
||||
|
||||
@Override // kotlin.coroutines.jvm.internal.CoroutineStackFrame
|
||||
public StackTraceElement getStackTraceElement() {
|
||||
return this.stackTraceElement;
|
||||
}
|
||||
|
||||
public StackTraceFrame(CoroutineStackFrame coroutineStackFrame, StackTraceElement stackTraceElement) {
|
||||
this.callerFrame = coroutineStackFrame;
|
||||
this.stackTraceElement = stackTraceElement;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user