JVM_IR KT-49136 don't optimize null checks on fields and calls

This commit is contained in:
Dmitry Petrov
2021-10-07 16:44:29 +03:00
parent 9ef899ef10
commit 27860ef008
13 changed files with 116 additions and 2 deletions
@@ -64,4 +64,7 @@ interface CommonBackendContext : BackendContext, LoggingContext {
val optimizeLoopsOverUnsignedArrays: Boolean
get() = false
val optimizeNullChecksUsingKotlinNullability: Boolean
get() = true
}
@@ -146,9 +146,9 @@ class IfNullExpressionsFusionLowering(val context: CommonBackendContext) : FileL
is IrGetClass ->
false
is IrCall ->
if (!type.isNullable()) false else null
if (context.optimizeNullChecksUsingKotlinNullability && !type.isNullable()) false else null
is IrGetField ->
if (!type.isNullable()) false else null
if (context.optimizeNullChecksUsingKotlinNullability && !type.isNullable()) false else null
is IrBlock -> {
val singleExpr = statements.singleOrNull()
if (singleExpr is IrExpression && singleExpr.type == type)