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

Side by Side Diff: src/compiler/pipeline.cc

Issue 2730753003: [turbofan] always run value numbering last to patch unpredictable reductions (Closed)
Patch Set: Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/pipeline.h" 5 #include "src/compiler/pipeline.h"
6 6
7 #include <fstream> // NOLINT(readability/streams) 7 #include <fstream> // NOLINT(readability/streams)
8 #include <memory> 8 #include <memory>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 data->common()); 1034 data->common());
1035 SimplifiedOperatorReducer simple_reducer(&graph_reducer, data->jsgraph()); 1035 SimplifiedOperatorReducer simple_reducer(&graph_reducer, data->jsgraph());
1036 RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone); 1036 RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone);
1037 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone()); 1037 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1038 MachineOperatorReducer machine_reducer(data->jsgraph()); 1038 MachineOperatorReducer machine_reducer(data->jsgraph());
1039 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(), 1039 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
1040 data->common(), data->machine()); 1040 data->common(), data->machine());
1041 AddReducer(data, &graph_reducer, &dead_code_elimination); 1041 AddReducer(data, &graph_reducer, &dead_code_elimination);
1042 AddReducer(data, &graph_reducer, &simple_reducer); 1042 AddReducer(data, &graph_reducer, &simple_reducer);
1043 AddReducer(data, &graph_reducer, &redundancy_elimination); 1043 AddReducer(data, &graph_reducer, &redundancy_elimination);
1044 AddReducer(data, &graph_reducer, &value_numbering);
1045 AddReducer(data, &graph_reducer, &machine_reducer); 1044 AddReducer(data, &graph_reducer, &machine_reducer);
1046 AddReducer(data, &graph_reducer, &common_reducer); 1045 AddReducer(data, &graph_reducer, &common_reducer);
1046 AddReducer(data, &graph_reducer, &value_numbering);
1047 graph_reducer.ReduceGraph(); 1047 graph_reducer.ReduceGraph();
1048 } 1048 }
1049 }; 1049 };
1050 1050
1051 struct ControlFlowOptimizationPhase { 1051 struct ControlFlowOptimizationPhase {
1052 static const char* phase_name() { return "control flow optimization"; } 1052 static const char* phase_name() { return "control flow optimization"; }
1053 1053
1054 void Run(PipelineData* data, Zone* temp_zone) { 1054 void Run(PipelineData* data, Zone* temp_zone) {
1055 ControlFlowOptimizer optimizer(data->graph(), data->common(), 1055 ControlFlowOptimizer optimizer(data->graph(), data->common(),
1056 data->machine(), temp_zone); 1056 data->machine(), temp_zone);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1134 RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone); 1134 RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone);
1135 LoadElimination load_elimination(&graph_reducer, data->jsgraph(), 1135 LoadElimination load_elimination(&graph_reducer, data->jsgraph(),
1136 temp_zone); 1136 temp_zone);
1137 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone()); 1137 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1138 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(), 1138 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
1139 data->common(), data->machine()); 1139 data->common(), data->machine());
1140 AddReducer(data, &graph_reducer, &branch_condition_elimination); 1140 AddReducer(data, &graph_reducer, &branch_condition_elimination);
1141 AddReducer(data, &graph_reducer, &dead_code_elimination); 1141 AddReducer(data, &graph_reducer, &dead_code_elimination);
1142 AddReducer(data, &graph_reducer, &redundancy_elimination); 1142 AddReducer(data, &graph_reducer, &redundancy_elimination);
1143 AddReducer(data, &graph_reducer, &load_elimination); 1143 AddReducer(data, &graph_reducer, &load_elimination);
1144 AddReducer(data, &graph_reducer, &common_reducer);
1144 AddReducer(data, &graph_reducer, &value_numbering); 1145 AddReducer(data, &graph_reducer, &value_numbering);
1145 AddReducer(data, &graph_reducer, &common_reducer);
1146 graph_reducer.ReduceGraph(); 1146 graph_reducer.ReduceGraph();
1147 } 1147 }
1148 }; 1148 };
1149 1149
1150 struct MemoryOptimizationPhase { 1150 struct MemoryOptimizationPhase {
1151 static const char* phase_name() { return "memory optimization"; } 1151 static const char* phase_name() { return "memory optimization"; }
1152 1152
1153 void Run(PipelineData* data, Zone* temp_zone) { 1153 void Run(PipelineData* data, Zone* temp_zone) {
1154 // The memory optimizer requires the graphs to be trimmed, so trim now. 1154 // The memory optimizer requires the graphs to be trimmed, so trim now.
1155 GraphTrimmer trimmer(temp_zone, data->graph()); 1155 GraphTrimmer trimmer(temp_zone, data->graph());
(...skipping 18 matching lines...) Expand all
1174 data->common()); 1174 data->common());
1175 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone()); 1175 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1176 MachineOperatorReducer machine_reducer(data->jsgraph()); 1176 MachineOperatorReducer machine_reducer(data->jsgraph());
1177 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(), 1177 CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
1178 data->common(), data->machine()); 1178 data->common(), data->machine());
1179 SelectLowering select_lowering(data->jsgraph()->graph(), 1179 SelectLowering select_lowering(data->jsgraph()->graph(),
1180 data->jsgraph()->common()); 1180 data->jsgraph()->common());
1181 TailCallOptimization tco(data->common(), data->graph()); 1181 TailCallOptimization tco(data->common(), data->graph());
1182 AddReducer(data, &graph_reducer, &branch_condition_elimination); 1182 AddReducer(data, &graph_reducer, &branch_condition_elimination);
1183 AddReducer(data, &graph_reducer, &dead_code_elimination); 1183 AddReducer(data, &graph_reducer, &dead_code_elimination);
1184 AddReducer(data, &graph_reducer, &value_numbering);
1185 AddReducer(data, &graph_reducer, &machine_reducer); 1184 AddReducer(data, &graph_reducer, &machine_reducer);
1186 AddReducer(data, &graph_reducer, &common_reducer); 1185 AddReducer(data, &graph_reducer, &common_reducer);
1187 AddReducer(data, &graph_reducer, &select_lowering); 1186 AddReducer(data, &graph_reducer, &select_lowering);
1188 AddReducer(data, &graph_reducer, &tco); 1187 AddReducer(data, &graph_reducer, &tco);
1188 AddReducer(data, &graph_reducer, &value_numbering);
1189 graph_reducer.ReduceGraph(); 1189 graph_reducer.ReduceGraph();
1190 } 1190 }
1191 }; 1191 };
1192 1192
1193 struct EarlyGraphTrimmingPhase { 1193 struct EarlyGraphTrimmingPhase {
1194 static const char* phase_name() { return "early graph trimming"; } 1194 static const char* phase_name() { return "early graph trimming"; }
1195 void Run(PipelineData* data, Zone* temp_zone) { 1195 void Run(PipelineData* data, Zone* temp_zone) {
1196 GraphTrimmer trimmer(temp_zone, data->graph()); 1196 GraphTrimmer trimmer(temp_zone, data->graph());
1197 NodeVector roots(temp_zone); 1197 NodeVector roots(temp_zone);
1198 data->jsgraph()->GetCachedNodes(&roots); 1198 data->jsgraph()->GetCachedNodes(&roots);
(...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after
2027 data->DeleteRegisterAllocationZone(); 2027 data->DeleteRegisterAllocationZone();
2028 } 2028 }
2029 2029
2030 CompilationInfo* PipelineImpl::info() const { return data_->info(); } 2030 CompilationInfo* PipelineImpl::info() const { return data_->info(); }
2031 2031
2032 Isolate* PipelineImpl::isolate() const { return info()->isolate(); } 2032 Isolate* PipelineImpl::isolate() const { return info()->isolate(); }
2033 2033
2034 } // namespace compiler 2034 } // namespace compiler
2035 } // namespace internal 2035 } // namespace internal
2036 } // namespace v8 2036 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698