Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: src/compiler/register-allocator.cc

Issue 727323002: [turbofan] move register allocation phases to pipeline (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/compiler/register-allocator.cc
diff --git a/src/compiler/register-allocator.cc b/src/compiler/register-allocator.cc
index c3145091b075ef03d964eed1ce2f14cfb2c0728b..66e250c4c2cfd2f9422913d3c66f088cdeb5a94b 100644
--- a/src/compiler/register-allocator.cc
+++ b/src/compiler/register-allocator.cc
@@ -3,7 +3,6 @@
// found in the LICENSE file.
#include "src/compiler/linkage.h"
-#include "src/compiler/pipeline-statistics.h"
#include "src/compiler/register-allocator.h"
#include "src/string-stream.h"
@@ -536,6 +535,12 @@ RegisterAllocator::RegisterAllocator(const RegisterConfiguration* config,
// when allocating local arrays.
DCHECK(this->config()->num_double_registers() >=
this->config()->num_general_registers());
+ assigned_registers_ =
+ new (code_zone()) BitVector(config->num_general_registers(), code_zone());
+ assigned_double_registers_ = new (code_zone())
+ BitVector(config->num_aliased_double_registers(), code_zone());
+ frame->SetAllocatedRegisters(assigned_registers_);
+ frame->SetAllocatedDoubleRegisters(assigned_double_registers_);
}
@@ -1116,59 +1121,6 @@ void RegisterAllocator::ResolvePhis(const InstructionBlock* block) {
}
-bool RegisterAllocator::Allocate(PipelineStatistics* stats) {
- assigned_registers_ = new (code_zone())
- BitVector(config()->num_general_registers(), code_zone());
- assigned_double_registers_ = new (code_zone())
- BitVector(config()->num_aliased_double_registers(), code_zone());
- {
- PhaseScope phase_scope(stats, "meet register constraints");
- MeetRegisterConstraints();
- }
- {
- PhaseScope phase_scope(stats, "resolve phis");
- ResolvePhis();
- }
- {
- PhaseScope phase_scope(stats, "build live ranges");
- BuildLiveRanges();
- }
- if (FLAG_trace_turbo) {
- OFStream os(stdout);
- PrintableInstructionSequence printable = {config(), code()};
- os << "----- Instruction sequence before register allocation -----\n"
- << printable;
- }
- // This can be triggered in debug mode.
- DCHECK(!ExistsUseWithoutDefinition());
- {
- PhaseScope phase_scope(stats, "allocate general registers");
- AllocateGeneralRegisters();
- }
- if (!AllocationOk()) return false;
- {
- PhaseScope phase_scope(stats, "allocate double registers");
- AllocateDoubleRegisters();
- }
- if (!AllocationOk()) return false;
- {
- PhaseScope phase_scope(stats, "populate pointer maps");
- PopulatePointerMaps();
- }
- {
- PhaseScope phase_scope(stats, "connect ranges");
- ConnectRanges();
- }
- {
- PhaseScope phase_scope(stats, "resolve control flow");
- ResolveControlFlow();
- }
- frame()->SetAllocatedRegisters(assigned_registers_);
- frame()->SetAllocatedDoubleRegisters(assigned_double_registers_);
- return true;
-}
-
-
void RegisterAllocator::MeetRegisterConstraints() {
for (auto block : code()->instruction_blocks()) {
MeetRegisterConstraints(block);

Powered by Google App Engine
This is Rietveld 408576698