Bug 1424978 - IonMonkey: MIPS64: Fix tagValue function

Tag: #1542
This commit is contained in:
Jiaxun Yang 2020-05-12 12:40:12 +08:00 committed by Roy Tam
commit dc7fd7cdfd

View file

@ -1839,8 +1839,13 @@ void
MacroAssemblerMIPS64Compat::tagValue(JSValueType type, Register payload, ValueOperand dest)
{
MOZ_ASSERT(dest.valueReg() != ScratchRegister);
if (payload != dest.valueReg())
ma_move(dest.valueReg(), payload);
if (type == JSVAL_TYPE_INT32 || type == JSVAL_TYPE_BOOLEAN) {
ma_dext(dest.valueReg(), payload, Imm32(0), Imm32(32));
} else {
if (payload != dest.valueReg()) {
ma_move(dest.valueReg(), payload);
}
}
ma_li(ScratchRegister, ImmTag(JSVAL_TYPE_TO_TAG(type)));
ma_dins(dest.valueReg(), ScratchRegister, Imm32(JSVAL_TAG_SHIFT), Imm32(64 - JSVAL_TAG_SHIFT));
}