| Index: src/compiler/pipeline.cc
|
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
|
| index 92e77dfc759f8cf1a04fd32a2a1118107bf23b91..a5ae3f0def8b47e26b89c142193713c534362c44 100644
|
| --- a/src/compiler/pipeline.cc
|
| +++ b/src/compiler/pipeline.cc
|
| @@ -496,39 +496,6 @@ struct GraphBuilderPhase {
|
| };
|
|
|
|
|
| -struct NativeContextSpecializationPhase {
|
| - static const char* phase_name() { return "native context specialization"; }
|
| -
|
| - void Run(PipelineData* data, Zone* temp_zone) {
|
| - 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());
|
| - JSGlobalObjectSpecialization global_object_specialization(
|
| - &graph_reducer, data->jsgraph(),
|
| - data->info()->is_deoptimization_enabled()
|
| - ? JSGlobalObjectSpecialization::kDeoptimizationEnabled
|
| - : JSGlobalObjectSpecialization::kNoFlags,
|
| - handle(data->info()->global_object(), data->isolate()),
|
| - data->info()->dependencies());
|
| - JSNativeContextSpecialization native_context_specialization(
|
| - &graph_reducer, data->jsgraph(),
|
| - data->info()->is_deoptimization_enabled()
|
| - ? JSNativeContextSpecialization::kDeoptimizationEnabled
|
| - : JSNativeContextSpecialization::kNoFlags,
|
| - handle(data->info()->global_object()->native_context(),
|
| - data->isolate()),
|
| - data->info()->dependencies(), temp_zone);
|
| - AddReducer(data, &graph_reducer, &dead_code_elimination);
|
| - AddReducer(data, &graph_reducer, &common_reducer);
|
| - AddReducer(data, &graph_reducer, &global_object_specialization);
|
| - AddReducer(data, &graph_reducer, &native_context_specialization);
|
| - graph_reducer.ReduceGraph();
|
| - }
|
| -};
|
| -
|
| -
|
| struct InliningPhase {
|
| static const char* phase_name() { return "inlining"; }
|
|
|
| @@ -549,6 +516,24 @@ struct InliningPhase {
|
| : MaybeHandle<Context>());
|
| JSFrameSpecialization frame_specialization(data->info()->osr_frame(),
|
| data->jsgraph());
|
| + JSGlobalObjectSpecialization global_object_specialization(
|
| + &graph_reducer, data->jsgraph(),
|
| + data->info()->is_deoptimization_enabled()
|
| + ? JSGlobalObjectSpecialization::kDeoptimizationEnabled
|
| + : JSGlobalObjectSpecialization::kNoFlags,
|
| + data->info()->is_native_context_specializing()
|
| + ? handle(data->info()->native_context(), data->isolate())
|
| + : MaybeHandle<Context>(),
|
| + data->info()->dependencies());
|
| + JSNativeContextSpecialization native_context_specialization(
|
| + &graph_reducer, data->jsgraph(),
|
| + data->info()->is_deoptimization_enabled()
|
| + ? JSNativeContextSpecialization::kDeoptimizationEnabled
|
| + : JSNativeContextSpecialization::kNoFlags,
|
| + data->info()->is_native_context_specializing()
|
| + ? handle(data->info()->native_context(), data->isolate())
|
| + : MaybeHandle<Context>(),
|
| + data->info()->dependencies(), temp_zone);
|
| JSInliningHeuristic inlining(&graph_reducer,
|
| data->info()->is_inlining_enabled()
|
| ? JSInliningHeuristic::kGeneralInlining
|
| @@ -559,6 +544,8 @@ struct InliningPhase {
|
| if (data->info()->is_frame_specializing()) {
|
| AddReducer(data, &graph_reducer, &frame_specialization);
|
| }
|
| + AddReducer(data, &graph_reducer, &global_object_specialization);
|
| + AddReducer(data, &graph_reducer, &native_context_specialization);
|
| AddReducer(data, &graph_reducer, &context_specialization);
|
| AddReducer(data, &graph_reducer, &call_reducer);
|
| AddReducer(data, &graph_reducer, &inlining);
|
| @@ -1100,12 +1087,6 @@ Handle<Code> Pipeline::GenerateCode() {
|
| RunPrintAndVerify("OSR deconstruction", true);
|
| }
|
|
|
| - // Perform native context specialization (if enabled).
|
| - if (info()->is_native_context_specializing()) {
|
| - Run<NativeContextSpecializationPhase>();
|
| - RunPrintAndVerify("Native context specialized", true);
|
| - }
|
| -
|
| // Perform function context specialization and inlining (if enabled).
|
| Run<InliningPhase>();
|
| RunPrintAndVerify("Inlined", true);
|
|
|