(CoroutineDebugger) Keep coroutine info list reference from collection
#KT-38606 Fixed
This commit is contained in:
+1
-1
@@ -42,7 +42,7 @@ class DebugProbesImpl private constructor(context: DefaultExecutionContext) :
|
|||||||
|
|
||||||
fun dumpCoroutinesInfo(context: DefaultExecutionContext): List<MirrorOfCoroutineInfo> {
|
fun dumpCoroutinesInfo(context: DefaultExecutionContext): List<MirrorOfCoroutineInfo> {
|
||||||
instance ?: return emptyList()
|
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()
|
val referenceList = javaLangListMirror.mirror(coroutinesInfoReference, context) ?: return emptyList()
|
||||||
return referenceList.values.mapNotNull { coroutineInfo.mirror(it, context) }
|
return referenceList.values.mapNotNull { coroutineInfo.mirror(it, context) }
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -42,6 +42,13 @@ class DefaultExecutionContext(evaluationContext: EvaluationContextImpl) : BaseEx
|
|||||||
val frameProxy: StackFrameProxyImpl?
|
val frameProxy: StackFrameProxyImpl?
|
||||||
get() =
|
get() =
|
||||||
evaluationContext.frameProxy
|
evaluationContext.frameProxy
|
||||||
|
|
||||||
|
fun keepReference(ref: ObjectReference?): ObjectReference? {
|
||||||
|
ref?.let {
|
||||||
|
super.keepReference(ref)
|
||||||
|
}
|
||||||
|
return ref
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class BaseExecutionContext(val evaluationContext: EvaluationContextImpl) {
|
sealed class BaseExecutionContext(val evaluationContext: EvaluationContextImpl) {
|
||||||
|
|||||||
Reference in New Issue
Block a user