| Index: src/ia32/lithium-codegen-ia32.cc | 
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc | 
| index 18f2a39a83cd1a85ae13f0a63699aaef89cb237f..ca093ec6512e6d0b4337d91efc8725270cb06286 100644 | 
| --- a/src/ia32/lithium-codegen-ia32.cc | 
| +++ b/src/ia32/lithium-codegen-ia32.cc | 
| @@ -3368,7 +3368,22 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { | 
| int offset = instr->offset(); | 
|  | 
| if (!instr->transition().is_null()) { | 
| -    __ mov(FieldOperand(object, HeapObject::kMapOffset), instr->transition()); | 
| +    if (!instr->hydrogen()->NeedsWriteBarrierForMap()) { | 
| +      __ mov(FieldOperand(object, HeapObject::kMapOffset), instr->transition()); | 
| +    } else { | 
| +      Register temp = ToRegister(instr->TempAt(0)); | 
| +      Register temp_map = ToRegister(instr->TempAt(1)); | 
| +      __ mov(temp_map, instr->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); | 
| +    } | 
| } | 
|  | 
| // Do the store. | 
|  |