| Index: src/mips/lithium-mips.cc
|
| diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc
|
| index 97b91fac3995476829ce2f3d7347820ff4aa7a4b..cd00edbddc76e8d4ad369434b72cb9e7bab44e3a 100644
|
| --- a/src/mips/lithium-mips.cc
|
| +++ b/src/mips/lithium-mips.cc
|
| @@ -842,10 +842,18 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) {
|
| argument_count_ += current->argument_delta();
|
| ASSERT(argument_count_ >= 0);
|
|
|
| + CheckAndAddInstruction(instr, current);
|
| +
|
| + current_instruction_ = old_current;
|
| +}
|
| +
|
| +
|
| +void LChunkBuilder::CheckAndAddInstruction(LInstruction* instr,
|
| + HInstruction* hydrogen_val) {
|
| if (instr != NULL) {
|
| // Associate the hydrogen instruction first, since we may need it for
|
| // the ClobbersRegisters() or ClobbersDoubleRegisters() calls below.
|
| - instr->set_hydrogen_value(current);
|
| + instr->set_hydrogen_value(hydrogen_val);
|
|
|
| #if DEBUG
|
| // Make sure that the lithium instruction has either no fixed register
|
| @@ -886,10 +894,10 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) {
|
| chunk_->AddInstruction(instr, current_block_);
|
|
|
| if (instr->IsCall()) {
|
| - HValue* hydrogen_value_for_lazy_bailout = current;
|
| + HValue* hydrogen_value_for_lazy_bailout = hydrogen_val;
|
| LInstruction* instruction_needing_environment = NULL;
|
| - if (current->HasObservableSideEffects()) {
|
| - HSimulate* sim = HSimulate::cast(current->next());
|
| + if (hydrogen_val->HasObservableSideEffects()) {
|
| + HSimulate* sim = HSimulate::cast(hydrogen_val->next());
|
| instruction_needing_environment = instr;
|
| sim->ReplayEnvironment(current_block_->last_environment());
|
| hydrogen_value_for_lazy_bailout = sim;
|
| @@ -905,7 +913,6 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) {
|
| }
|
| }
|
| }
|
| - current_instruction_ = old_current;
|
| }
|
|
|
|
|
|
|