| Index: src/x64/lithium-codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/lithium-codegen-x64.cc (revision 8207)
|
| +++ src/x64/lithium-codegen-x64.cc (working copy)
|
| @@ -216,11 +216,8 @@
|
| // Store it in the context.
|
| int context_offset = Context::SlotOffset(slot->index());
|
| __ movq(Operand(rsi, context_offset), rax);
|
| - // Update the write barrier. This clobbers all involved
|
| - // registers, so we have use a third register to avoid
|
| - // clobbering rsi.
|
| - __ movq(rcx, rsi);
|
| - __ RecordWrite(rcx, context_offset, rax, rbx, kSaveFPRegs);
|
| + // Update the write barrier. This clobbers rax and rbx.
|
| + __ RecordWriteContextSlot(rsi, context_offset, rax, rbx, kSaveFPRegs);
|
| }
|
| }
|
| Comment(";;; End allocate local context");
|
| @@ -2266,7 +2263,7 @@
|
| if (instr->needs_write_barrier()) {
|
| int offset = Context::SlotOffset(instr->slot_index());
|
| Register scratch = ToRegister(instr->TempAt(0));
|
| - __ RecordWrite(context, offset, value, scratch, kSaveFPRegs);
|
| + __ RecordWriteContextSlot(context, offset, value, scratch, kSaveFPRegs);
|
| }
|
| }
|
|
|
| @@ -3165,7 +3162,7 @@
|
| if (instr->needs_write_barrier()) {
|
| Register temp = ToRegister(instr->TempAt(0));
|
| // Update the write barrier for the object for in-object properties.
|
| - __ RecordWrite(object, offset, value, temp, kSaveFPRegs);
|
| + __ RecordWriteField(object, offset, value, temp, kSaveFPRegs);
|
| }
|
| } else {
|
| Register temp = ToRegister(instr->TempAt(0));
|
| @@ -3174,7 +3171,7 @@
|
| if (instr->needs_write_barrier()) {
|
| // Update the write barrier for the properties array.
|
| // object is used as a scratch register.
|
| - __ RecordWrite(temp, offset, value, object, kSaveFPRegs);
|
| + __ RecordWriteField(temp, offset, value, object, kSaveFPRegs);
|
| }
|
| }
|
| }
|
|
|