| Index: src/compiler/pipeline.cc
|
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
|
| index 92a0be6203c0e47b99d7ee9d19fa128cd68604c3..fd8843fea69be49530c1d4caed02634fae40acf0 100644
|
| --- a/src/compiler/pipeline.cc
|
| +++ b/src/compiler/pipeline.cc
|
| @@ -779,6 +779,16 @@ struct AllocateDoubleRegistersPhase {
|
| };
|
|
|
|
|
| +struct LocateSpillSlotsPhase {
|
| + static const char* phase_name() { return "locate spill slots"; }
|
| +
|
| + void Run(PipelineData* data, Zone* temp_zone) {
|
| + SpillSlotLocator locator(data->register_allocation_data());
|
| + locator.LocateSpillSlots();
|
| + }
|
| +};
|
| +
|
| +
|
| struct AssignSpillSlotsPhase {
|
| static const char* phase_name() { return "assign spill slots"; }
|
|
|
| @@ -1200,10 +1210,6 @@ Handle<Code> Pipeline::ScheduleAndGenerateCode(
|
| return Handle<Code>();
|
| }
|
|
|
| - if (FLAG_turbo_frame_elision) {
|
| - Run<FrameElisionPhase>();
|
| - }
|
| -
|
| BeginPhaseKind("code generation");
|
|
|
| // Optimimize jumps.
|
| @@ -1299,6 +1305,12 @@ void Pipeline::AllocateRegisters(const RegisterConfiguration* config,
|
| Run<AllocateGeneralRegistersPhase<LinearScanAllocator>>();
|
| Run<AllocateDoubleRegistersPhase<LinearScanAllocator>>();
|
| }
|
| +
|
| + if (FLAG_turbo_frame_elision) {
|
| + Run<LocateSpillSlotsPhase>();
|
| + Run<FrameElisionPhase>();
|
| + }
|
| +
|
| Run<AssignSpillSlotsPhase>();
|
|
|
| Run<CommitAssignmentPhase>();
|
|
|