| Index: src/x64/full-codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/full-codegen-x64.cc (revision 7889)
|
| +++ src/x64/full-codegen-x64.cc (working copy)
|
| @@ -693,11 +693,18 @@
|
| __ movq(ContextOperand(rsi, slot->index()), kScratchRegister);
|
| // No write barrier since the hole value is in old space.
|
| } else if (function != NULL) {
|
| + // We know that we have written a function, which is not a smi.
|
| VisitForAccumulatorValue(function);
|
| __ movq(ContextOperand(rsi, slot->index()), result_register());
|
| int offset = Context::SlotOffset(slot->index());
|
| __ movq(rbx, rsi);
|
| - __ RecordWrite(rbx, offset, result_register(), rcx, kDontSaveFPRegs);
|
| + __ RecordWrite(rbx,
|
| + offset,
|
| + result_register(),
|
| + rcx,
|
| + kDontSaveFPRegs,
|
| + EMIT_REMEMBERED_SET,
|
| + OMIT_SMI_CHECK);
|
| }
|
| break;
|
|
|
| @@ -1846,7 +1853,7 @@
|
| __ movq(ContextOperand(rcx, slot->index()), rax);
|
| int offset = Context::SlotOffset(slot->index());
|
| __ movq(rdx, rax); // Preserve the stored value in eax.
|
| - __ RecordWrite(rcx, offset, rdx, rbx);
|
| + __ RecordWrite(rcx, offset, rdx, rbx, kDontSaveFPRegs);
|
| break;
|
| }
|
| case Slot::LOOKUP:
|
| @@ -3139,8 +3146,8 @@
|
| __ InNewSpace(elements, temp, equal, &new_space);
|
|
|
| __ movq(object, elements);
|
| - __ RecordWriteHelper(object, index_1, temp);
|
| - __ RecordWriteHelper(elements, index_2, temp);
|
| + __ RecordWriteHelper(object, index_1, temp, kDontSaveFPRegs);
|
| + __ RecordWriteHelper(elements, index_2, temp, kDontSaveFPRegs);
|
|
|
| __ bind(&new_space);
|
| // We are done. Drop elements from the stack, and return undefined.
|
|
|