Index: src/lithium-allocator.cc |
=================================================================== |
--- src/lithium-allocator.cc (revision 7662) |
+++ src/lithium-allocator.cc (working copy) |
@@ -1047,9 +1047,10 @@ |
} |
} |
+ // Insert spill-move in the first section of the first gap. |
LiveRange* live_range = LiveRangeFor(phi->id()); |
- LLabel* label = chunk_->GetLabel(phi->block()->block_id()); |
- label->GetOrCreateParallelMove(LGap::START)-> |
+ LGap* gap = chunk_->GetFirstGap(phi->block()); |
+ gap->GetOrCreateParallelMove(LGap::BEFORE)-> |
AddMove(phi_operand, live_range->GetSpillOperand()); |
live_range->SetSpillStartIndex(phi->block()->first_instruction_index()); |
} |
@@ -1124,7 +1125,8 @@ |
if (!pred_op->Equals(cur_op)) { |
LGap* gap = NULL; |
Vyacheslav Egorov (Chromium)
2011/04/19 15:01:08
you can duplicate&move this variable into branches
fschneider
2011/04/19 16:01:05
Done.
|
if (block->predecessors()->length() == 1) { |
- gap = GapAt(block->first_instruction_index()); |
+ gap = GapAt(block->first_instruction_index() + 1); |
Vyacheslav Egorov (Chromium)
2011/04/19 15:01:08
GetFirstGap()?
fschneider
2011/04/19 16:01:05
Done.
|
+ gap->GetOrCreateParallelMove(LGap::BEFORE)->AddMove(pred_op, cur_op); |
} else { |
ASSERT(pred->end()->SecondSuccessor() == NULL); |
gap = GetLastGap(pred); |
@@ -1143,8 +1145,8 @@ |
branch->pointer_map()->RecordPointer(cur_op); |
} |
} |
+ gap->GetOrCreateParallelMove(LGap::START)->AddMove(pred_op, cur_op); |
} |
- gap->GetOrCreateParallelMove(LGap::START)->AddMove(pred_op, cur_op); |
} |
} |
} |