Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index 1e54695d3ffec4eb969015abdae659f842a8e835..a35470ec209aced9012c4a455337c533d5f529f8 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -834,10 +834,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, |
Jakob Kummerow
2014/05/22 12:59:46
I'd call this just AddInstruction...
Alexandre Rames
2014/05/22 13:15:43
Done.
|
+ HInstruction* hydrogen_val) { |
if (instr != NULL) { |
Jakob Kummerow
2014/05/22 12:59:46
...and move this check to the caller. I don't thin
Alexandre Rames
2014/05/22 13:15:43
Done.
|
// 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 |
@@ -878,10 +886,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; |
@@ -897,7 +905,6 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) { |
} |
} |
} |
- current_instruction_ = old_current; |
} |