Minor: Extract a const for continuation variable name

This commit is contained in:
Yan Zhulanow
2018-12-14 22:41:15 +09:00
parent cf9461847b
commit f6cc686095
4 changed files with 6 additions and 3 deletions
@@ -322,7 +322,7 @@ class CoroutineTransformerMethodVisitor(
methodNode.instructions.insert(methodNode.instructions.last, endLabel)
methodNode.localVariables.add(
LocalVariableNode(
"\$continuation",
CONTINUATION_VARIABLE_NAME,
languageVersionSettings.continuationAsmType().descriptor,
null,
startLabel,
@@ -124,6 +124,8 @@ val INITIAL_SUSPEND_DESCRIPTOR_FOR_DO_RESUME = object : CallableDescriptor.UserD
val CONTINUATION_PARAMETER_NAME = Name.identifier("continuation")
const val CONTINUATION_VARIABLE_NAME = "\$continuation"
// Resolved calls to suspension function contain descriptors as they visible within coroutines:
// E.g. `fun <V> await(f: CompletableFuture<V>): V` instead of `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
// See `createJvmSuspendFunctionView` and it's usages for clarification
@@ -18,6 +18,7 @@ import com.intellij.debugger.memory.utils.StackFrameItem
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl
import com.intellij.xdebugger.frame.XNamedValue
import com.sun.jdi.*
import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_VARIABLE_NAME
import org.jetbrains.kotlin.idea.debugger.evaluate.LOG
import org.jetbrains.kotlin.idea.debugger.evaluate.VariableFinder.Companion.SUSPEND_LAMBDA_CLASSES
import org.jetbrains.kotlin.idea.debugger.evaluate.getInvokePolicy
@@ -91,7 +92,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : AsyncStackTraceProvider {
return null
}
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
return collectFrames(continuation)
@@ -293,7 +293,7 @@ class VariableFinder private constructor(private val context: EvaluationContextI
return null
}
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
return findCoroutineContextForContinuation(continuation)
}