| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index 747b6d98bd0c1e65e878495e24e49b549e854528..d8e392147684ec6e2ab4054a624bba899e92f28b 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -4024,13 +4024,10 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| __ Move(kScratchRegister, transition);
|
| __ movp(FieldOperand(object, HeapObject::kMapOffset), kScratchRegister);
|
| // Update the write barrier for the map field.
|
| - __ RecordWriteField(object,
|
| - HeapObject::kMapOffset,
|
| - kScratchRegister,
|
| - temp,
|
| - kSaveFPRegs,
|
| - OMIT_REMEMBERED_SET,
|
| - OMIT_SMI_CHECK);
|
| + __ RecordWriteForMap(object,
|
| + kScratchRegister,
|
| + temp,
|
| + kSaveFPRegs);
|
| }
|
| }
|
|
|
| @@ -4090,7 +4087,8 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| temp,
|
| kSaveFPRegs,
|
| EMIT_REMEMBERED_SET,
|
| - hinstr->SmiCheckForWriteBarrier());
|
| + hinstr->SmiCheckForWriteBarrier(),
|
| + hinstr->PointersToHereCheckForValue());
|
| }
|
| }
|
|
|
| @@ -4315,7 +4313,8 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) {
|
| value,
|
| kSaveFPRegs,
|
| EMIT_REMEMBERED_SET,
|
| - check_needed);
|
| + check_needed,
|
| + hinstr->PointersToHereCheckForValue());
|
| }
|
| }
|
|
|
| @@ -4360,9 +4359,8 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) {
|
| __ Move(new_map_reg, to_map, RelocInfo::EMBEDDED_OBJECT);
|
| __ movp(FieldOperand(object_reg, HeapObject::kMapOffset), new_map_reg);
|
| // Write barrier.
|
| - ASSERT_NE(instr->temp(), NULL);
|
| - __ RecordWriteField(object_reg, HeapObject::kMapOffset, new_map_reg,
|
| - ToRegister(instr->temp()), kDontSaveFPRegs);
|
| + __ RecordWriteForMap(object_reg, new_map_reg, ToRegister(instr->temp()),
|
| + kDontSaveFPRegs);
|
| } else {
|
| ASSERT(object_reg.is(rax));
|
| ASSERT(ToRegister(instr->context()).is(rsi));
|
|
|