Index: src/heap/mark-compact.h |
diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h |
index cc5449f97765e7d1a6c2993b963ff569edc2df89..20ac9f6c935873f164e2e062716757215ed68b41 100644 |
--- a/src/heap/mark-compact.h |
+++ b/src/heap/mark-compact.h |
@@ -25,9 +25,7 @@ class CodeFlusher; |
class MarkCompactCollector; |
class MarkingVisitor; |
class RootMarkingVisitor; |
-class SlotsBuffer; |
-class SlotsBufferAllocator; |
- |
+class LocalSlotsBuffer; |
class Marking : public AllStatic { |
public: |
@@ -395,8 +393,8 @@ class MarkCompactCollector { |
->IsEvacuationCandidate(); |
} |
- void RecordRelocSlot(RelocInfo* rinfo, Object* target); |
- void RecordCodeEntrySlot(HeapObject* object, Address slot, Code* target); |
+ void RecordRelocSlot(Code* host, RelocInfo* rinfo, Object* target); |
+ void RecordCodeEntrySlot(HeapObject* host, Address slot, Code* target); |
void RecordCodeTargetPatch(Address pc, Code* target); |
INLINE(void RecordSlot(HeapObject* object, Object** slot, Object* target)); |
INLINE(void ForceRecordSlot(HeapObject* object, Object** slot, |
@@ -407,8 +405,8 @@ class MarkCompactCollector { |
void MigrateObject(HeapObject* dst, HeapObject* src, int size, |
AllocationSpace to_old_space, |
- SlotsBuffer** evacuation_slots_buffer, |
- LocalStoreBuffer* local_store_buffer); |
+ LocalSlotsBuffer* old_to_old_slots, |
+ LocalSlotsBuffer* old_to_new_slots); |
void InvalidateCode(Code* code); |
@@ -484,9 +482,8 @@ class MarkCompactCollector { |
// whole transitive closure is known. They must be called before sweeping |
// when mark bits are still intact. |
bool IsSlotInBlackObject(Page* p, Address slot, HeapObject** out_object); |
- bool IsSlotInBlackObjectSlow(Page* p, Address slot); |
+ HeapObject* FindBlackObjectBySlotSlow(Address slot); |
bool IsSlotInLiveObject(Address slot); |
- void VerifyIsSlotInLiveObject(Address slot, HeapObject* object); |
// Removes all the slots in the slot buffers that are within the given |
// address range. |
@@ -520,8 +517,7 @@ class MarkCompactCollector { |
explicit MarkCompactCollector(Heap* heap); |
bool WillBeDeoptimized(Code* code); |
- void EvictPopularEvacuationCandidate(Page* page); |
- void ClearInvalidStoreAndSlotsBufferEntries(); |
+ void ClearInvalidRememberedSetSlots(); |
void StartSweeperThreads(); |
@@ -550,10 +546,6 @@ class MarkCompactCollector { |
bool evacuation_; |
- SlotsBufferAllocator* slots_buffer_allocator_; |
- |
- SlotsBuffer* migration_slots_buffer_; |
- |
// Finishes GC, performs heap verification if enabled. |
void Finish(); |
@@ -707,9 +699,6 @@ class MarkCompactCollector { |
void EvacuateNewSpacePrologue(); |
void EvacuateNewSpaceEpilogue(); |
- void AddEvacuationSlotsBufferSynchronized( |
- SlotsBuffer* evacuation_slots_buffer); |
- |
void EvacuatePagesInParallel(); |
// The number of parallel compaction tasks, including the main thread. |
@@ -745,16 +734,8 @@ class MarkCompactCollector { |
// Updates store buffer and slot buffer for a pointer in a migrating object. |
void RecordMigratedSlot(Object* value, Address slot, |
- SlotsBuffer** evacuation_slots_buffer, |
- LocalStoreBuffer* local_store_buffer); |
- |
- // Adds the code entry slot to the slots buffer. |
- void RecordMigratedCodeEntrySlot(Address code_entry, Address code_entry_slot, |
- SlotsBuffer** evacuation_slots_buffer); |
- |
- // Adds the slot of a moved code object. |
- void RecordMigratedCodeObjectSlot(Address code_object, |
- SlotsBuffer** evacuation_slots_buffer); |
+ LocalSlotsBuffer* old_to_old_slots, |
+ LocalSlotsBuffer* old_to_new_slots); |
#ifdef DEBUG |
friend class MarkObjectVisitor; |
@@ -774,14 +755,6 @@ class MarkCompactCollector { |
List<Page*> evacuation_candidates_; |
List<NewSpacePage*> newspace_evacuation_candidates_; |
- // The evacuation_slots_buffers_ are used by the compaction threads. |
- // When a compaction task finishes, it uses |
- // AddEvacuationSlotsbufferSynchronized to adds its slots buffer to the |
- // evacuation_slots_buffers_ list using the evacuation_slots_buffers_mutex_ |
- // lock. |
- base::Mutex evacuation_slots_buffers_mutex_; |
- List<SlotsBuffer*> evacuation_slots_buffers_; |
- |
base::SmartPointer<FreeList> free_list_old_space_; |
base::SmartPointer<FreeList> free_list_code_space_; |
base::SmartPointer<FreeList> free_list_map_space_; |