Minor. Clarify method patchOpcode contract

This commit is contained in:
Denis Zharkov
2017-02-20 11:01:02 +03:00
parent 21449763ab
commit 378acbf7ec
@@ -210,7 +210,12 @@ class NumberCompare(
) : BranchedValue(left, right, operandType, NumberCompare.getNumberCompareOpcode(opToken)) { ) : BranchedValue(left, right, operandType, NumberCompare.getNumberCompareOpcode(opToken)) {
override fun patchOpcode(opcode: Int, v: InstructionAdapter): Int { 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 -> { Type.FLOAT_TYPE, Type.DOUBLE_TYPE -> {
if (opToken == KtTokens.GT || opToken == KtTokens.GTEQ) { if (opToken == KtTokens.GT || opToken == KtTokens.GTEQ) {
v.cmpl(operandType) v.cmpl(operandType)
@@ -218,17 +223,19 @@ class NumberCompare(
else { else {
v.cmpg(operandType) v.cmpg(operandType)
} }
opcode
} }
Type.LONG_TYPE -> { Type.LONG_TYPE -> {
v.lcmp() v.lcmp()
opcode
} }
else -> { else -> {
return opcode + (IF_ICMPEQ - IFEQ) opcode + (IF_ICMPEQ - IFEQ)
} }
} }
return opcode
} }
companion object { companion object {
fun getNumberCompareOpcode(opToken: IElementType): Int { fun getNumberCompareOpcode(opToken: IElementType): Int {
return when (opToken) { return when (opToken) {