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