Debugger: Keep continuation and spilled variables until the whole trace is processed (EA-208000)

This commit is contained in:
Yan Zhulanow
2019-07-09 22:10:10 +09:00
parent 89b152809f
commit 55ea0840b1
@@ -97,6 +97,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceP
val frameProxy = context.frameProxy
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
context.keepReference(continuation)
return collectFrames(continuation)
}
@@ -161,6 +162,8 @@ class KotlinCoroutinesAsyncStackTraceProvider : KotlinCoroutinesAsyncStackTraceP
val rawSpilledVariables = context.invokeMethod(debugMetadataKtType, getSpilledVariableFieldMappingMethod, args) as? ArrayReference
?: return null
context.keepReference(rawSpilledVariables)
val length = rawSpilledVariables.length() / 2
val spilledVariables = ArrayList<XNamedValue>(length)