| Index: src/arm/stub-cache-arm.cc
|
| diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc
|
| index a024d798003cdf1625d42482cda3b7916601e9d2..cde08a2ede3401d8ccc267fc2c4edbcb4efbd7a0 100644
|
| --- a/src/arm/stub-cache-arm.cc
|
| +++ b/src/arm/stub-cache-arm.cc
|
| @@ -473,10 +473,20 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm,
|
| }
|
|
|
| if (!transition.is_null()) {
|
| - // Update the map of the object; no write barrier updating is
|
| - // needed because the map is never in new space.
|
| - __ mov(ip, Operand(transition));
|
| - __ str(ip, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
|
| + // Update the map of the object.
|
| + __ mov(scratch, Operand(transition));
|
| + __ str(scratch, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
|
| +
|
| + // Update the write barrier for the map field and pass the now unused
|
| + // name_reg as scratch register.
|
| + __ RecordWriteField(receiver_reg,
|
| + HeapObject::kMapOffset,
|
| + scratch,
|
| + name_reg,
|
| + kLRHasNotBeenSaved,
|
| + kDontSaveFPRegs,
|
| + OMIT_REMEMBERED_SET,
|
| + OMIT_SMI_CHECK);
|
| }
|
|
|
| // Adjust for the number of properties stored in the object. Even in the
|
|
|