| Index: src/compiler/register-allocator.cc
|
| diff --git a/src/compiler/register-allocator.cc b/src/compiler/register-allocator.cc
|
| index 0dd358edb3aaedbc8e2a287f238c9dc47b75b1da..ff196eaa910a1204e83f3f366fdf27543b05498b 100644
|
| --- a/src/compiler/register-allocator.cc
|
| +++ b/src/compiler/register-allocator.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "src/compiler/register-allocator.h"
|
|
|
| +#include "src/compiler/generic-node-inl.h"
|
| #include "src/compiler/linkage.h"
|
| #include "src/hydrogen.h"
|
| #include "src/string-stream.h"
|
| @@ -530,25 +531,23 @@ BitVector* RegisterAllocator::ComputeLiveOut(BasicBlock* block) {
|
| new (zone()) BitVector(code()->VirtualRegisterCount(), zone());
|
|
|
| // Process all successor blocks.
|
| - BasicBlock::Successors successors = block->successors();
|
| - for (BasicBlock::Successors::iterator i = successors.begin();
|
| - i != successors.end(); ++i) {
|
| + for (BasicBlock::Successors::iterator i = block->successors_begin();
|
| + i != block->successors_end(); ++i) {
|
| // Add values live on entry to the successor. Note the successor's
|
| // live_in will not be computed yet for backwards edges.
|
| BasicBlock* successor = *i;
|
| - BitVector* live_in = live_in_sets_[successor->rpo_number_];
|
| + BitVector* live_in = live_in_sets_[successor->rpo_number()];
|
| if (live_in != NULL) live_out->Union(*live_in);
|
|
|
| // All phi input operands corresponding to this successor edge are live
|
| // out from this block.
|
| - int index = successor->PredecessorIndexOf(block);
|
| - DCHECK(index >= 0);
|
| - DCHECK(index < static_cast<int>(successor->PredecessorCount()));
|
| + size_t index = successor->PredecessorIndexOf(block);
|
| + DCHECK(index < successor->PredecessorCount());
|
| for (BasicBlock::const_iterator j = successor->begin();
|
| j != successor->end(); ++j) {
|
| Node* phi = *j;
|
| if (phi->opcode() != IrOpcode::kPhi) continue;
|
| - Node* input = phi->InputAt(index);
|
| + Node* input = phi->InputAt(static_cast<int>(index));
|
| live_out->Add(input->id());
|
| }
|
| }
|
| @@ -772,9 +771,8 @@ void RegisterAllocator::MeetRegisterConstraintsForLastInstructionInBlock(
|
| assigned = true;
|
| }
|
|
|
| - BasicBlock::Successors successors = block->successors();
|
| - for (BasicBlock::Successors::iterator succ = successors.begin();
|
| - succ != successors.end(); ++succ) {
|
| + for (BasicBlock::Successors::iterator succ = block->successors_begin();
|
| + succ != block->successors_end(); ++succ) {
|
| DCHECK((*succ)->PredecessorCount() == 1);
|
| int gap_index = (*succ)->first_instruction_index() + 1;
|
| DCHECK(code()->IsGapAt(gap_index));
|
| @@ -790,9 +788,8 @@ void RegisterAllocator::MeetRegisterConstraintsForLastInstructionInBlock(
|
| }
|
|
|
| if (!assigned) {
|
| - BasicBlock::Successors successors = block->successors();
|
| - for (BasicBlock::Successors::iterator succ = successors.begin();
|
| - succ != successors.end(); ++succ) {
|
| + for (BasicBlock::Successors::iterator succ = block->successors_begin();
|
| + succ != block->successors_end(); ++succ) {
|
| DCHECK((*succ)->PredecessorCount() == 1);
|
| int gap_index = (*succ)->first_instruction_index() + 1;
|
| range->SetSpillStartIndex(gap_index);
|
| @@ -1071,7 +1068,7 @@ void RegisterAllocator::ResolvePhis(BasicBlock* block) {
|
| new (code_zone()) UnallocatedOperand(UnallocatedOperand::NONE);
|
| phi_operand->set_virtual_register(phi->id());
|
|
|
| - int j = 0;
|
| + size_t j = 0;
|
| Node::Inputs inputs = phi->inputs();
|
| for (Node::Inputs::iterator iter(inputs.begin()); iter != inputs.end();
|
| ++iter, ++j) {
|
| @@ -1253,7 +1250,7 @@ void RegisterAllocator::ConnectRanges() {
|
|
|
| bool RegisterAllocator::CanEagerlyResolveControlFlow(BasicBlock* block) const {
|
| if (block->PredecessorCount() != 1) return false;
|
| - return block->PredecessorAt(0)->rpo_number_ == block->rpo_number_ - 1;
|
| + return block->PredecessorAt(0)->rpo_number() == block->rpo_number() - 1;
|
| }
|
|
|
|
|
| @@ -1262,13 +1259,12 @@ void RegisterAllocator::ResolveControlFlow() {
|
| for (int block_id = 1; block_id < code()->BasicBlockCount(); ++block_id) {
|
| BasicBlock* block = code()->BlockAt(block_id);
|
| if (CanEagerlyResolveControlFlow(block)) continue;
|
| - BitVector* live = live_in_sets_[block->rpo_number_];
|
| + BitVector* live = live_in_sets_[block->rpo_number()];
|
| BitVector::Iterator iterator(live);
|
| while (!iterator.Done()) {
|
| int operand_index = iterator.Current();
|
| - BasicBlock::Predecessors predecessors = block->predecessors();
|
| - for (BasicBlock::Predecessors::iterator i = predecessors.begin();
|
| - i != predecessors.end(); ++i) {
|
| + for (BasicBlock::Predecessors::iterator i = block->predecessors_begin();
|
| + i != block->predecessors_end(); ++i) {
|
| BasicBlock* cur = *i;
|
| LiveRange* cur_range = LiveRangeFor(operand_index);
|
| ResolveControlFlow(cur_range, block, cur);
|
| @@ -1338,7 +1334,7 @@ void RegisterAllocator::BuildLiveRanges() {
|
| LifetimePosition start = LifetimePosition::FromInstructionIndex(
|
| block->first_instruction_index());
|
| int end_index =
|
| - code()->BlockAt(block->loop_end_)->last_instruction_index();
|
| + code()->BlockAt(block->loop_end())->last_instruction_index();
|
| LifetimePosition end =
|
| LifetimePosition::FromInstructionIndex(end_index).NextInstruction();
|
| while (!iterator.Done()) {
|
| @@ -1349,7 +1345,7 @@ void RegisterAllocator::BuildLiveRanges() {
|
| }
|
|
|
| // Insert all values into the live in sets of all blocks in the loop.
|
| - for (int i = block->rpo_number_ + 1; i < block->loop_end_; ++i) {
|
| + for (int i = block->rpo_number() + 1; i < block->loop_end(); ++i) {
|
| live_in_sets_[i]->Union(*live);
|
| }
|
| }
|
| @@ -2098,8 +2094,8 @@ LifetimePosition RegisterAllocator::FindOptimalSplitPos(LifetimePosition start,
|
| // Find header of outermost loop.
|
| // TODO(titzer): fix redundancy below.
|
| while (code()->GetContainingLoop(block) != NULL &&
|
| - code()->GetContainingLoop(block)->rpo_number_ >
|
| - start_block->rpo_number_) {
|
| + code()->GetContainingLoop(block)->rpo_number() >
|
| + start_block->rpo_number()) {
|
| block = code()->GetContainingLoop(block);
|
| }
|
|
|
|
|