OLD | NEW |
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 <sstream> | 8 #include <sstream> |
9 | 9 |
10 #include "src/base/platform/elapsed-timer.h" | 10 #include "src/base/platform/elapsed-timer.h" |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 | 526 |
527 struct AllocateDoubleRegistersPhase { | 527 struct AllocateDoubleRegistersPhase { |
528 static const char* phase_name() { return "allocate double registers"; } | 528 static const char* phase_name() { return "allocate double registers"; } |
529 | 529 |
530 void Run(PipelineData* data, Zone* temp_zone) { | 530 void Run(PipelineData* data, Zone* temp_zone) { |
531 data->register_allocator()->AllocateDoubleRegisters(); | 531 data->register_allocator()->AllocateDoubleRegisters(); |
532 } | 532 } |
533 }; | 533 }; |
534 | 534 |
535 | 535 |
| 536 struct ReuseSpillSlotsPhase { |
| 537 static const char* phase_name() { return "reuse spill slots"; } |
| 538 |
| 539 void Run(PipelineData* data, Zone* temp_zone) { |
| 540 data->register_allocator()->ReuseSpillSlots(); |
| 541 } |
| 542 }; |
| 543 |
| 544 |
536 struct PopulatePointerMapsPhase { | 545 struct PopulatePointerMapsPhase { |
537 static const char* phase_name() { return "populate pointer maps"; } | 546 static const char* phase_name() { return "populate pointer maps"; } |
538 | 547 |
539 void Run(PipelineData* data, Zone* temp_zone) { | 548 void Run(PipelineData* data, Zone* temp_zone) { |
540 data->register_allocator()->PopulatePointerMaps(); | 549 data->register_allocator()->PopulatePointerMaps(); |
541 } | 550 } |
542 }; | 551 }; |
543 | 552 |
544 | 553 |
545 struct ConnectRangesPhase { | 554 struct ConnectRangesPhase { |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 Run<AllocateGeneralRegistersPhase>(); | 937 Run<AllocateGeneralRegistersPhase>(); |
929 if (!data->register_allocator()->AllocationOk()) { | 938 if (!data->register_allocator()->AllocationOk()) { |
930 data->set_compilation_failed(); | 939 data->set_compilation_failed(); |
931 return; | 940 return; |
932 } | 941 } |
933 Run<AllocateDoubleRegistersPhase>(); | 942 Run<AllocateDoubleRegistersPhase>(); |
934 if (!data->register_allocator()->AllocationOk()) { | 943 if (!data->register_allocator()->AllocationOk()) { |
935 data->set_compilation_failed(); | 944 data->set_compilation_failed(); |
936 return; | 945 return; |
937 } | 946 } |
| 947 Run<ReuseSpillSlotsPhase>(); |
938 Run<PopulatePointerMapsPhase>(); | 948 Run<PopulatePointerMapsPhase>(); |
939 Run<ConnectRangesPhase>(); | 949 Run<ConnectRangesPhase>(); |
940 Run<ResolveControlFlowPhase>(); | 950 Run<ResolveControlFlowPhase>(); |
941 | 951 |
942 if (FLAG_trace_turbo) { | 952 if (FLAG_trace_turbo) { |
943 OFStream os(stdout); | 953 OFStream os(stdout); |
944 PrintableInstructionSequence printable = {config, data->sequence()}; | 954 PrintableInstructionSequence printable = {config, data->sequence()}; |
945 os << "----- Instruction sequence after register allocation -----\n" | 955 os << "----- Instruction sequence after register allocation -----\n" |
946 << printable; | 956 << printable; |
947 } | 957 } |
(...skipping 15 matching lines...) Expand all Loading... |
963 } | 973 } |
964 | 974 |
965 | 975 |
966 void Pipeline::TearDown() { | 976 void Pipeline::TearDown() { |
967 InstructionOperand::TearDownCaches(); | 977 InstructionOperand::TearDownCaches(); |
968 } | 978 } |
969 | 979 |
970 } // namespace compiler | 980 } // namespace compiler |
971 } // namespace internal | 981 } // namespace internal |
972 } // namespace v8 | 982 } // namespace v8 |
OLD | NEW |