| Index: src/x87/lithium-codegen-x87.cc
|
| diff --git a/src/x87/lithium-codegen-x87.cc b/src/x87/lithium-codegen-x87.cc
|
| index a88613bc2ee3f394ede80474f4ede53e4f4e3f00..9fb1216e97449b35507ab2f5e269f9c8f2ddf5b9 100644
|
| --- a/src/x87/lithium-codegen-x87.cc
|
| +++ b/src/x87/lithium-codegen-x87.cc
|
| @@ -3904,20 +3904,14 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| if (instr->hydrogen()->has_transition()) {
|
| Handle<Map> transition = instr->hydrogen()->transition_map();
|
| AddDeprecationDependency(transition);
|
| - if (!instr->hydrogen()->NeedsWriteBarrierForMap()) {
|
| - __ mov(FieldOperand(object, HeapObject::kMapOffset), transition);
|
| - } else {
|
| + __ mov(FieldOperand(object, HeapObject::kMapOffset), transition);
|
| + if (instr->hydrogen()->NeedsWriteBarrierForMap()) {
|
| Register temp = ToRegister(instr->temp());
|
| Register temp_map = ToRegister(instr->temp_map());
|
| __ mov(temp_map, transition);
|
| __ mov(FieldOperand(object, HeapObject::kMapOffset), temp_map);
|
| // Update the write barrier for the map field.
|
| - __ RecordWriteField(object,
|
| - HeapObject::kMapOffset,
|
| - temp_map,
|
| - temp,
|
| - OMIT_REMEMBERED_SET,
|
| - OMIT_SMI_CHECK);
|
| + __ RecordWriteForMap(object, transition, temp_map, temp);
|
| }
|
| }
|
|
|
| @@ -3957,7 +3951,8 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| value,
|
| temp,
|
| EMIT_REMEMBERED_SET,
|
| - instr->hydrogen()->SmiCheckForWriteBarrier());
|
| + instr->hydrogen()->SmiCheckForWriteBarrier(),
|
| + instr->hydrogen()->PointersToHereCheckForValue());
|
| }
|
| }
|
|
|
| @@ -4155,7 +4150,8 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) {
|
| key,
|
| value,
|
| EMIT_REMEMBERED_SET,
|
| - check_needed);
|
| + check_needed,
|
| + instr->hydrogen()->PointersToHereCheckForValue());
|
| }
|
| }
|
|
|
|
|