From ed0e3b0fed9240c6a15e043944debaf3efe33eaf Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 12 Aug 2021 13:21:13 +0300 Subject: [PATCH] JVM_IR KT-47984 minor fixes after review --- .../backend/jvm/codegen/IrInlineCodegen.kt | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt index 71007811f5b..5ff902e967e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt @@ -42,30 +42,23 @@ class IrInlineCodegen( private val inlineArgumentsInPlace = canInlineArgumentsInPlace() private fun canInlineArgumentsInPlace(): Boolean { - if (!function.isInlineOnly()) return false - if (function.isSuspend) return false + if (!function.isInlineOnly()) + return false var actualParametersCount = function.valueParameters.size - function.dispatchReceiverParameter?.let { dispatchReceiverParameter -> + if (function.dispatchReceiverParameter != null) ++actualParametersCount - if (dispatchReceiverParameter.isFunctionOrSuspendFunction()) - return false - } - function.extensionReceiverParameter?.let { extensionReceiverParameter -> + if (function.extensionReceiverParameter != null) ++actualParametersCount - if (extensionReceiverParameter.isFunctionOrSuspendFunction()) - return false - } if (actualParametersCount == 0) return false - if (function.valueParameters.any { !it.isNoinline && it.isFunctionOrSuspendFunction() }) + + if (function.valueParameters.any { it.isInlineParameter() }) return false return canInlineArgumentsInPlace(sourceCompiler.compileInlineFunction(jvmSignature).node) } - private fun IrValueParameter.isFunctionOrSuspendFunction() = type.isFunction() || type.isSuspendFunction() - override fun beforeCallStart() { if (inlineArgumentsInPlace) { codegen.visitor.addInplaceCallStartMarker()