| Index: src/compiler/greedy-allocator.cc
|
| diff --git a/src/compiler/greedy-allocator.cc b/src/compiler/greedy-allocator.cc
|
| index 5fdacb5e8236992e377c700f9ec9d5176fb8a7df..44f2d4f8160a4893cc3964e21fc0ecb6dd7629e5 100644
|
| --- a/src/compiler/greedy-allocator.cc
|
| +++ b/src/compiler/greedy-allocator.cc
|
| @@ -256,7 +256,7 @@
|
| for (size_t i = 0; i < initial_range_count; ++i) {
|
| auto range = data()->live_ranges()[i];
|
| if (!CanProcessRange(range)) continue;
|
| - if (!range->HasSpillOperand()) continue;
|
| + if (range->HasNoSpillType()) continue;
|
|
|
| LifetimePosition start = range->Start();
|
| TRACE("Live range %d:%d is defined by a spill operand.\n",
|
| @@ -273,11 +273,12 @@
|
| } else if (pos->pos() > range->Start().NextStart()) {
|
| // Do not spill live range eagerly if use position that can benefit from
|
| // the register is too close to the start of live range.
|
| - auto split_pos = GetSplitPositionForInstruction(
|
| - range, data()->code(), pos->pos().ToInstructionIndex());
|
| - split_pos =
|
| - FindOptimalSplitPos(range->Start().NextFullStart(), split_pos);
|
| -
|
| + auto split_pos = pos->pos();
|
| + if (data()->IsBlockBoundary(split_pos.Start())) {
|
| + split_pos = split_pos.Start();
|
| + } else {
|
| + split_pos = split_pos.PrevStart().End();
|
| + }
|
| Split(range, data(), split_pos);
|
| Spill(range);
|
| }
|
|
|