Chromium Code Reviews| Index: src/compiler/pipeline.cc |
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
| index 9683a83d68dc7b5c6c6132ce98b30d934476f05f..1a3f106257e65852f75e25b704a7d40c57b6c77d 100644 |
| --- a/src/compiler/pipeline.cc |
| +++ b/src/compiler/pipeline.cc |
| @@ -1032,12 +1032,29 @@ struct EffectControlLinearizationPhase { |
| } |
| }; |
| +struct CommonOperatorReducerPhase { |
| + static const char* phase_name() { return "common operator reducer"; } |
| + |
| + void Run(PipelineData* data, Zone* temp_zone) { |
| + // Run the common operator reducer. |
| + JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
| + DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(), |
| + data->common()); |
| + CommonOperatorReducer common_reducer(&graph_reducer, data->graph(), |
| + data->common(), data->machine()); |
| + AddReducer(data, &graph_reducer, &dead_code_elimination); |
| + AddReducer(data, &graph_reducer, &common_reducer); |
| + graph_reducer.ReduceGraph(); |
| + } |
| +}; |
| + |
| struct StoreStoreEliminationPhase { |
| - static const char* phase_name() { return "Store-store elimination"; } |
| + static const char* phase_name() { return "store-store elimination"; } |
| void Run(PipelineData* data, Zone* temp_zone) { |
| - StoreStoreElimination store_store_elimination(data->jsgraph(), temp_zone); |
| - store_store_elimination.Run(); |
| + GraphTrimmer(temp_zone, data->graph()).TrimGraph(); |
| + |
| + StoreStoreElimination::Run(data->jsgraph(), temp_zone); |
| } |
| }; |
| @@ -1518,6 +1535,9 @@ bool PipelineImpl::OptimizeGraph(Linkage* linkage) { |
| Run<EffectControlLinearizationPhase>(); |
| RunPrintAndVerify("Effect and control linearized", true); |
| + Run<CommonOperatorReducerPhase>(); |
|
Jarin
2016/07/20 11:43:33
Just curious - why is this necessary? (I assume it
bgeron
2016/07/20 16:27:16
To eliminate dead conditional deopts. This is done
|
| + RunPrintAndVerify("Common operator reducer", true); |
| + |
| if (FLAG_turbo_store_elimination) { |
| Run<StoreStoreEliminationPhase>(); |
| RunPrintAndVerify("Store-store elimination", true); |