| Index: src/heap/mark-compact.h
|
| diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h
|
| index ddb993f5a2f676491e732da2a1a39cae26c48b59..3ffeeed7b17aa2961ca9a48e7544b685aae8736f 100644
|
| --- a/src/heap/mark-compact.h
|
| +++ b/src/heap/mark-compact.h
|
| @@ -363,6 +363,15 @@ class SlotsBuffer {
|
| SlotsBuffer** buffer_address, SlotType type, Address addr,
|
| AdditionMode mode);
|
|
|
| + // Eliminates all stale entries from the slots buffer, i.e., slots that
|
| + // are not part of live objects anymore. This method must be called after
|
| + // marking, when the whole transitive closure is known and must be called
|
| + // before sweeping when mark bits are still intact.
|
| + static void RemoveInvalidSlots(Heap* heap, SlotsBuffer* buffer);
|
| +
|
| + // Ensures that there are no invalid slots in the chain of slots buffers.
|
| + static void VerifySlots(Heap* heap, SlotsBuffer* buffer);
|
| +
|
| static const int kNumberOfElements = 1021;
|
|
|
| private:
|
| @@ -679,10 +688,10 @@ class MarkCompactCollector {
|
| // The following four methods can just be called after marking, when the
|
| // whole transitive closure is known. They must be called before sweeping
|
| // when mark bits are still intact.
|
| - bool IsSlotInBlackObject(Page* p, Address slot);
|
| + bool IsSlotInBlackObject(Page* p, Address slot, HeapObject** out_object);
|
| bool IsSlotInBlackObjectSlow(Page* p, Address slot);
|
| - bool IsSlotInLiveObject(HeapObject** address, HeapObject* object);
|
| - void VerifyIsSlotInLiveObject(HeapObject** address, HeapObject* object);
|
| + bool IsSlotInLiveObject(Address slot);
|
| + void VerifyIsSlotInLiveObject(Address slot, HeapObject* object);
|
|
|
| private:
|
| class SweeperTask;
|
| @@ -694,6 +703,8 @@ class MarkCompactCollector {
|
| bool WillBeDeoptimized(Code* code);
|
| void RemoveDeadInvalidatedCode();
|
| void ProcessInvalidatedCode(ObjectVisitor* visitor);
|
| + void ClearInvalidSlotsBufferEntries(PagedSpace* space);
|
| + void ClearInvalidStoreAndSlotsBufferEntries();
|
|
|
| void StartSweeperThreads();
|
|
|
|
|