Index: src/heap/mark-compact.h |
diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h |
index 63afd834ea1e31f184d3bd70e233c6e2736a8ea5..9bb51c21a50451d13c9ff24044831656db0ecdeb 100644 |
--- a/src/heap/mark-compact.h |
+++ b/src/heap/mark-compact.h |
@@ -80,7 +80,7 @@ class ObjectMarking : public AllStatic { |
(access_mode == MarkBit::ATOMIC || IsBlack<access_mode>(obj, state))); |
MarkBit markbit = MarkBitFrom(obj, state); |
if (!Marking::BlackToGrey<access_mode>(markbit)) return false; |
- state.IncrementLiveBytes(-obj->Size()); |
+ state.IncrementLiveBytes<access_mode>(-obj->Size()); |
return true; |
} |
@@ -107,7 +107,7 @@ class ObjectMarking : public AllStatic { |
DCHECK((access_mode == MarkBit::ATOMIC || IsGrey<access_mode>(obj, state))); |
MarkBit markbit = MarkBitFrom(obj, state); |
if (!Marking::GreyToBlack<access_mode>(markbit)) return false; |
- state.IncrementLiveBytes(obj->Size()); |
+ state.IncrementLiveBytes<access_mode>(obj->Size()); |
return true; |
} |
@@ -424,8 +424,16 @@ enum PageEvacuationMode { NEW_TO_NEW, NEW_TO_OLD }; |
class MinorMarkCompactCollector { |
public: |
+ MarkingState marking_state(HeapObject* object) const { |
+ return MarkingState::External(object); |
+ } |
+ |
+ MarkingState marking_state(MemoryChunk* chunk) const { |
+ return MarkingState::External(chunk); |
+ } |
+ |
explicit MinorMarkCompactCollector(Heap* heap) |
- : heap_(heap), marking_deque_(heap) {} |
+ : heap_(heap), marking_deque_(heap), page_parallel_job_semaphore_(0) {} |
void SetUp(); |
void TearDown(); |
@@ -447,9 +455,19 @@ class MinorMarkCompactCollector { |
void MarkLiveObjects(); |
void ProcessMarkingDeque(); |
void EmptyMarkingDeque(); |
+ void ClearNonLiveReferences(); |
+ |
+ void EvacuatePrologue(); |
+ void EvacuateEpilogue(); |
+ void EvacuateNewSpace(std::vector<HeapObject*>* black_allocation_objects); |
+ void EvacuatePagesInParallel( |
+ std::vector<HeapObject*>* black_allocation_objects); |
+ void UpdatePointersAfterEvacuation(); |
Heap* heap_; |
MarkingDeque marking_deque_; |
+ base::Semaphore page_parallel_job_semaphore_; |
+ List<Page*> new_space_evacuation_pages_; |
friend class StaticYoungGenerationMarkingVisitor; |
}; |
@@ -541,6 +559,14 @@ class MarkCompactCollector { |
kClearMarkbits, |
}; |
+ MarkingState marking_state(HeapObject* object) const { |
+ return MarkingState::Internal(object); |
+ } |
+ |
+ MarkingState marking_state(MemoryChunk* chunk) const { |
+ return MarkingState::Internal(chunk); |
+ } |
+ |
static void Initialize(); |
static SlotCallbackResult CheckAndMarkObject(Heap* heap, |
@@ -793,9 +819,6 @@ class MarkCompactCollector { |
void EvacuateEpilogue(); |
void EvacuatePagesInParallel(); |
- // The number of parallel compaction tasks, including the main thread. |
- int NumberOfParallelCompactionTasks(int pages, intptr_t live_bytes); |
- |
void EvacuateNewSpaceAndCandidates(); |
void UpdatePointersAfterEvacuation(); |