(CoroutineDebugger) Keep coroutine info list reference from collection

#KT-38606 Fixed
This commit is contained in:
Vladimir Ilmov
2020-05-12 11:23:00 +02:00
parent 5a5c1c3420
commit 385ddba2d9
2 changed files with 8 additions and 1 deletions
@@ -42,7 +42,7 @@ class DebugProbesImpl private constructor(context: DefaultExecutionContext) :
fun dumpCoroutinesInfo(context: DefaultExecutionContext): List<MirrorOfCoroutineInfo> {
instance ?: return emptyList()
val coroutinesInfoReference = objectValue(instance, dumpMethod, context)
val coroutinesInfoReference = context.keepReference(objectValue(instance, dumpMethod, context))
val referenceList = javaLangListMirror.mirror(coroutinesInfoReference, context) ?: return emptyList()
return referenceList.values.mapNotNull { coroutineInfo.mirror(it, context) }
}
@@ -42,6 +42,13 @@ class DefaultExecutionContext(evaluationContext: EvaluationContextImpl) : BaseEx
val frameProxy: StackFrameProxyImpl?
get() =
evaluationContext.frameProxy
fun keepReference(ref: ObjectReference?): ObjectReference? {
ref?.let {
super.keepReference(ref)
}
return ref
}
}
sealed class BaseExecutionContext(val evaluationContext: EvaluationContextImpl) {