| Index: src/x64/stub-cache-x64.cc
|
| diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc
|
| index b8e5f22ed548395afa1e51478334bbcb5cf51283..e195aecc385db08dae74924062495404cf8f6fd0 100644
|
| --- a/src/x64/stub-cache-x64.cc
|
| +++ b/src/x64/stub-cache-x64.cc
|
| @@ -3752,10 +3752,11 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(
|
|
|
| __ bind(&smi_value);
|
| // Value is a smi. convert to a double and store.
|
| - __ SmiToInteger32(rax, rax);
|
| - __ push(rax);
|
| + // Preserve original value.
|
| + __ SmiToInteger32(rdx, rax);
|
| + __ push(rdx);
|
| __ fild_s(Operand(rsp, 0));
|
| - __ pop(rax);
|
| + __ pop(rdx);
|
| __ SmiToInteger32(rcx, rcx);
|
| __ fstp_d(FieldOperand(rdi, rcx, times_8, FixedDoubleArray::kHeaderSize));
|
| __ ret(0);
|
|
|