Chromium Code Reviews| Index: src/mark-compact.cc |
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc |
| index 8263b5d9d77b01e2769f36fc1e85d8ca8db7e902..8eee7c7bf37fb77bb1db97e7ef9499a6147ba087 100644 |
| --- a/src/mark-compact.cc |
| +++ b/src/mark-compact.cc |
| @@ -18,6 +18,7 @@ |
| #include "objects-visiting.h" |
| #include "objects-visiting-inl.h" |
| #include "stub-cache.h" |
| +#include "spaces-inl.h" |
|
Hannes Payer (out of office)
2014/04/30 07:07:07
order:
#include "spaces-inl.h"
#include "stub-cach
|
| #include "sweeper-thread.h" |
| namespace v8 { |
| @@ -2043,8 +2044,8 @@ int MarkCompactCollector::DiscoverAndPromoteBlackObjectsOnPage( |
| } |
| // Promotion failed. Just migrate object to another semispace. |
| - MaybeObject* allocation = new_space->AllocateRaw(size); |
| - if (allocation->IsFailure()) { |
| + AllocationResult allocation = new_space->AllocateRaw(size); |
| + if (allocation.IsRetry()) { |
| if (!new_space->AddFreshPage()) { |
| // Shouldn't happen. We are sweeping linearly, and to-space |
| // has the same number of pages as from-space, so there is |
| @@ -2052,9 +2053,9 @@ int MarkCompactCollector::DiscoverAndPromoteBlackObjectsOnPage( |
| UNREACHABLE(); |
| } |
| allocation = new_space->AllocateRaw(size); |
| - ASSERT(!allocation->IsFailure()); |
| + ASSERT(!allocation.IsRetry()); |
| } |
| - Object* target = allocation->ToObjectUnchecked(); |
| + Object* target = allocation.ToObjectChecked(); |
| MigrateObject(HeapObject::cast(target), |
| object, |
| @@ -3058,10 +3059,9 @@ bool MarkCompactCollector::TryPromoteObject(HeapObject* object, |
| ASSERT(target_space == heap()->old_pointer_space() || |
| target_space == heap()->old_data_space()); |
| - Object* result; |
| - MaybeObject* maybe_result = target_space->AllocateRaw(object_size); |
| - if (maybe_result->ToObject(&result)) { |
| - HeapObject* target = HeapObject::cast(result); |
| + HeapObject* target; |
| + AllocationResult allocation = target_space->AllocateRaw(object_size); |
| + if (allocation.To(&target)) { |
| MigrateObject(target, |
| object, |
| object_size, |
| @@ -3132,19 +3132,15 @@ void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) { |
| int size = object->Size(); |
| - MaybeObject* target = space->AllocateRaw(size); |
| - if (target->IsFailure()) { |
| + HeapObject* target_object; |
| + AllocationResult allocation = space->AllocateRaw(size); |
| + if (!allocation.To(&target_object)) { |
| // OS refused to give us memory. |
| V8::FatalProcessOutOfMemory("Evacuation"); |
| return; |
| } |
| - Object* target_object = target->ToObjectUnchecked(); |
| - |
| - MigrateObject(HeapObject::cast(target_object), |
| - object, |
| - size, |
| - space->identity()); |
| + MigrateObject(target_object, object, size, space->identity()); |
| ASSERT(object->map_word().IsForwardingAddress()); |
| } |