Index: src/hydrogen-escape-analysis.cc |
diff --git a/src/hydrogen-escape-analysis.cc b/src/hydrogen-escape-analysis.cc |
index 311091b6d993ddf78f7b373309d60b6869a249e7..de29266c25f3eafa35d547724dec3ac062450cf0 100644 |
--- a/src/hydrogen-escape-analysis.cc |
+++ b/src/hydrogen-escape-analysis.cc |
@@ -259,6 +259,7 @@ void HEscapeAnalysisPhase::AnalyzeDataFlow(HInstruction* allocate) { |
void HEscapeAnalysisPhase::PerformScalarReplacement() { |
+ bool maybe_more_work = false; |
for (int i = 0; i < captured_.length(); i++) { |
HAllocate* allocate = HAllocate::cast(captured_.at(i)); |
@@ -269,13 +270,18 @@ void HEscapeAnalysisPhase::PerformScalarReplacement() { |
number_of_objects_++; |
block_states_.Clear(); |
- // Perform actual analysis steps. |
+ // Perform actual analysis step. |
AnalyzeDataFlow(allocate); |
+ maybe_more_work = true; |
cumulative_values_ += number_of_values_; |
ASSERT(allocate->HasNoUses()); |
ASSERT(!allocate->IsLinked()); |
} |
+ |
+ // Clear captured objects. |
+ maybe_more_work_ = maybe_more_work; |
+ captured_.Clear(); |
} |