From e4456127e474b81ee4c627f3a85bf755b4690dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Thu, 22 Aug 2019 11:37:54 +0200 Subject: [PATCH] JVM IR: Don't use JS IR specific inlineClasses.kt --- .../org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt | 7 +++---- .../kotlin/backend/jvm/intrinsics/JavaClassProperty.kt | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt index d329bc35909..71dc3539808 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt @@ -9,14 +9,13 @@ import com.intellij.psi.tree.IElementType import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.codegen.* import org.jetbrains.kotlin.codegen.AsmUtil -import org.jetbrains.kotlin.codegen.AsmUtil.* +import org.jetbrains.kotlin.codegen.AsmUtil.isPrimitive import org.jetbrains.kotlin.codegen.StackValue import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression -import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin +import org.jetbrains.kotlin.ir.types.classOrNull import org.jetbrains.kotlin.ir.types.toKotlinType -import org.jetbrains.kotlin.ir.util.isInlined import org.jetbrains.kotlin.ir.util.isNullConst import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.resolve.jvm.AsmTypes @@ -44,7 +43,7 @@ class Equals(val operator: IElementType) : IntrinsicMethod() { val rightType = with(codegen) { b.asmType } val opToken = expression.origin val useEquals = opToken !== IrStatementOrigin.EQEQEQ && opToken !== IrStatementOrigin.EXCLEQEQ && - (a.type.isInlined() || b.type.isInlined() || + (a.type.classOrNull?.owner?.isInline == true || b.type.classOrNull?.owner?.isInline == true || // `==` is `equals` for objects and floating-point numbers. In the latter case, the difference // is that `equals` is a total order (-0 < +0 and NaN == NaN) and `===` is IEEE754-compliant. !isPrimitive(leftType) || leftType != rightType || leftType == Type.FLOAT_TYPE || leftType == Type.DOUBLE_TYPE) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/JavaClassProperty.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/JavaClassProperty.kt index 700e5526589..7ccbd5f65f1 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/JavaClassProperty.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/JavaClassProperty.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.backend.jvm.codegen.* import org.jetbrains.kotlin.codegen.AsmUtil.boxType import org.jetbrains.kotlin.codegen.AsmUtil.isPrimitive import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression -import org.jetbrains.kotlin.ir.util.isInlined +import org.jetbrains.kotlin.ir.types.classOrNull import org.jetbrains.kotlin.resolve.jvm.AsmTypes import org.jetbrains.org.objectweb.asm.Type @@ -34,7 +34,7 @@ object JavaClassProperty : IntrinsicMethod() { when { value.type == Type.VOID_TYPE -> invokeGetClass(value.coerce(AsmTypes.UNIT_TYPE, value.codegen.context.irBuiltIns.unitType)) - value.irType.isInlined() -> + value.irType.classOrNull?.owner?.isInline == true -> invokeGetClass(value.coerceToBoxed(value.irType)) isPrimitive(value.type) -> { value.discard()