From 3c523437389b8c956edf7fb4745901640b437f52 Mon Sep 17 00:00:00 2001 From: "danno@chromium.org" Date: Thu, 24 Jan 2013 15:05:38 +0000 Subject: [PATCH] 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 --- src/lithium-allocator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lithium-allocator.cc b/src/lithium-allocator.cc index 99dd874d20..9c1a646213 100644 --- a/src/lithium-allocator.cc +++ b/src/lithium-allocator.cc @@ -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;