diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt index 36f4a9cbc25..210abe65b3d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -52,7 +52,6 @@ class MethodInliner( private val inlineOnlySmapSkipper: InlineOnlySmapSkipper?, //non null only for root private val shouldPreprocessApiVersionCalls: Boolean = false ) { - private val typeMapper = inliningContext.state.typeMapper private val languageVersionSettings = inliningContext.state.languageVersionSettings private val invokeCalls = ArrayList() //keeps order @@ -237,16 +236,13 @@ class MethodInliner( var coroutineDesc = desc val actualInvokeDescriptor: FunctionDescriptor if (info.invokeMethodDescriptor.isSuspend) { - val coroutineInvokeMethodDescriptor = getOrCreateJvmSuspendFunctionView( - info.invokeMethodDescriptor, - inliningContext.state - ) - actualInvokeDescriptor = coroutineInvokeMethodDescriptor - val coroutineInvokeDesc = typeMapper.mapAsmMethod(coroutineInvokeMethodDescriptor).descriptor + actualInvokeDescriptor = getOrCreateJvmSuspendFunctionView(info.invokeMethodDescriptor, inliningContext.state) + val parametersSize = actualInvokeDescriptor.valueParameters.size + + (if (actualInvokeDescriptor.extensionReceiverParameter != null) 1 else 0) // And here we expect invoke(...Ljava/lang/Object;) be replaced with invoke(...Lkotlin/coroutines/Continuation;) // if this does not happen, insert fake continuation, since we could not have one yet. val argumentTypes = Type.getArgumentTypes(desc) - if (Type.getArgumentTypes(coroutineInvokeDesc).size != argumentTypes.size) { + if (argumentTypes.size != parametersSize) { addFakeContinuationMarker(this) coroutineDesc = Type.getMethodDescriptor(Type.getReturnType(desc), *argumentTypes, AsmTypes.OBJECT_TYPE) }