From 31d971a3028bc364db0e6a5bf57e6d32367434d2 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Fri, 23 Sep 2016 15:58:04 +0300 Subject: [PATCH] Get rid of impl classes --- .../jetbrains/kotlin/backend/jvm/intrinsics/CompareTo.kt | 3 ++- .../org/jetbrains/kotlin/backend/jvm/intrinsics/Equals.kt | 8 +++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/CompareTo.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/CompareTo.kt index f6cbeb19817..552d5a9e131 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/CompareTo.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/CompareTo.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin +import org.jetbrains.kotlin.ir.expressions.impl.IrPrimitiveCallBase import org.jetbrains.kotlin.ir.expressions.impl.IrUnaryPrimitiveImpl import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature @@ -59,7 +60,7 @@ class CompareTo : IntrinsicMethod() { class IrCompareTo : IntrinsicMethod() { override fun toCallable(expression: IrMemberAccessExpression, signature: JvmMethodSignature, context: JvmBackendContext): IrIntrinsicFunction { - assert(expression is IrUnaryPrimitiveImpl) + assert(expression is IrPrimitiveCallBase) val compareCall = expression.getValueArgument(0) as IrCall val args = compareCall.receiverAndArgs() val argTypes = args.asmTypes(context) 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 71eb2faa744..7b169a58f92 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 @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.codegen.AsmUtil.* import org.jetbrains.kotlin.codegen.StackValue import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin -import org.jetbrains.kotlin.ir.expressions.impl.IrBinaryPrimitiveImpl import org.jetbrains.kotlin.resolve.jvm.AsmTypes.OBJECT_TYPE import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature import org.jetbrains.org.objectweb.asm.Type @@ -30,9 +29,8 @@ import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter class Equals(val operator: IElementType) : IntrinsicMethod() { override fun toCallable(expression: IrMemberAccessExpression, signature: JvmMethodSignature, context: JvmBackendContext): IrIntrinsicFunction { - val binary = expression as IrBinaryPrimitiveImpl - var leftType = context.state.typeMapper.mapType(binary.argument0.type) - var rightType = context.state.typeMapper.mapType(binary.argument1.type) + var leftType = context.state.typeMapper.mapType(expression.getValueArgument(0)!!.type) + var rightType = context.state.typeMapper.mapType(expression.getValueArgument(1)!!.type) if (isPrimitive(leftType) != isPrimitive(rightType)) { leftType = boxType(leftType) @@ -42,7 +40,7 @@ class Equals(val operator: IElementType) : IntrinsicMethod() { return object: IrIntrinsicFunction(expression, signature, context, listOf(leftType, rightType)) { override fun genInvokeInstruction(v: InstructionAdapter) { - val opToken = binary.origin + val opToken = expression.origin val value = if (opToken === IrStatementOrigin.EQEQEQ || opToken === IrStatementOrigin.EXCLEQEQ) { // TODO: always casting to the type of the left operand in case of primitives looks wrong