| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index f510c85c2c39bd52dad1d0d7f2d558c3ab9b6337..623a9dca452d8195ab26de7d5060f1a905978282 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -4097,12 +4097,32 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| }
|
| } else if (representation.IsDouble()) {
|
| ASSERT(access.IsInobject());
|
| + ASSERT(!instr->hydrogen()->has_transition());
|
| ASSERT(!instr->hydrogen()->NeedsWriteBarrier());
|
| DwVfpRegister value = ToDoubleRegister(instr->value());
|
| __ vstr(value, FieldMemOperand(object, offset));
|
| return;
|
| }
|
|
|
| + if (instr->hydrogen()->has_transition()) {
|
| + Handle<Map> transition = instr->hydrogen()->transition_map();
|
| + AddDeprecationDependency(transition);
|
| + __ mov(scratch, Operand(transition));
|
| + __ str(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
|
| + if (instr->hydrogen()->NeedsWriteBarrierForMap()) {
|
| + Register temp = ToRegister(instr->temp());
|
| + // Update the write barrier for the map field.
|
| + __ RecordWriteField(object,
|
| + HeapObject::kMapOffset,
|
| + scratch,
|
| + temp,
|
| + GetLinkRegisterState(),
|
| + kSaveFPRegs,
|
| + OMIT_REMEMBERED_SET,
|
| + OMIT_SMI_CHECK);
|
| + }
|
| + }
|
| +
|
| // Do the store.
|
| Register value = ToRegister(instr->value());
|
| if (access.IsInobject()) {
|
|
|