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

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

Issue 2796233003: [heap] Evacuation for young generation (Closed)
Patch Set: Fix compaction space test 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 640a7f9dfffe969f3d084a92daedd0d129e88e47..0f9cb93a81f33939a3db91b52e7b4e014c97fde1 100644
--- a/src/heap/mark-compact.h
+++ b/src/heap/mark-compact.h
@@ -440,6 +440,10 @@ class MarkCompactCollectorBase {
explicit MarkCompactCollectorBase(Heap* heap) : heap_(heap) {}
virtual void MarkLiveObjects() = 0;
+ virtual void ClearNonLiveReferences() = 0;
+ virtual void EvacuatePrologue() = 0;
+ virtual void EvacuateEpilogue() = 0;
+ virtual void UpdatePointersAfterEvacuation() = 0;
// The number of parallel compaction tasks, including the main thread.
int NumberOfParallelCompactionTasks(int pages, intptr_t live_bytes);
@@ -447,7 +451,8 @@ class MarkCompactCollectorBase {
template <class Evacuator, class Collector>
void CreateAndExecuteEvacuationTasks(
Collector* collector, PageParallelJob<EvacuationJobTraits>* job,
- RecordMigratedSlotVisitor* record_visitor, const intptr_t live_bytes,
+ RecordMigratedSlotVisitor* record_visitor,
+ MigrationObserver* migration_observer, const intptr_t live_bytes,
const int& abandoned_pages);
Heap* heap_;
@@ -457,7 +462,9 @@ class MarkCompactCollectorBase {
class MinorMarkCompactCollector final : public MarkCompactCollectorBase {
public:
explicit MinorMarkCompactCollector(Heap* heap)
- : MarkCompactCollectorBase(heap), marking_deque_(heap) {}
+ : MarkCompactCollectorBase(heap),
+ marking_deque_(heap),
+ page_parallel_job_semaphore_(0) {}
MarkingState marking_state(HeapObject* object) const override {
return MarkingState::External(object);
@@ -483,8 +490,18 @@ class MinorMarkCompactCollector final : public MarkCompactCollectorBase {
void MarkLiveObjects() override;
void ProcessMarkingDeque();
Hannes Payer (out of office) 2017/05/02 16:17:26 ProcessMarkingDeque and EmtyMarkingDeque could als
Michael Lippautz 2017/05/02 16:56:17 Done.
void EmptyMarkingDeque();
+ void ClearNonLiveReferences() override;
+
+ void EvacuatePrologue() override;
+ void EvacuateEpilogue() override;
+ void EvacuateNewSpace(std::vector<HeapObject*>* black_allocation_objects);
Hannes Payer (out of office) 2017/05/02 16:17:26 Evacuate* could be virtual if we do not expose bla
Michael Lippautz 2017/05/02 16:56:17 See above.
+ void EvacuatePagesInParallel(
+ std::vector<HeapObject*>* black_allocation_objects);
+ void UpdatePointersAfterEvacuation() override;
MarkingDeque marking_deque_;
+ base::Semaphore page_parallel_job_semaphore_;
+ List<Page*> new_space_evacuation_pages_;
friend class StaticYoungGenerationMarkingVisitor;
};
@@ -758,7 +775,7 @@ class MarkCompactCollector final : public MarkCompactCollectorBase {
// Clear non-live references in weak cells, transition and descriptor arrays,
// and deoptimize dependent code of non-live maps.
- void ClearNonLiveReferences();
+ void ClearNonLiveReferences() override;
void MarkDependentCodeForDeoptimization(DependentCode* list);
// Find non-live targets of simple transitions in the given list. Clear
// transitions to non-live targets and if needed trim descriptors arrays.
@@ -797,13 +814,13 @@ class MarkCompactCollector final : public MarkCompactCollectorBase {
void StartSweepSpaces();
void StartSweepSpace(PagedSpace* space);
- void EvacuatePrologue();
- void EvacuateEpilogue();
+ void EvacuatePrologue() override;
+ void EvacuateEpilogue() override;
void EvacuatePagesInParallel();
void EvacuateNewSpaceAndCandidates();
- void UpdatePointersAfterEvacuation();
+ void UpdatePointersAfterEvacuation() override;
void ReleaseEvacuationCandidates();

Powered by Google App Engine
This is Rietveld 408576698