| Index: src/mips64/macro-assembler-mips64.cc | 
| diff --git a/src/mips64/macro-assembler-mips64.cc b/src/mips64/macro-assembler-mips64.cc | 
| index 5aaf5269847067d3c9eedd0d084789810ecf63a3..0b5c18ac340ed5159fb058e61adbd26dcdca1373 100644 | 
| --- a/src/mips64/macro-assembler-mips64.cc | 
| +++ b/src/mips64/macro-assembler-mips64.cc | 
| @@ -4039,6 +4039,7 @@ void MacroAssembler::StoreNumberToDoubleElements(Register value_reg, | 
| Register scratch2, | 
| Label* fail, | 
| int elements_offset) { | 
| +  DCHECK(!AreAliased(value_reg, key_reg, elements_reg, scratch1, scratch2)); | 
| Label smi_value, done; | 
|  | 
| // Handle smi values specially. | 
| @@ -4060,10 +4061,9 @@ void MacroAssembler::StoreNumberToDoubleElements(Register value_reg, | 
| FPUCanonicalizeNaN(double_result, double_result); | 
|  | 
| bind(&smi_value); | 
| -  // scratch1 is now effective address of the double element. | 
| // Untag and transfer. | 
| -  dsrl32(at, value_reg, 0); | 
| -  mtc1(at, double_scratch); | 
| +  dsrl32(scratch1, value_reg, 0); | 
| +  mtc1(scratch1, double_scratch); | 
| cvt_d_w(double_result, double_scratch); | 
|  | 
| bind(&done); | 
| @@ -4072,6 +4072,7 @@ void MacroAssembler::StoreNumberToDoubleElements(Register value_reg, | 
| elements_offset)); | 
| dsra(scratch2, key_reg, 32 - kDoubleSizeLog2); | 
| Daddu(scratch1, scratch1, scratch2); | 
| +  // scratch1 is now effective address of the double element. | 
| sdc1(double_result, MemOperand(scratch1, 0)); | 
| } | 
|  | 
| @@ -6218,17 +6219,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(); | 
| @@ -6239,6 +6236,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; | 
|  |