Reviewers: Erik Corry,
Description:
Reset allocation info when we are releasing the page that contains
allocation
top.
[email protected]
BUG=103587
Please review this at http://codereview.chromium.org/8575006/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/spaces.cc
Index: src/spaces.cc
diff --git a/src/spaces.cc b/src/spaces.cc
index
54347c451af3f907f2f237b5cbb182388df89beb..79a66fa2476408f9353a329ae60975aeb2723358
100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -768,6 +768,10 @@ void PagedSpace::ReleasePage(Page* page) {
ASSERT_EQ(Page::kObjectAreaSize, static_cast<int>(size));
}
+ if (Page::FromAllocationTop(allocation_info_.top) == page) {
+ allocation_info_.top = allocation_info_.limit = NULL;
+ }
+
page->Unlink();
if (page->IsFlagSet(MemoryChunk::CONTAINS_ONLY_DATA)) {
heap()->isolate()->memory_allocator()->Free(page);
@@ -2118,7 +2122,7 @@ bool PagedSpace::AdvanceSweeper(intptr_t
bytes_to_sweep) {
void PagedSpace::EvictEvacuationCandidatesFromFreeLists() {
if (allocation_info_.top >= allocation_info_.limit) return;
- if (Page::FromAddress(allocation_info_.top)->IsEvacuationCandidate()) {
+ if
(Page::FromAllocationTop(allocation_info_.top)->IsEvacuationCandidate()) {
// Create filler object to keep page iterable if it was iterable.
int remaining =
static_cast<int>(allocation_info_.limit - allocation_info_.top);
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev