| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index 815cae5b5e397a6b874e23996db9db804cfe2b37..e73127f75b99907f00091eb6f9ae2a1d798dfc67 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -2722,7 +2722,9 @@ void MarkCompactCollector::MigrateObject(Address dst,
|
| int size,
|
| AllocationSpace dest) {
|
| HEAP_PROFILE(heap(), ObjectMoveEvent(src, dst));
|
| - if (dest == OLD_POINTER_SPACE || dest == LO_SPACE) {
|
| + // TODO(hpayer): Replace that check with an assert.
|
| + CHECK(dest != LO_SPACE && size <= Page::kMaxNonCodeHeapObjectSize);
|
| + if (dest == OLD_POINTER_SPACE) {
|
| Address src_slot = src;
|
| Address dst_slot = dst;
|
| ASSERT(IsAligned(size, kPointerSize));
|
| @@ -2894,37 +2896,24 @@ static String* UpdateReferenceInExternalStringTableEntry(Heap* heap,
|
|
|
| bool MarkCompactCollector::TryPromoteObject(HeapObject* object,
|
| int object_size) {
|
| - Object* result;
|
| + // TODO(hpayer): Replace that check with an assert.
|
| + CHECK(object_size <= Page::kMaxNonCodeHeapObjectSize);
|
|
|
| - if (object_size > Page::kMaxNonCodeHeapObjectSize) {
|
| - MaybeObject* maybe_result =
|
| - heap()->lo_space()->AllocateRaw(object_size, NOT_EXECUTABLE);
|
| - if (maybe_result->ToObject(&result)) {
|
| - HeapObject* target = HeapObject::cast(result);
|
| - MigrateObject(target->address(),
|
| - object->address(),
|
| - object_size,
|
| - LO_SPACE);
|
| - heap()->mark_compact_collector()->tracer()->
|
| - increment_promoted_objects_size(object_size);
|
| - return true;
|
| - }
|
| - } else {
|
| - OldSpace* target_space = heap()->TargetSpace(object);
|
| -
|
| - ASSERT(target_space == heap()->old_pointer_space() ||
|
| - target_space == heap()->old_data_space());
|
| - MaybeObject* maybe_result = target_space->AllocateRaw(object_size);
|
| - if (maybe_result->ToObject(&result)) {
|
| - HeapObject* target = HeapObject::cast(result);
|
| - MigrateObject(target->address(),
|
| - object->address(),
|
| - object_size,
|
| - target_space->identity());
|
| - heap()->mark_compact_collector()->tracer()->
|
| - increment_promoted_objects_size(object_size);
|
| - return true;
|
| - }
|
| + OldSpace* target_space = heap()->TargetSpace(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);
|
| + MigrateObject(target->address(),
|
| + object->address(),
|
| + object_size,
|
| + target_space->identity());
|
| + heap()->mark_compact_collector()->tracer()->
|
| + increment_promoted_objects_size(object_size);
|
| + return true;
|
| }
|
|
|
| return false;
|
|
|