| Index: src/compiler/pipeline.cc
|
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
|
| index f6a5c05773f82a2fad2ec247fa645adb68f8b10f..e07ce7691f3b4e55c3c58667f116581a5809e6eb 100644
|
| --- a/src/compiler/pipeline.cc
|
| +++ b/src/compiler/pipeline.cc
|
| @@ -7,6 +7,7 @@
|
| #include <fstream> // NOLINT(readability/streams)
|
| #include <sstream>
|
|
|
| +#include "src/base/adapters.h"
|
| #include "src/base/platform/elapsed-timer.h"
|
| #include "src/compiler/ast-graph-builder.h"
|
| #include "src/compiler/ast-loop-assignment-analyzer.h"
|
| @@ -16,6 +17,7 @@
|
| #include "src/compiler/common-operator-reducer.h"
|
| #include "src/compiler/control-flow-optimizer.h"
|
| #include "src/compiler/control-reducer.h"
|
| +#include "src/compiler/frame-elider.h"
|
| #include "src/compiler/graph-replay.h"
|
| #include "src/compiler/graph-visualizer.h"
|
| #include "src/compiler/instruction.h"
|
| @@ -832,6 +834,15 @@ struct OptimizeMovesPhase {
|
| };
|
|
|
|
|
| +struct FrameElisionPhase {
|
| + static const char* phase_name() { return "frame elision"; }
|
| +
|
| + void Run(PipelineData* data, Zone* temp_zone) {
|
| + FrameElider(data->sequence()).Run();
|
| + }
|
| +};
|
| +
|
| +
|
| struct JumpThreadingPhase {
|
| static const char* phase_name() { return "jump threading"; }
|
|
|
| @@ -1184,6 +1195,10 @@ Handle<Code> Pipeline::ScheduleAndGenerateCode(
|
| return Handle<Code>();
|
| }
|
|
|
| + if (FLAG_turbo_frame_elision) {
|
| + Run<FrameElisionPhase>();
|
| + }
|
| +
|
| BeginPhaseKind("code generation");
|
|
|
| // Optimimize jumps.
|
|
|