Reviewers: fschneider,

Description:
Fix control flow resolution bug in lithium register allocator.

Please review this at http://codereview.chromium.org/6312057/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/lithium-allocator.cc


Index: src/lithium-allocator.cc
diff --git a/src/lithium-allocator.cc b/src/lithium-allocator.cc
index cac7d65e98f0dc4c91fd387236a647e954e95f40..43687dd2bf733db53d4e512fbef9cce367622a30 100644
--- a/src/lithium-allocator.cc
+++ b/src/lithium-allocator.cc
@@ -1068,9 +1068,7 @@ void LAllocator::ResolveControlFlow(LiveRange* range,
                                     HBasicBlock* block,
                                     HBasicBlock* pred) {
   LifetimePosition pred_end =
- LifetimePosition::FromInstructionIndex(pred->last_instruction_index()).
-      PrevInstruction();
-
+ LifetimePosition::FromInstructionIndex(pred->last_instruction_index());
   LifetimePosition cur_start =
LifetimePosition::FromInstructionIndex(block->first_instruction_index());
   LiveRange* pred_cover = NULL;
@@ -1245,7 +1243,7 @@ void LAllocator::BuildLiveRanges() {
       LifetimePosition start = LifetimePosition::FromInstructionIndex(
           block->first_instruction_index());
       LifetimePosition end = LifetimePosition::FromInstructionIndex(
-          back_edge->last_instruction_index());
+          back_edge->last_instruction_index()).NextInstruction();
       while (!iterator.Done()) {
         int operand_index = iterator.Current();
         LiveRange* range = LiveRangeFor(operand_index);


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to