Fix bug in edge case in populating PointerMaps
If a live range was split immediately before an instruction that required a safe-point pointer map, it was possible for the safe-point to incorrectly use the register/stack slot information of the preceeding live range rather than the one that actually covers the safe-point. R=mstarzinger@chromium.org,vegorov@chromium.org Review URL: https://chromiumcodereview.appspot.com/12040052 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
dd92c41aa1
commit
3c52343738
@ -1418,7 +1418,7 @@ void LAllocator::PopulatePointerMaps() {
|
||||
LifetimePosition safe_point_pos =
|
||||
LifetimePosition::FromInstructionIndex(safe_point);
|
||||
LiveRange* cur = range;
|
||||
while (cur != NULL && !cur->Covers(safe_point_pos.PrevInstruction())) {
|
||||
while (cur != NULL && !cur->Covers(safe_point_pos)) {
|
||||
cur = cur->next();
|
||||
}
|
||||
if (cur == NULL) continue;
|
||||
|
Loading…
Reference in New Issue
Block a user