From: hpayer@chromium.org Date: Wed, 24 Jul 2013 09:19:55 +0000 (+0000) Subject: Added check to debug object migration crashes. X-Git-Tag: upstream/4.7.83~13232 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6126a0a48eca38b2f2b144cd6dce94ab4409c17;p=platform%2Fupstream%2Fv8.git Added check to debug object migration crashes. BUG= R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/20055002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/mark-compact.cc b/src/mark-compact.cc index e73127f..bfeeae9 100644 --- a/src/mark-compact.cc +++ b/src/mark-compact.cc @@ -2724,7 +2724,21 @@ void MarkCompactCollector::MigrateObject(Address dst, HEAP_PROFILE(heap(), ObjectMoveEvent(src, dst)); // TODO(hpayer): Replace that check with an assert. CHECK(dest != LO_SPACE && size <= Page::kMaxNonCodeHeapObjectSize); + // Objects in old pointer space and old data space can just be moved by + // compaction to a different page in the same space. + // TODO(hpayer): Replace that following checks with asserts. + CHECK(!heap_->old_pointer_space()->Contains(src) || + (heap_->old_pointer_space()->Contains(dst) && + heap_->TargetSpace(HeapObject::FromAddress(src)) == + heap_->old_pointer_space())); + CHECK(!heap_->old_data_space()->Contains(src) || + (heap_->old_data_space()->Contains(dst) && + heap_->TargetSpace(HeapObject::FromAddress(src)) == + heap_->old_data_space())); if (dest == OLD_POINTER_SPACE) { + // TODO(hpayer): Replace this check with an assert. + CHECK(heap_->TargetSpace(HeapObject::FromAddress(src)) == + heap_->old_pointer_space()); Address src_slot = src; Address dst_slot = dst; ASSERT(IsAligned(size, kPointerSize));