| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index eaef6ff40d52eb473668d55ea76f470cca5d1b6c..895b4c98ca1b972a074f4576a6b49dfd0d152b81 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -2141,26 +2141,26 @@ void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) {
|
|
|
|
|
| void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) {
|
| - Register value = ToRegister(instr->InputAt(0));
|
| - Register scratch = scratch0();
|
| - Register scratch2 = ToRegister(instr->TempAt(0));
|
| + Register value = ToRegister(instr->value());
|
| + Register cell = scratch0();
|
|
|
| // Load the cell.
|
| - __ li(scratch, Operand(Handle<Object>(instr->hydrogen()->cell())));
|
| + __ li(cell, Operand(instr->hydrogen()->cell()));
|
|
|
| // 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.
|
| if (instr->hydrogen()->RequiresHoleCheck()) {
|
| - __ lw(scratch2,
|
| - FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset));
|
| + // We use a temp to check the payload.
|
| + Register payload = ToRegister(instr->TempAt(0));
|
| + __ lw(payload, FieldMemOperand(cell, JSGlobalPropertyCell::kValueOffset));
|
| __ LoadRoot(at, Heap::kTheHoleValueRootIndex);
|
| - DeoptimizeIf(eq, instr->environment(), scratch2, Operand(at));
|
| + DeoptimizeIf(eq, instr->environment(), payload, Operand(at));
|
| }
|
|
|
| // Store the value.
|
| - __ sw(value, FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset));
|
| + __ sw(value, FieldMemOperand(cell, JSGlobalPropertyCell::kValueOffset));
|
| // Cells are always rescanned, so no write barrier here.
|
| }
|
|
|
|
|