Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index 9a690d76bb212929717236a539f6f2840700c306..73f42a3d18fca38e895a73acb7c20deae166094d 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -3981,10 +3981,12 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement( |
__ bind(&smi_value); |
// Value is a smi. convert to a double and store. |
- __ SmiUntag(eax); |
- __ push(eax); |
+ // Preserve original value. |
+ __ mov(edx, eax); |
+ __ SmiUntag(edx); |
+ __ push(edx); |
__ fild_s(Operand(esp, 0)); |
- __ pop(eax); |
+ __ pop(edx); |
__ fstp_d(FieldOperand(edi, ecx, times_4, FixedDoubleArray::kHeaderSize)); |
__ ret(0); |