| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index 962c2e8b45e0067e6b81c9601ca2d64b5c1fa5a8..591a38e94bcca9438a6ceb7f499e2d07579ba7bc 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -2769,7 +2769,8 @@ void MacroAssembler::StoreNumberToDoubleElements(
|
| Register elements,
|
| Register index,
|
| XMMRegister xmm_scratch,
|
| - Label* fail) {
|
| + Label* fail,
|
| + int elements_offset) {
|
| Label smi_value, is_nan, maybe_nan, not_nan, have_double_value, done;
|
|
|
| JumpIfSmi(maybe_number, &smi_value, Label::kNear);
|
| @@ -2788,7 +2789,8 @@ void MacroAssembler::StoreNumberToDoubleElements(
|
| bind(¬_nan);
|
| movsd(xmm_scratch, FieldOperand(maybe_number, HeapNumber::kValueOffset));
|
| bind(&have_double_value);
|
| - movsd(FieldOperand(elements, index, times_8, FixedDoubleArray::kHeaderSize),
|
| + movsd(FieldOperand(elements, index, times_8,
|
| + FixedDoubleArray::kHeaderSize - elements_offset),
|
| xmm_scratch);
|
| jmp(&done);
|
|
|
| @@ -2811,7 +2813,8 @@ void MacroAssembler::StoreNumberToDoubleElements(
|
| // Preserve original value.
|
| SmiToInteger32(kScratchRegister, maybe_number);
|
| cvtlsi2sd(xmm_scratch, kScratchRegister);
|
| - movsd(FieldOperand(elements, index, times_8, FixedDoubleArray::kHeaderSize),
|
| + movsd(FieldOperand(elements, index, times_8,
|
| + FixedDoubleArray::kHeaderSize - elements_offset),
|
| xmm_scratch);
|
| bind(&done);
|
| }
|
|
|