| Index: src/heap.cc
|
| ===================================================================
|
| --- src/heap.cc (revision 11059)
|
| +++ src/heap.cc (working copy)
|
| @@ -104,6 +104,7 @@
|
| gc_post_processing_depth_(0),
|
| ms_count_(0),
|
| gc_count_(0),
|
| + remembered_unmapped_pages_index_(0),
|
| unflattened_strings_length_(0),
|
| #ifdef DEBUG
|
| allocation_allowed_(true),
|
| @@ -6971,4 +6972,19 @@
|
| chunks_queued_for_free_ = NULL;
|
| }
|
|
|
| +
|
| +void Heap::RememberUnmappedPage(Address page, bool compacted) {
|
| + uintptr_t p = reinterpret_cast<uintptr_t>(page);
|
| + // Tag the page pointer to make it findable in the dump file.
|
| + if (compacted) {
|
| + p ^= 0xc1ead & (Page::kPageSize - 1); // Cleared.
|
| + } else {
|
| + p ^= 0x1d1ed & (Page::kPageSize - 1); // I died.
|
| + }
|
| + remembered_unmapped_pages_[remembered_unmapped_pages_index_] =
|
| + reinterpret_cast<Address>(p);
|
| + remembered_unmapped_pages_index_++;
|
| + remembered_unmapped_pages_index_ %= kRememberedUnmappedPages;
|
| +}
|
| +
|
| } } // namespace v8::internal
|
|
|