| Index: src/heap/mark-compact.h
|
| diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h
|
| index de21aa1d901780a64f87ec1344de39d6c8653148..3c3607e177bae8bc3bcab1fcb2f1632432ff45bd 100644
|
| --- a/src/heap/mark-compact.h
|
| +++ b/src/heap/mark-compact.h
|
| @@ -116,10 +116,6 @@ class Marking {
|
| markbit.Next().Set();
|
| }
|
|
|
| - static void SetAllMarkBitsInRange(MarkBit start, MarkBit end);
|
| - static void ClearAllMarkBitsOfCellsContainedInRange(MarkBit start,
|
| - MarkBit end);
|
| -
|
| void TransferMark(Address old_start, Address new_start);
|
|
|
| #ifdef DEBUG
|
| @@ -325,6 +321,12 @@ class SlotsBuffer {
|
| slots_[idx_++] = slot;
|
| }
|
|
|
| + // Should be used for testing only.
|
| + ObjectSlot Get(intptr_t i) {
|
| + DCHECK(i >= 0 && i < kNumberOfElements);
|
| + return slots_[i];
|
| + }
|
| +
|
| enum SlotType {
|
| EMBEDDED_OBJECT_SLOT,
|
| OBJECT_SLOT,
|
| @@ -363,8 +365,6 @@ class SlotsBuffer {
|
|
|
| void UpdateSlots(Heap* heap);
|
|
|
| - void UpdateSlotsWithFilter(Heap* heap);
|
| -
|
| SlotsBuffer* next() { return next_; }
|
|
|
| static int SizeOfChain(SlotsBuffer* buffer) {
|
| @@ -377,14 +377,9 @@ class SlotsBuffer {
|
|
|
| inline bool HasSpaceForTypedSlot() { return idx_ < kNumberOfElements - 1; }
|
|
|
| - static void UpdateSlotsRecordedIn(Heap* heap, SlotsBuffer* buffer,
|
| - bool code_slots_filtering_required) {
|
| + static void UpdateSlotsRecordedIn(Heap* heap, SlotsBuffer* buffer) {
|
| while (buffer != NULL) {
|
| - if (code_slots_filtering_required) {
|
| - buffer->UpdateSlotsWithFilter(heap);
|
| - } else {
|
| - buffer->UpdateSlots(heap);
|
| - }
|
| + buffer->UpdateSlots(heap);
|
| buffer = buffer->next();
|
| }
|
| }
|
| @@ -423,6 +418,10 @@ class SlotsBuffer {
|
| // before sweeping when mark bits are still intact.
|
| static void RemoveInvalidSlots(Heap* heap, SlotsBuffer* buffer);
|
|
|
| + // Eliminate all slots that point to the given invalid_object.
|
| + static void RemoveObjectSlots(Heap* heap, SlotsBuffer* buffer,
|
| + HeapObject* invalid_object);
|
| +
|
| // Ensures that there are no invalid slots in the chain of slots buffers.
|
| static void VerifySlots(Heap* heap, SlotsBuffer* buffer);
|
|
|
| @@ -670,8 +669,6 @@ class MarkCompactCollector {
|
|
|
| bool TryPromoteObject(HeapObject* object, int object_size);
|
|
|
| - void InvalidateCode(Code* code);
|
| -
|
| void ClearMarkbits();
|
|
|
| bool abort_incremental_marking() const { return abort_incremental_marking_; }
|
| @@ -744,16 +741,17 @@ class MarkCompactCollector {
|
| bool IsSlotInLiveObject(Address slot);
|
| void VerifyIsSlotInLiveObject(Address slot, HeapObject* object);
|
|
|
| + // Removes all the slots in the slot buffers that are within the given
|
| + // invalid_object.
|
| + void RemoveObjectSlots(HeapObject* invalid_object);
|
| +
|
| private:
|
| class SweeperTask;
|
|
|
| explicit MarkCompactCollector(Heap* heap);
|
| ~MarkCompactCollector();
|
|
|
| - bool MarkInvalidatedCode();
|
| bool WillBeDeoptimized(Code* code);
|
| - void RemoveDeadInvalidatedCode();
|
| - void ProcessInvalidatedCode(ObjectVisitor* visitor);
|
| void EvictPopularEvacuationCandidate(Page* page);
|
| void ClearInvalidSlotsBufferEntries(PagedSpace* space);
|
| void ClearInvalidStoreAndSlotsBufferEntries();
|
| @@ -970,7 +968,6 @@ class MarkCompactCollector {
|
| bool have_code_to_deoptimize_;
|
|
|
| List<Page*> evacuation_candidates_;
|
| - List<Code*> invalidated_code_;
|
|
|
| SmartPointer<FreeList> free_list_old_space_;
|
|
|
|
|