Chromium Code Reviews| Index: src/compiler/pipeline.cc |
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
| index 3325d9b0641994504652622d3a45526c13f9ce71..da68b7bc2332dc68df9f9ba73513f6ebdc557f89 100644 |
| --- a/src/compiler/pipeline.cc |
| +++ b/src/compiler/pipeline.cc |
| @@ -19,6 +19,8 @@ |
| #include "src/compiler/common-operator-reducer.h" |
| #include "src/compiler/control-flow-optimizer.h" |
| #include "src/compiler/dead-code-elimination.h" |
| +#include "src/compiler/escape-analysis.h" |
| +#include "src/compiler/escape-analysis-reducer.h" |
| #include "src/compiler/frame-elider.h" |
| #include "src/compiler/graph-replay.h" |
| #include "src/compiler/graph-trimmer.h" |
| @@ -623,6 +625,25 @@ struct BranchEliminationPhase { |
| }; |
| +struct EscapeAnalysisPhase { |
| + static const char* phase_name() { return "escape analysis"; } |
| + |
| + void Run(PipelineData* data, Zone* temp_zone) { |
| + if (!FLAG_turbo_escape) return; |
|
Michael Starzinger
2015/11/30 10:05:39
nit: Better hoist the flag check out to the call-s
sigurds
2015/11/30 13:50:24
Done.
|
| + EscapeStatusAnalysis escape_status(data->graph(), temp_zone); |
| + escape_status.Run(); |
| + EscapeObjectAnalysis escape_analysis(data->graph(), |
| + data->jsgraph()->common(), temp_zone); |
| + escape_analysis.Run(); |
| + JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
| + EscapeAnalysisReducer red(&graph_reducer, data->jsgraph(), &escape_status, |
|
Michael Starzinger
2015/11/30 10:05:39
nit: s/red/escape_reducer/
sigurds
2015/11/30 13:50:24
Done.
|
| + &escape_analysis, temp_zone); |
| + AddReducer(data, &graph_reducer, &red); |
| + graph_reducer.ReduceGraph(); |
| + } |
| +}; |
| + |
| + |
| struct SimplifiedLoweringPhase { |
| static const char* phase_name() { return "simplified lowering"; } |
| @@ -1121,6 +1142,9 @@ Handle<Code> Pipeline::GenerateCode() { |
| RunPrintAndVerify("Loop peeled"); |
| } |
| + Run<EscapeAnalysisPhase>(); |
| + RunPrintAndVerify("Escape Analysed"); |
| + |
| // Lower simplified operators and insert changes. |
| Run<SimplifiedLoweringPhase>(); |
| RunPrintAndVerify("Lowered simplified"); |