| Index: src/heap/mark-compact.cc
|
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
|
| index 7757b2cef5adbf10559a02f29b297fd80559bde0..7c4f9044a2f70e8cc953b25b31be8b7cafac8ce1 100644
|
| --- a/src/heap/mark-compact.cc
|
| +++ b/src/heap/mark-compact.cc
|
| @@ -3176,9 +3176,9 @@ void MarkCompactCollector::EvacuateNewSpace() {
|
| }
|
|
|
|
|
| -void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) {
|
| +void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p,
|
| + PagedSpace* to_space) {
|
| AlwaysAllocateScope always_allocate(isolate());
|
| - PagedSpace* space = static_cast<PagedSpace*>(p->owner());
|
| DCHECK(p->IsEvacuationCandidate() && !p->WasSwept());
|
| p->SetWasSwept();
|
|
|
| @@ -3199,12 +3199,12 @@ void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) {
|
| int size = object->Size();
|
| AllocationAlignment alignment = object->RequiredAlignment();
|
| HeapObject* target_object = nullptr;
|
| - AllocationResult allocation = space->AllocateRaw(size, alignment);
|
| + AllocationResult allocation = to_space->AllocateRaw(size, alignment);
|
| if (!allocation.To(&target_object)) {
|
| // If allocation failed, use emergency memory and re-try allocation.
|
| - CHECK(space->HasEmergencyMemory());
|
| - space->UseEmergencyMemory();
|
| - allocation = space->AllocateRaw(size, alignment);
|
| + CHECK(to_space->HasEmergencyMemory());
|
| + to_space->UseEmergencyMemory();
|
| + allocation = to_space->AllocateRaw(size, alignment);
|
| }
|
| if (!allocation.To(&target_object)) {
|
| // OS refused to give us memory.
|
| @@ -3212,7 +3212,7 @@ void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) {
|
| return;
|
| }
|
|
|
| - MigrateObject(target_object, object, size, space->identity());
|
| + MigrateObject(target_object, object, size, to_space->identity());
|
| DCHECK(object->map_word().IsForwardingAddress());
|
| }
|
|
|
| @@ -3256,7 +3256,7 @@ void MarkCompactCollector::EvacuatePages() {
|
| // up a page. Check that we actually got an emergency page above so we
|
| // can guarantee that this succeeds.
|
| if (space->HasEmergencyMemory()) {
|
| - EvacuateLiveObjectsFromPage(p);
|
| + EvacuateLiveObjectsFromPage(p, static_cast<PagedSpace*>(p->owner()));
|
| // Unlink the page from the list of pages here. We must not iterate
|
| // over that page later (e.g. when scan on scavenge pages are
|
| // processed). The page itself will be freed later and is still
|
|
|