Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index e054b0fb412c2fbb0994b5f4cf45360ddaffa54d..5c9ee62a459d3ff4474a722959f3b2cfb2ec2497 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -410,6 +410,15 @@ class SourcePositionWrapper final : public Reducer { |
}; |
+class JSGraphReducer final : public GraphReducer { |
+ public: |
+ JSGraphReducer(JSGraph* jsgraph, Zone* zone) |
+ : GraphReducer(zone, jsgraph->graph(), jsgraph->TheHoleConstant(), |
+ jsgraph->DeadControl()) {} |
+ ~JSGraphReducer() final {} |
+}; |
+ |
+ |
void AddReducer(PipelineData* data, GraphReducer* graph_reducer, |
Reducer* reducer) { |
if (data->info()->is_source_positions_enabled()) { |
@@ -488,7 +497,7 @@ struct ContextSpecializerPhase { |
void Run(PipelineData* data, Zone* temp_zone) { |
JSContextSpecializer spec(data->jsgraph()); |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
AddReducer(data, &graph_reducer, &spec); |
graph_reducer.ReduceGraph(); |
} |
@@ -499,7 +508,7 @@ struct InliningPhase { |
static const char* phase_name() { return "inlining"; } |
void Run(PipelineData* data, Zone* temp_zone) { |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
JSInliner inliner(&graph_reducer, data->info()->is_inlining_enabled() |
? JSInliner::kGeneralInlining |
: JSInliner::kRestrictedInlining, |
@@ -535,7 +544,7 @@ struct JSTypeFeedbackPhase { |
TypeFeedbackOracle oracle(data->isolate(), temp_zone, |
data->info()->unoptimized_code(), |
data->info()->feedback_vector(), native_context); |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
Handle<GlobalObject> global_object = Handle<GlobalObject>::null(); |
if (data->info()->has_global_object()) { |
global_object = |
@@ -559,7 +568,7 @@ struct TypedLoweringPhase { |
static const char* phase_name() { return "typed lowering"; } |
void Run(PipelineData* data, Zone* temp_zone) { |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
LoadElimination load_elimination; |
JSBuiltinReducer builtin_reducer(data->jsgraph()); |
JSTypedLowering typed_lowering(&graph_reducer, data->jsgraph(), temp_zone); |
@@ -589,7 +598,7 @@ struct SimplifiedLoweringPhase { |
ValueNumberingReducer vn_reducer(temp_zone); |
MachineOperatorReducer machine_reducer(data->jsgraph()); |
CommonOperatorReducer common_reducer(data->jsgraph()); |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
AddReducer(data, &graph_reducer, &vn_reducer); |
AddReducer(data, &graph_reducer, &machine_reducer); |
AddReducer(data, &graph_reducer, &common_reducer); |
@@ -617,7 +626,7 @@ struct ChangeLoweringPhase { |
ChangeLowering lowering(data->jsgraph()); |
MachineOperatorReducer machine_reducer(data->jsgraph()); |
CommonOperatorReducer common_reducer(data->jsgraph()); |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
AddReducer(data, &graph_reducer, &vn_reducer); |
AddReducer(data, &graph_reducer, &lowering); |
AddReducer(data, &graph_reducer, &machine_reducer); |
@@ -666,7 +675,7 @@ struct GenericLoweringPhase { |
data->jsgraph()); |
SelectLowering select(data->jsgraph()->graph(), data->jsgraph()->common()); |
TailCallOptimization tco(data->common(), data->graph()); |
- GraphReducer graph_reducer(data->graph(), temp_zone); |
+ JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); |
AddReducer(data, &graph_reducer, &generic); |
AddReducer(data, &graph_reducer, &select); |
// TODO(turbofan): TCO is currently limited to stubs. |