-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR enables transitively pinning (TP) objects from particular roo…
…ts for Immix/StickyImmix (#897) - A new bucket `ImmovableClosure` has been created to trace and transitively pin roots, i.e., roots in which no object in its transitive closure is allowed to move. - `RootsWorkFactory` has two new functions `create_process_tp_edge_roots_work` and `create_process_tp_node_roots_work` to create work to process these roots. - `GCWorkContext` expects an `TPProcessEdges` type, which performs the transitively pinning trace (and is unimplemented for unsupported plans). - `create_process_node_roots_work` creates work to process roots in the `NodeRootsTrace` bucket, which is executed after `TPClosure`, but any work derived from it is put into the regular `Closure` bucket, meaning that the binding shouldn't need to pin root nodes. - For sticky immix, currently we only support non-moving nursery collections (`sticky_immix_non_moving_nursery`), but the solution here is to use the `TPClosure` on the modified buffer constructed from the write barrier (since during nursery collection we do not know if these objects should be transitively pinned or not). --------- Co-authored-by: Yi Lin <[email protected]> Co-authored-by: Kunshan Wang <[email protected]>
- Loading branch information
1 parent
62f1dc9
commit 61d20e2
Showing
29 changed files
with
415 additions
and
158 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,12 @@ | ||
use super::global::SemiSpace; | ||
use crate::policy::gc_work::DEFAULT_TRACE; | ||
use crate::scheduler::gc_work::PlanProcessEdges; | ||
use crate::scheduler::gc_work::{PlanProcessEdges, UnsupportedProcessEdges}; | ||
use crate::vm::VMBinding; | ||
|
||
pub struct SSGCWorkContext<VM: VMBinding>(std::marker::PhantomData<VM>); | ||
impl<VM: VMBinding> crate::scheduler::GCWorkContext for SSGCWorkContext<VM> { | ||
type VM = VM; | ||
type PlanType = SemiSpace<VM>; | ||
type ProcessEdgesWorkType = PlanProcessEdges<Self::VM, SemiSpace<VM>, DEFAULT_TRACE>; | ||
type TPProcessEdges = UnsupportedProcessEdges<VM>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.