Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 92a2419d30ae88ba45e1ff7e5c2dd45864c914b9..b7c5bab5feb4add9cdd6c781e152f9474485159e 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -3714,6 +3714,8 @@ void MacroAssembler::StoreNumberToDoubleElements(Register value_reg, |
Register scratch3, |
Label* fail, |
int elements_offset) { |
+ DCHECK(!AreAliased(value_reg, key_reg, elements_reg, scratch1, scratch2, |
+ scratch3)); |
Label smi_value, maybe_nan, have_double_value, is_nan, done; |
Register mantissa_reg = scratch2; |
Register exponent_reg = scratch3; |
@@ -3768,7 +3770,7 @@ void MacroAssembler::StoreNumberToDoubleElements(Register value_reg, |
Addu(scratch1, scratch1, scratch2); |
// scratch1 is now effective address of the double element |
- Register untagged_value = elements_reg; |
+ Register untagged_value = scratch2; |
SmiUntag(untagged_value, value_reg); |
mtc1(untagged_value, f2); |
cvt_d_w(f0, f2); |
@@ -5774,17 +5776,13 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain( |
} |
-bool AreAliased(Register reg1, |
- Register reg2, |
- Register reg3, |
- Register reg4, |
- Register reg5, |
- Register reg6, |
- Register reg7, |
- Register reg8) { |
- int n_of_valid_regs = reg1.is_valid() + reg2.is_valid() + |
- reg3.is_valid() + reg4.is_valid() + reg5.is_valid() + reg6.is_valid() + |
- reg7.is_valid() + reg8.is_valid(); |
+bool AreAliased(Register reg1, Register reg2, Register reg3, Register reg4, |
+ Register reg5, Register reg6, Register reg7, Register reg8, |
+ Register reg9, Register reg10) { |
+ int n_of_valid_regs = reg1.is_valid() + reg2.is_valid() + reg3.is_valid() + |
+ reg4.is_valid() + reg5.is_valid() + reg6.is_valid() + |
+ reg7.is_valid() + reg8.is_valid() + reg9.is_valid() + |
+ reg10.is_valid(); |
RegList regs = 0; |
if (reg1.is_valid()) regs |= reg1.bit(); |
@@ -5795,6 +5793,8 @@ bool AreAliased(Register reg1, |
if (reg6.is_valid()) regs |= reg6.bit(); |
if (reg7.is_valid()) regs |= reg7.bit(); |
if (reg8.is_valid()) regs |= reg8.bit(); |
+ if (reg9.is_valid()) regs |= reg9.bit(); |
+ if (reg10.is_valid()) regs |= reg10.bit(); |
int n_of_non_aliasing_regs = NumRegs(regs); |
return n_of_valid_regs != n_of_non_aliasing_regs; |