Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Unified Diff: src/heap/mark-compact.h

Issue 2796233003: [heap] Evacuation for young generation (Closed)
Patch Set: Rebase after [heap] Allow concurrently transferring colors Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/heap/mark-compact.h
diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h
index 00620423fa689ef66d541c3ad5dcb6904e418916..9bb51c21a50451d13c9ff24044831656db0ecdeb 100644
--- a/src/heap/mark-compact.h
+++ b/src/heap/mark-compact.h
@@ -424,8 +424,16 @@ enum PageEvacuationMode { NEW_TO_NEW, NEW_TO_OLD };
class MinorMarkCompactCollector {
Hannes Payer (out of office) 2017/04/21 14:35:18 Would it make sense to have a higher level abstrac
Michael Lippautz 2017/04/24 13:15:08 Yes, I started implementing that in a smaller CL o
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();
« no previous file with comments | « src/heap/gc-tracer.cc ('k') | src/heap/mark-compact.cc » ('j') | src/heap/spaces.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698