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; |