diff --git a/kotlinx-coroutines-core/jvm/src/internal/ExceptionsConstructor.kt b/kotlinx-coroutines-core/jvm/src/internal/ExceptionsConstructor.kt index 7f26099064..a3d276ffc9 100644 --- a/kotlinx-coroutines-core/jvm/src/internal/ExceptionsConstructor.kt +++ b/kotlinx-coroutines-core/jvm/src/internal/ExceptionsConstructor.kt @@ -19,7 +19,7 @@ internal fun tryCopyException(exception: E): E? { if (exception is CopyableThrowable<*>) { return runCatching { exception.createCopy() as E? }.getOrNull() } - return WeakMapCtorCache.get(exception.javaClass).invoke(exception) as E? + return ClassValueCtorCache.get(exception.javaClass).invoke(exception) as E? } private fun createConstructor(clz: Class): Ctor { @@ -90,6 +90,7 @@ private object WeakMapCtorCache : CtorCache() { } } +@IgnoreJreRequirement private object ClassValueCtorCache : CtorCache() { private val cache = object : ClassValue() { override fun computeValue(type: Class<*>?): Ctor {