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