Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Unified Diff: src/mark-compact.cc

Issue 151783002: Ensure the word after top is cleared in newspace if top < high. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap-inl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 81de035b0af7a6ae67de51f738b30ecbdbcb2da5..fc9f16627e423910358d2cbdec0707f3fd44fe9f 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -3007,6 +3007,20 @@ void MarkCompactCollector::EvacuateNewSpace() {
new_space->Flip();
new_space->ResetAllocationInfo();
+ // UpdateAllocationSiteFeedback expects that only objects at the end of
+ // newspace are not guaranteed to have the next word clear. It relies on
+ // FromSpacePageHigh to check whether an object is at the end of newspace.
+ // However, it is possible that newspace is being evacuated without it being
+ // full, e.g. to make the heap iterable, hence top will not equal high. In
+ // that case, fill up newspace with a filler to ensure the next word is
+ // cleared.
+ if (FLAG_allocation_site_pretenuring &&
+ from_top < new_space->FromSpacePageHigh()) {
+ Address limit = NewSpacePage::FromLimit(from_top)->area_end();
+ int remaining_in_page = static_cast<int>(limit - from_top);
+ heap()->CreateFillerObjectAt(from_top, remaining_in_page);
+ }
+
int survivors_size = 0;
// First pass: traverse all objects in inactive semispace, remove marks,
« no previous file with comments | « src/heap-inl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698