Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Unified Diff: src/hydrogen-escape-analysis.cc

Issue 23533003: Implement fixpoint iteration for escape analysis. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698