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