From 2387fe302c1d7f5d46d6eb63017e0fe7bd1b8830 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Wed, 6 Sep 2023 16:43:40 +0200 Subject: [PATCH] [JVM] Use reference comparison for objects defined in `StrictBasicValue` --- .../codegen/coroutines/CoroutineTransformerMethodVisitor.kt | 2 +- .../kotlin/codegen/optimization/boxing/BoxingInterpreter.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformerMethodVisitor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformerMethodVisitor.kt index 1cdd2925212..54220ca82b5 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformerMethodVisitor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineTransformerMethodVisitor.kt @@ -671,7 +671,7 @@ class CoroutineTransformerMethodVisitor( val value = frame.getLocal(slot) if (value.type == null || (shouldOptimiseUnusedVariables && !livenessFrame.isAlive(slot))) continue - if (value == StrictBasicValue.NULL_VALUE) { + if (value === StrictBasicValue.NULL_VALUE) { referencesToSpill += slot to null continue } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxingInterpreter.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxingInterpreter.kt index c2aad9d0662..039db635aa4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxingInterpreter.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxingInterpreter.kt @@ -170,7 +170,7 @@ abstract class BoxingInterpreter( private fun merge(v: BasicValue, w: BasicValue, isLocalVariable: Boolean) = when { - v == StrictBasicValue.UNINITIALIZED_VALUE || w == StrictBasicValue.UNINITIALIZED_VALUE -> + v === StrictBasicValue.UNINITIALIZED_VALUE || w === StrictBasicValue.UNINITIALIZED_VALUE -> StrictBasicValue.UNINITIALIZED_VALUE v is BoxedBasicValue -> { if (w is BoxedBasicValue) {