Reviewers: Michael Starzinger, danno,
Description:
Turn escape analysis into a proper HPhase.
Please review this at https://codereview.chromium.org/18476004/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/hydrogen-escape-analysis.h
M src/hydrogen-escape-analysis.cc
M src/hydrogen.cc
Index: src/hydrogen-escape-analysis.cc
diff --git a/src/hydrogen-escape-analysis.cc
b/src/hydrogen-escape-analysis.cc
index
59151ad10196fae2e27fdb37a0c0a32141fd9519..e852fb8d6d75d7756df6e4e03399bfb8789d4c76
100644
--- a/src/hydrogen-escape-analysis.cc
+++ b/src/hydrogen-escape-analysis.cc
@@ -31,7 +31,7 @@ namespace v8 {
namespace internal {
-void HEscapeAnalysis::CollectIfNoEscapingUses(HInstruction* instr) {
+void HEscapeAnalysisPhase::CollectIfNoEscapingUses(HInstruction* instr) {
for (HUseIterator it(instr->uses()); !it.Done(); it.Advance()) {
HValue* use = it.value();
if (use->HasEscapingOperandAt(it.index())) {
@@ -45,14 +45,14 @@ void
HEscapeAnalysis::CollectIfNoEscapingUses(HInstruction* instr) {
if (FLAG_trace_escape_analysis) {
PrintF("#%d (%s) is being captured\n", instr->id(), instr->Mnemonic());
}
- captured_.Add(instr, zone_);
+ captured_.Add(instr, zone());
}
-void HEscapeAnalysis::CollectCapturedValues() {
- int block_count = graph_->blocks()->length();
+void HEscapeAnalysisPhase::CollectCapturedValues() {
+ int block_count = graph()->blocks()->length();
for (int i = 0; i < block_count; ++i) {
- HBasicBlock* block = graph_->blocks()->at(i);
+ HBasicBlock* block = graph()->blocks()->at(i);
for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
HInstruction* instr = it.Current();
if (instr->IsAllocate() || instr->IsAllocateObject()) {
@@ -63,10 +63,4 @@ void HEscapeAnalysis::CollectCapturedValues() {
}
-void HEscapeAnalysis::Analyze() {
- HPhase phase("H_Escape analysis", graph_);
- CollectCapturedValues();
-}
-
-
} } // namespace v8::internal
Index: src/hydrogen-escape-analysis.h
diff --git a/src/hydrogen-escape-analysis.h b/src/hydrogen-escape-analysis.h
index
1d31f3dce7e789320c7fdd8439a9f11e1bb35236..6ba6e823c54f25f2ef4c45a13c9aedba37cfa566
100644
--- a/src/hydrogen-escape-analysis.h
+++ b/src/hydrogen-escape-analysis.h
@@ -35,19 +35,19 @@ namespace v8 {
namespace internal {
-class HEscapeAnalysis BASE_EMBEDDED {
+class HEscapeAnalysisPhase : public HPhase {
public:
- explicit HEscapeAnalysis(HGraph* graph)
- : graph_(graph), zone_(graph->zone()), captured_(0, zone_) { }
+ explicit HEscapeAnalysisPhase(HGraph* graph)
+ : HPhase("H_Escape analysis", graph), captured_(0, zone()) { }
- void Analyze();
+ void Run() {
+ CollectCapturedValues();
+ }
private:
void CollectCapturedValues();
void CollectIfNoEscapingUses(HInstruction* instr);
- HGraph* graph_;
- Zone* zone_;
ZoneList<HValue*> captured_;
};
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
0bca49d40ae69d1d5232f388d9ac51ad66ee3273..840abea86c1b5c6495207956d612717a3cced8be
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -3815,10 +3815,7 @@ bool HGraph::Optimize(SmartArrayPointer<char>*
bailout_reason) {
if (FLAG_use_canonicalizing) Canonicalize();
- if (FLAG_use_escape_analysis) {
- HEscapeAnalysis escape_analysis(this);
- escape_analysis.Analyze();
- }
+ if (FLAG_use_escape_analysis) Run<HEscapeAnalysisPhase>();
if (FLAG_use_gvn) Run<HGlobalValueNumberingPhase>();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.