JVM_IR: do not generate $assertionsDisabled twice during inlining
This commit is contained in:
@@ -121,7 +121,9 @@ abstract class InlineCodegen<out T : BaseExpressionCodegen>(
|
||||
|
||||
// In case `codegen.visitor` is `<clinit>`, initializer for the `$assertionsDisabled` field
|
||||
// needs to be inserted before the code that actually uses it.
|
||||
generateAssertFieldIfNeeded(info)
|
||||
if (info.generateAssertField) {
|
||||
generateAssertField()
|
||||
}
|
||||
|
||||
val shouldSpillStack = node.requiresEmptyStackOnEntry()
|
||||
if (shouldSpillStack) {
|
||||
@@ -193,7 +195,7 @@ abstract class InlineCodegen<out T : BaseExpressionCodegen>(
|
||||
processor.substituteLocalVarTable(intoNode)
|
||||
}
|
||||
|
||||
protected abstract fun generateAssertFieldIfNeeded(info: RootInliningContext)
|
||||
protected abstract fun generateAssertField()
|
||||
|
||||
private fun isInlinedToInlineFunInKotlinRuntime(): Boolean {
|
||||
val codegen = this.codegen as? ExpressionCodegen ?: return false
|
||||
|
||||
@@ -51,11 +51,8 @@ class PsiInlineCodegen(
|
||||
state.languageVersionSettings, state.unifiedNullChecks
|
||||
),
|
||||
), CallGenerator {
|
||||
override fun generateAssertFieldIfNeeded(info: RootInliningContext) {
|
||||
if (info.generateAssertField) {
|
||||
codegen.parentCodegen.generateAssertField()
|
||||
}
|
||||
}
|
||||
override fun generateAssertField() =
|
||||
codegen.parentCodegen.generateAssertField()
|
||||
|
||||
override fun genCallInner(
|
||||
callableMethod: Callable,
|
||||
|
||||
Reference in New Issue
Block a user