Revision: 10095
Author:   [email protected]
Date:     Wed Nov 30 06:14:49 2011
Log:      Fix a bug in the register allocator.

Avoid spilling a live range that has a register use at the next instruction.
The register use position has to be after the end of the next instruction so
that we don't end up trying to split a live range at the beginning.

BUG=105112
Review URL: http://codereview.chromium.org/8743011
http://code.google.com/p/v8/source/detail?r=10095

Modified:
 /branches/bleeding_edge/src/lithium-allocator.cc

=======================================
--- /branches/bleeding_edge/src/lithium-allocator.cc Thu Nov 10 07:37:24 2011 +++ /branches/bleeding_edge/src/lithium-allocator.cc Wed Nov 30 06:14:49 2011
@@ -234,7 +234,8 @@
   // at the current or the immediate next position.
   UsePosition* use_pos = NextRegisterPosition(pos);
   if (use_pos == NULL) return true;
-  return use_pos->pos().Value() > pos.NextInstruction().Value();
+  return
+ use_pos->pos().Value() > pos.NextInstruction().InstructionEnd().Value();
 }


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

Reply via email to