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_; |