Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index f06f2420c348cc79d7de0707488c338ddabcb2eb..57190d75d8c5032e0dbce9008a5de2cd63f3da2d 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -3995,21 +3995,12 @@ 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, |
- kSaveFPRegs, |
- OMIT_REMEMBERED_SET, |
- OMIT_SMI_CHECK); |
+ __ RecordWriteForMap(object, transition, temp_map, temp, kSaveFPRegs); |
} |
} |
@@ -4050,7 +4041,8 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
temp, |
kSaveFPRegs, |
EMIT_REMEMBERED_SET, |
- instr->hydrogen()->SmiCheckForWriteBarrier()); |
+ instr->hydrogen()->SmiCheckForWriteBarrier(), |
+ instr->hydrogen()->PointersToHereCheckForValue()); |
} |
} |
@@ -4219,7 +4211,8 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) { |
value, |
kSaveFPRegs, |
EMIT_REMEMBERED_SET, |
- check_needed); |
+ check_needed, |
+ instr->hydrogen()->PointersToHereCheckForValue()); |
} |
} |