[JVM_IR] Map suspend lambdas to original function for inlining.
This commit is contained in:
+8
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
|||||||
import org.jetbrains.kotlin.codegen.BaseExpressionCodegen
|
import org.jetbrains.kotlin.codegen.BaseExpressionCodegen
|
||||||
import org.jetbrains.kotlin.codegen.ClassBuilder
|
import org.jetbrains.kotlin.codegen.ClassBuilder
|
||||||
import org.jetbrains.kotlin.codegen.OwnerKind
|
import org.jetbrains.kotlin.codegen.OwnerKind
|
||||||
|
import org.jetbrains.kotlin.codegen.coroutines.INVOKE_SUSPEND_METHOD_NAME
|
||||||
import org.jetbrains.kotlin.codegen.inline.*
|
import org.jetbrains.kotlin.codegen.inline.*
|
||||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
|
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
@@ -154,7 +155,13 @@ class IrSourceCompilerForInline(
|
|||||||
get() = callElement.descriptor as FunctionDescriptor
|
get() = callElement.descriptor as FunctionDescriptor
|
||||||
|
|
||||||
override fun getContextLabels(): Set<String> {
|
override fun getContextLabels(): Set<String> {
|
||||||
return setOf(codegen.irFunction.name.asString())
|
val name = codegen.irFunction.name.asString()
|
||||||
|
if (name == INVOKE_SUSPEND_METHOD_NAME) {
|
||||||
|
codegen.context.suspendLambdaToOriginalFunctionMap[codegen.irFunction.parent]?.let {
|
||||||
|
return setOf(it.name.asString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return setOf(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class FakeClassCodegen(irFunction: IrFunction, codegen: ClassCodegen) :
|
private class FakeClassCodegen(irFunction: IrFunction, codegen: ClassCodegen) :
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// WITH_COROUTINES
|
// WITH_COROUTINES
|
||||||
// COMMON_COROUTINES_TEST
|
// COMMON_COROUTINES_TEST
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// COMMON_COROUTINES_TEST
|
// COMMON_COROUTINES_TEST
|
||||||
// WITH_COROUTINES
|
// WITH_COROUTINES
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// COMMON_COROUTINES_TEST
|
// COMMON_COROUTINES_TEST
|
||||||
// WITH_COROUTINES
|
// WITH_COROUTINES
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// WITH_COROUTINES
|
// WITH_COROUTINES
|
||||||
// COMMON_COROUTINES_TEST
|
// COMMON_COROUTINES_TEST
|
||||||
|
|||||||
Reference in New Issue
Block a user