| Index: src/ia32/lithium-codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-codegen-ia32.cc (revision 8207)
|
| +++ src/ia32/lithium-codegen-ia32.cc (working copy)
|
| @@ -2222,31 +2222,31 @@
|
| Register object = ToRegister(instr->TempAt(0));
|
| Register address = ToRegister(instr->TempAt(1));
|
| Register value = ToRegister(instr->InputAt(0));
|
| + ASSERT(!value.is(object));
|
| Handle<JSGlobalPropertyCell> cell_handle(instr->hydrogen()->cell());
|
|
|
| + int offset = JSGlobalPropertyCell::kValueOffset;
|
| + __ mov(object, Immediate(cell_handle));
|
| +
|
| // If the cell we are storing to contains the hole it could have
|
| // been deleted from the property dictionary. In that case, we need
|
| // to update the property details in the property dictionary to mark
|
| // it as no longer deleted. We deoptimize in that case.
|
| if (instr->hydrogen()->check_hole_value()) {
|
| - __ cmp(Operand::Cell(cell_handle), factory()->the_hole_value());
|
| + __ cmp(FieldOperand(object, offset), factory()->the_hole_value());
|
| DeoptimizeIf(equal, instr->environment());
|
| }
|
|
|
| // Store the value.
|
| - __ mov(object, Immediate(cell_handle));
|
| - __ lea(address, FieldOperand(object, JSGlobalPropertyCell::kValueOffset));
|
| - __ mov(Operand(address, 0), value);
|
| + __ mov(FieldOperand(object, offset), value);
|
|
|
| -
|
| // Cells are always in the remembered set.
|
| __ RecordWriteField(object,
|
| - JSGlobalPropertyCell::kValueOffset,
|
| + offset,
|
| value,
|
| address,
|
| kSaveFPRegs,
|
| - OMIT_REMEMBERED_SET,
|
| - INLINE_SMI_CHECK);
|
| + OMIT_REMEMBERED_SET);
|
| }
|
|
|
|
|
|
|