Reviewers: Vyacheslav Egorov,

Description:
Fix bug in semispace shrink-to.


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

SVN Base: https://v8.googlecode.com/svn/branches/experimental/gc

Affected files:
  M src/spaces.cc


Index: src/spaces.cc
diff --git a/src/spaces.cc b/src/spaces.cc
index 1d980cc05d2bd9077d531fabbe1b32420e3ed3ad..ae7542da98f83234b8e994da420e993661fb015d 100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -1222,18 +1222,18 @@ bool SemiSpace::ShrinkTo(int new_capacity) {
   ASSERT((new_capacity & Page::kPageAlignmentMask) == 0);
   ASSERT(new_capacity >= initial_capacity_);
   ASSERT(new_capacity < capacity_);
-  Address end = start_ + maximum_capacity_;
-  Address start = end - new_capacity;
+  Address space_end = start_ + maximum_capacity_;
+  Address old_start = space_end - capacity_;
   size_t delta = capacity_ - new_capacity;
   ASSERT(IsAligned(delta, OS::AllocateAlignment()));
- if (!heap()->isolate()->memory_allocator()->UncommitBlock(start, delta)) { + if (!heap()->isolate()->memory_allocator()->UncommitBlock(old_start, delta)) {
     return false;
   }
   capacity_ = new_capacity;

   int pages_after = capacity_ / Page::kPageSize;
   NewSpacePage* new_last_page =
-      NewSpacePage::FromAddress(end - pages_after * Page::kPageSize);
+      NewSpacePage::FromAddress(space_end - pages_after * Page::kPageSize);
   new_last_page->set_next_page(anchor());
   anchor()->set_prev_page(new_last_page);
   ASSERT(current_page_ == first_page());


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

Reply via email to