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 val inlineArgumentsInPlace = canInlineArgumentsInPlace()
|
||||||
|
|
||||||
private fun canInlineArgumentsInPlace(): Boolean {
|
private fun canInlineArgumentsInPlace(): Boolean {
|
||||||
if (!function.isInlineOnly()) return false
|
if (!function.isInlineOnly())
|
||||||
if (function.isSuspend) return false
|
return false
|
||||||
|
|
||||||
var actualParametersCount = function.valueParameters.size
|
var actualParametersCount = function.valueParameters.size
|
||||||
function.dispatchReceiverParameter?.let { dispatchReceiverParameter ->
|
if (function.dispatchReceiverParameter != null)
|
||||||
++actualParametersCount
|
++actualParametersCount
|
||||||
if (dispatchReceiverParameter.isFunctionOrSuspendFunction())
|
if (function.extensionReceiverParameter != null)
|
||||||
return false
|
|
||||||
}
|
|
||||||
function.extensionReceiverParameter?.let { extensionReceiverParameter ->
|
|
||||||
++actualParametersCount
|
++actualParametersCount
|
||||||
if (extensionReceiverParameter.isFunctionOrSuspendFunction())
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if (actualParametersCount == 0)
|
if (actualParametersCount == 0)
|
||||||
return false
|
return false
|
||||||
if (function.valueParameters.any { !it.isNoinline && it.isFunctionOrSuspendFunction() })
|
|
||||||
|
if (function.valueParameters.any { it.isInlineParameter() })
|
||||||
return false
|
return false
|
||||||
|
|
||||||
return canInlineArgumentsInPlace(sourceCompiler.compileInlineFunction(jvmSignature).node)
|
return canInlineArgumentsInPlace(sourceCompiler.compileInlineFunction(jvmSignature).node)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrValueParameter.isFunctionOrSuspendFunction() = type.isFunction() || type.isSuspendFunction()
|
|
||||||
|
|
||||||
override fun beforeCallStart() {
|
override fun beforeCallStart() {
|
||||||
if (inlineArgumentsInPlace) {
|
if (inlineArgumentsInPlace) {
|
||||||
codegen.visitor.addInplaceCallStartMarker()
|
codegen.visitor.addInplaceCallStartMarker()
|
||||||
|
|||||||
Reference in New Issue
Block a user