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

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

Issue 2403423007: [heap] Reland concurrent slot filtering in sweeper threads. (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « src/heap/mark-compact.h ('k') | src/heap/remembered-set.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/mark-compact.cc
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
index efe7375c8297180e15caeaccc8ce779a4efdcd72..9b5bf32dfe989dc5cd1d78289c933c6b061be14f 100644
--- a/src/heap/mark-compact.cc
+++ b/src/heap/mark-compact.cc
@@ -302,24 +302,6 @@ bool MarkCompactCollector::StartCompaction(CompactionMode mode) {
return compacting_;
}
-void MarkCompactCollector::ClearInvalidRememberedSetSlots() {
- {
- TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_STORE_BUFFER);
- RememberedSet<OLD_TO_NEW>::ClearInvalidSlots(heap());
- }
-// There is not need to filter the old to old set because
-// it is completely cleared after the mark-compact GC.
-// The slots that become invalid due to runtime transitions are
-// cleared eagerly immediately after the transition.
-
-#ifdef VERIFY_HEAP
- if (FLAG_verify_heap) {
- RememberedSet<OLD_TO_NEW>::VerifyValidSlots(heap());
- RememberedSet<OLD_TO_OLD>::VerifyValidSlots(heap());
- }
-#endif
-}
-
void MarkCompactCollector::CollectGarbage() {
// Make sure that Prepare() has been called. The individual steps below will
// update the state as they proceed.
@@ -2410,8 +2392,6 @@ void MarkCompactCollector::ClearNonLiveReferences() {
MarkDependentCodeForDeoptimization(dependent_code_list);
ClearWeakCollections();
-
- ClearInvalidRememberedSetSlots();
}
@@ -3827,11 +3807,12 @@ int MarkCompactCollector::Sweeper::ParallelSweepPage(Page* page,
Heap::ShouldZapGarbage() ? ZAP_FREE_SPACE : IGNORE_FREE_SPACE;
if (identity == NEW_SPACE) {
RawSweep(page, IGNORE_FREE_LIST, free_space_mode);
- } else if (identity == OLD_SPACE) {
- max_freed = RawSweep(page, REBUILD_FREE_LIST, free_space_mode);
- } else if (identity == CODE_SPACE) {
- max_freed = RawSweep(page, REBUILD_FREE_LIST, free_space_mode);
} else {
+ if (identity == OLD_SPACE || identity == MAP_SPACE) {
+ RememberedSet<OLD_TO_NEW>::ClearInvalidSlots(heap_, page);
+ } else {
+ RememberedSet<OLD_TO_NEW>::ClearInvalidTypedSlots(heap_, page);
+ }
max_freed = RawSweep(page, REBUILD_FREE_LIST, free_space_mode);
}
« no previous file with comments | « src/heap/mark-compact.h ('k') | src/heap/remembered-set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698