Take inline classes into account in JvmBuiltinOptimizationLowering
This commit is contained in:
committed by
Alexander Udalov
parent
69cf8d4df4
commit
f1f0c7e0a0
+3
-2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm.lower
|
|||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
||||||
import org.jetbrains.kotlin.codegen.intrinsics.Not
|
import org.jetbrains.kotlin.codegen.intrinsics.Not
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
@@ -49,8 +50,8 @@ class JvmBuiltinOptimizationLowering(val context: JvmBackendContext) : FileLower
|
|||||||
// When used for null checks, it is safe to eliminate constants and local variable loads.
|
// When used for null checks, it is safe to eliminate constants and local variable loads.
|
||||||
// Even if a local variable of simple type is updated via the debugger it still cannot
|
// Even if a local variable of simple type is updated via the debugger it still cannot
|
||||||
// be null.
|
// be null.
|
||||||
return (right.isNullConst() && left.type.isPrimitiveType())
|
return (right.isNullConst() && left.type.unboxInlineClass().isPrimitiveType())
|
||||||
|| (left.isNullConst() && right.type.isPrimitiveType())
|
|| (left.isNullConst() && right.type.unboxInlineClass().isPrimitiveType())
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user