| Index: src/heap/remembered-set.h
|
| diff --git a/src/heap/remembered-set.h b/src/heap/remembered-set.h
|
| index 74791b926bb7772a4646dcec507abbe561c7f85b..978f1c421670d1654f27fac21b45a07acfce5986 100644
|
| --- a/src/heap/remembered-set.h
|
| +++ b/src/heap/remembered-set.h
|
| @@ -45,7 +45,8 @@ class RememberedSet {
|
|
|
| // Given a page and a range of slots in that page, this function removes the
|
| // slots from the remembered set.
|
| - static void RemoveRange(MemoryChunk* chunk, Address start, Address end) {
|
| + static void RemoveRange(MemoryChunk* chunk, Address start, Address end,
|
| + SlotSet::EmptyBucketMode mode) {
|
| SlotSet* slot_set = GetSlotSet(chunk);
|
| if (slot_set != nullptr) {
|
| uintptr_t start_offset = start - chunk->address();
|
| @@ -53,7 +54,7 @@ class RememberedSet {
|
| DCHECK_LT(start_offset, end_offset);
|
| if (end_offset < static_cast<uintptr_t>(Page::kPageSize)) {
|
| slot_set->RemoveRange(static_cast<int>(start_offset),
|
| - static_cast<int>(end_offset));
|
| + static_cast<int>(end_offset), mode);
|
| } else {
|
| // The large page has multiple slot sets.
|
| // Compute slot set indicies for the range [start_offset, end_offset).
|
| @@ -67,17 +68,17 @@ class RememberedSet {
|
| end_offset - static_cast<uintptr_t>(end_chunk) * Page::kPageSize);
|
| if (start_chunk == end_chunk) {
|
| slot_set[start_chunk].RemoveRange(offset_in_start_chunk,
|
| - offset_in_end_chunk);
|
| + offset_in_end_chunk, mode);
|
| } else {
|
| // Clear all slots from start_offset to the end of first chunk.
|
| slot_set[start_chunk].RemoveRange(offset_in_start_chunk,
|
| - Page::kPageSize);
|
| + Page::kPageSize, mode);
|
| // Clear all slots in intermediate chunks.
|
| for (int i = start_chunk + 1; i < end_chunk; i++) {
|
| - slot_set[i].RemoveRange(0, Page::kPageSize);
|
| + slot_set[i].RemoveRange(0, Page::kPageSize, mode);
|
| }
|
| // Clear slots from the beginning of the last page to end_offset.
|
| - slot_set[end_chunk].RemoveRange(0, offset_in_end_chunk);
|
| + slot_set[end_chunk].RemoveRange(0, offset_in_end_chunk, mode);
|
| }
|
| }
|
| }
|
|
|