From 378acbf7ecdd0a79b8668f3570d7e4440f8abf28 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 20 Feb 2017 11:01:02 +0300 Subject: [PATCH] Minor. Clarify method `patchOpcode` contract --- .../jetbrains/kotlin/codegen/BranchedValue.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/BranchedValue.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/BranchedValue.kt index a026a064759..8529aed08c7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/BranchedValue.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/BranchedValue.kt @@ -210,7 +210,12 @@ class NumberCompare( ) : BranchedValue(left, right, operandType, NumberCompare.getNumberCompareOpcode(opToken)) { override fun patchOpcode(opcode: Int, v: InstructionAdapter): Int { - when (operandType) { + // Opcode takes one int operand from the stack + assert(opcode in IFEQ..IFLE) { + "Opcode for comparing must be in range ${IFEQ..IFLE}, but $opcode was found" + } + + return when (operandType) { Type.FLOAT_TYPE, Type.DOUBLE_TYPE -> { if (opToken == KtTokens.GT || opToken == KtTokens.GTEQ) { v.cmpl(operandType) @@ -218,17 +223,19 @@ class NumberCompare( else { v.cmpg(operandType) } + + opcode } Type.LONG_TYPE -> { v.lcmp() + + opcode } else -> { - return opcode + (IF_ICMPEQ - IFEQ) + opcode + (IF_ICMPEQ - IFEQ) } } - return opcode } - companion object { fun getNumberCompareOpcode(opToken: IElementType): Int { return when (opToken) { @@ -262,4 +269,4 @@ class ObjectCompare( } } } -} \ No newline at end of file +}