Index: src/ia32/ic-ia32.cc |
=================================================================== |
--- src/ia32/ic-ia32.cc (revision 9327) |
+++ src/ia32/ic-ia32.cc (working copy) |
@@ -212,7 +212,7 @@ |
// Update write barrier. Make sure not to clobber the value. |
__ mov(r1, value); |
- __ RecordWrite(elements, r0, r1); |
+ __ RecordWrite(elements, r0, r1, kDontSaveFPRegs); |
} |
@@ -710,7 +710,7 @@ |
__ mov(mapped_location, eax); |
__ lea(ecx, mapped_location); |
__ mov(edx, eax); |
- __ RecordWrite(ebx, ecx, edx); |
+ __ RecordWrite(ebx, ecx, edx, kDontSaveFPRegs); |
__ Ret(); |
__ bind(¬in); |
// The unmapped lookup expects that the parameter map is in ebx. |
@@ -719,7 +719,7 @@ |
__ mov(unmapped_location, eax); |
__ lea(edi, unmapped_location); |
__ mov(edx, eax); |
- __ RecordWrite(ebx, edi, edx); |
+ __ RecordWrite(ebx, edi, edx, kDontSaveFPRegs); |
__ Ret(); |
__ bind(&slow); |
GenerateMiss(masm, false); |
@@ -811,9 +811,10 @@ |
// edx: receiver |
// edi: FixedArray receiver->elements |
__ mov(CodeGenerator::FixedArrayElementOperand(edi, ecx), eax); |
+ |
// Update write barrier for the elements array address. |
- __ mov(edx, Operand(eax)); |
- __ RecordWrite(edi, 0, edx, ecx); |
+ __ mov(edx, Operand(eax)); // Preserve the value which is returned. |
+ __ RecordWriteArray(edi, edx, ecx, kDontSaveFPRegs); |
__ ret(0); |
} |