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); |