| Index: src/ia32/lithium-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.cc (revision 9327)
|
| +++ src/ia32/lithium-ia32.cc (working copy)
|
| @@ -1787,7 +1787,9 @@
|
|
|
| LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) {
|
| LStoreGlobalCell* result =
|
| - new LStoreGlobalCell(UseRegisterAtStart(instr->value()));
|
| + new LStoreGlobalCell(UseTempRegister(instr->value()),
|
| + TempRegister(),
|
| + TempRegister());
|
| return instr->check_hole_value() ? AssignEnvironment(result) : result;
|
| }
|
|
|
| @@ -1809,15 +1811,13 @@
|
|
|
|
|
| LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) {
|
| - LOperand* context;
|
| LOperand* value;
|
| LOperand* temp;
|
| + LOperand* context = UseRegister(instr->context());
|
| if (instr->NeedsWriteBarrier()) {
|
| - context = UseTempRegister(instr->context());
|
| value = UseTempRegister(instr->value());
|
| temp = TempRegister();
|
| } else {
|
| - context = UseRegister(instr->context());
|
| value = UseRegister(instr->value());
|
| temp = NULL;
|
| }
|
| @@ -1945,7 +1945,7 @@
|
| ASSERT(instr->object()->representation().IsTagged());
|
| ASSERT(instr->key()->representation().IsInteger32());
|
|
|
| - LOperand* obj = UseTempRegister(instr->object());
|
| + LOperand* obj = UseRegister(instr->object());
|
| LOperand* val = needs_write_barrier
|
| ? UseTempRegister(instr->value())
|
| : UseRegisterAtStart(instr->value());
|
| @@ -2022,9 +2022,14 @@
|
| LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) {
|
| bool needs_write_barrier = instr->NeedsWriteBarrier();
|
|
|
| - LOperand* obj = needs_write_barrier
|
| - ? UseTempRegister(instr->object())
|
| - : UseRegisterAtStart(instr->object());
|
| + LOperand* obj;
|
| + if (needs_write_barrier) {
|
| + obj = instr->is_in_object()
|
| + ? UseRegister(instr->object())
|
| + : UseTempRegister(instr->object());
|
| + } else {
|
| + obj = UseRegisterAtStart(instr->object());
|
| + }
|
|
|
| LOperand* val = needs_write_barrier
|
| ? UseTempRegister(instr->value())
|
|
|