Reviewers: Hannes Payer,

Description:
Only refill free lists for spaces that are being swept

BUG=v8:3104
[email protected]
LOG=n

Please review this at https://codereview.chromium.org/143953005/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+12, -3 lines):
  M src/mark-compact.cc


Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index f62435ea9334c196fc2231bb6e6893e7d0320aa1..9670925045205c89ecfd49cd19714d6a1fd4d07c 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -591,9 +591,18 @@ void MarkCompactCollector::WaitUntilSweepingCompleted() {


 intptr_t MarkCompactCollector::RefillFreeLists(PagedSpace* space) {
-  FreeList* free_list = space == heap()->old_pointer_space()
-                            ? free_list_old_pointer_space_.get()
-                            : free_list_old_data_space_.get();
+  FreeList* free_list;
+
+  if (space == heap()->old_pointer_space()) {
+    free_list = free_list_old_pointer_space_.get();
+  } else if (space == heap()->old_data_space()) {
+    free_list = free_list_old_data_space_.get();
+  } else {
+    // Any PagedSpace might invoke RefillFreeLists, so we need to make sure
+    // to only refill them for old data and pointer spaces.
+    return 0;
+  }
+
   intptr_t freed_bytes = space->free_list()->Concatenate(free_list);
   space->AddToAccountingStats(freed_bytes);
   space->DecrementUnsweptFreeBytes(freed_bytes);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to