| Index: src/hydrogen-escape-analysis.cc
|
| diff --git a/src/hydrogen-escape-analysis.cc b/src/hydrogen-escape-analysis.cc
|
| index 3a7e10dbe427f178604c950bf9ca92e6b162c2d0..102301992333e1c9a994d0d7b051577869ac89fa 100644
|
| --- a/src/hydrogen-escape-analysis.cc
|
| +++ b/src/hydrogen-escape-analysis.cc
|
| @@ -306,7 +306,7 @@ void HEscapeAnalysisPhase::PerformScalarReplacement() {
|
| number_of_objects_++;
|
| block_states_.Clear();
|
|
|
| - // Perform actual analysis steps.
|
| + // Perform actual analysis step.
|
| AnalyzeDataFlow(allocate);
|
|
|
| cumulative_values_ += number_of_values_;
|
| @@ -320,8 +320,13 @@ void HEscapeAnalysisPhase::Run() {
|
| // TODO(mstarzinger): We disable escape analysis with OSR for now, because
|
| // spill slots might be uninitialized. Needs investigation.
|
| if (graph()->has_osr()) return;
|
| - CollectCapturedValues();
|
| - PerformScalarReplacement();
|
| + int max_fixpoint_iteration_count = FLAG_escape_analysis_iterations;
|
| + for (int i = 0; i < max_fixpoint_iteration_count; i++) {
|
| + CollectCapturedValues();
|
| + if (captured_.is_empty()) break;
|
| + PerformScalarReplacement();
|
| + captured_.Clear();
|
| + }
|
| }
|
|
|
|
|
|
|