Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Unified Diff: src/mark-compact.cc

Issue 1691009: - Fix x64 build.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/spaces.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/mark-compact.cc
===================================================================
--- src/mark-compact.cc (revision 4476)
+++ src/mark-compact.cc (working copy)
@@ -1282,10 +1282,16 @@
// During sweeping of paged space we are trying to find longest sequences
// of pages without live objects and free them (instead of putting them on
// the free list).
- Page* prev = NULL; // Page preceding current.
- Page* first_empty_page = NULL; // First empty page in a sequence.
- Page* prec_first_empty_page = NULL; // Page preceding first empty page.
+ // Page preceding current.
+ Page* prev = Page::FromAddress(NULL);
+
+ // First empty page in a sequence.
+ Page* first_empty_page = Page::FromAddress(NULL);
+
+ // Page preceding first empty page.
+ Page* prec_first_empty_page = Page::FromAddress(NULL);
+
// If last used page of space ends with a sequence of dead objects
// we can adjust allocation top instead of puting this free area into
// the free list. Thus during sweeping we keep track of such areas
@@ -1331,7 +1337,7 @@
if (page_is_empty) {
// This page is empty. Check whether we are in the middle of
// sequence of empty pages and start one if not.
- if (first_empty_page == NULL) {
+ if (!first_empty_page->is_valid()) {
first_empty_page = p;
prec_first_empty_page = prev;
}
@@ -1347,9 +1353,9 @@
} else {
// This page is not empty. Sequence of empty pages ended on the previous
// one.
- if (first_empty_page != NULL) {
+ if (first_empty_page->is_valid()) {
space->FreePages(prec_first_empty_page, prev);
- prec_first_empty_page = first_empty_page = NULL;
+ prec_first_empty_page = first_empty_page = Page::FromAddress(NULL);
}
// If there is a free ending area on one of the previous pages we have
@@ -1374,7 +1380,7 @@
// We reached end of space. See if we need to adjust allocation top.
Address new_allocation_top = NULL;
- if (first_empty_page != NULL) {
+ if (first_empty_page->is_valid()) {
// Last used pages in space are empty. We can move allocation top backwards
// to the beginning of first empty page.
ASSERT(prev == space->AllocationTopPage());
@@ -1393,12 +1399,13 @@
if (new_allocation_top != NULL) {
#ifdef DEBUG
Page* new_allocation_top_page = Page::FromAllocationTop(new_allocation_top);
- ASSERT(((first_empty_page == NULL) &&
- (new_allocation_top_page == space->AllocationTopPage())) ||
- ((first_empty_page != NULL) && (last_free_size > 0) &&
- (new_allocation_top_page == prec_first_empty_page)) ||
- ((first_empty_page != NULL) && (last_free_size == 0) &&
- (new_allocation_top_page == first_empty_page)));
+ if (!first_empty_page->is_valid()) {
+ ASSERT(new_allocation_top_page == space->AllocationTopPage());
+ } else if (last_free_size > 0) {
+ ASSERT(new_allocation_top_page == prec_first_empty_page);
+ } else {
+ ASSERT(new_allocation_top_page == first_empty_page);
+ }
#endif
space->SetTop(new_allocation_top);
« no previous file with comments | « no previous file | src/spaces.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698