| Index: src/compiler/register-allocator.cc
|
| diff --git a/src/compiler/register-allocator.cc b/src/compiler/register-allocator.cc
|
| index 7b2caff60ce993125c3c877c3e92b2bd6a5ddc29..eb7b6b90d32d7048d3bfd0034145eb183ccd6732 100644
|
| --- a/src/compiler/register-allocator.cc
|
| +++ b/src/compiler/register-allocator.cc
|
| @@ -2690,6 +2690,25 @@ bool GreedyAllocator::AllocateBlockedRange(
|
| }
|
|
|
|
|
| +SpillSlotLocator::SpillSlotLocator(RegisterAllocationData* data)
|
| + : data_(data) {}
|
| +
|
| +
|
| +void SpillSlotLocator::LocateSpillSlots() {
|
| + auto code = data()->code();
|
| + for (auto range : data()->live_ranges()) {
|
| + if (range == nullptr || range->IsEmpty() || range->IsChild()) continue;
|
| + // We care only about ranges which spill in the frame.
|
| + if (!range->HasSpillRange()) continue;
|
| + auto spills = range->spills_at_definition();
|
| + DCHECK_NOT_NULL(spills);
|
| + for (; spills != nullptr; spills = spills->next) {
|
| + code->GetInstructionBlock(spills->gap_index)->mark_needs_frame();
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| OperandAssigner::OperandAssigner(RegisterAllocationData* data) : data_(data) {}
|
|
|
|
|
|
|