| Index: src/hydrogen-escape-analysis.cc
|
| diff --git a/src/hydrogen-escape-analysis.cc b/src/hydrogen-escape-analysis.cc
|
| index 997e4f9445f79ab3f7ba079acb54be1f6e25deb8..20c36800a2a4030e94ba73a7d542d132c7d4b6c1 100644
|
| --- a/src/hydrogen-escape-analysis.cc
|
| +++ b/src/hydrogen-escape-analysis.cc
|
| @@ -307,7 +307,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_;
|
| @@ -321,8 +321,12 @@ 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();
|
| + for (int i = 0; i < kMaxFixpointIterationCount; i++) {
|
| + CollectCapturedValues();
|
| + if (captured_.is_empty()) break;
|
| + PerformScalarReplacement();
|
| + captured_.Clear();
|
| + }
|
| }
|
|
|
|
|
|
|