JVM_IR KT-47984 minor fixes after review
This commit is contained in:
committed by
TeamCityServer
parent
f8503ba1bf
commit
ed0e3b0fed
+6
-13
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user