JVM_IR KT-47984 minor fixes after review

This commit is contained in:
Dmitry Petrov
2021-08-12 13:21:13 +03:00
committed by TeamCityServer
parent f8503ba1bf
commit ed0e3b0fed
@@ -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()