| Index: src/ia32/stub-cache-ia32.cc
|
| diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc
|
| index f62e5a7f23d98c7175a1debec1e0d2303af35bfa..d2ee46509878646d9286f5a91ea27b42567344aa 100644
|
| --- a/src/ia32/stub-cache-ia32.cc
|
| +++ b/src/ia32/stub-cache-ia32.cc
|
| @@ -4016,10 +4016,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);
|
|
|
|
|