-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Process GC preserve #156
Process GC preserve #156
Conversation
mmtk/src/julia_scanning.rs
Outdated
) { | ||
// process transitively pinning stack first | ||
let pinning_closure = if let Some(c) = pclosure { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest having a separate method mmtk_scan_tpin_gcstack
or something, and deal with the new stack there. The current code is too confusing: the tpin_gcstack
is scanned with the normal closure
when pclosure
has a value. Creating a new function to scan tpin_gcstack
and only pass the closure that is needed to the new function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Processing GC preserve regions.
Note that objects in these regions are currently put into a separate stack (
tpin_gcstack
), but later on, when we lower the code for pushing and popping objects into LLVM, we might be able to reuse thegcstack
and create a separate frame that we can push and pop. We cannot currently do that because we are currently pushing and popping outside of the current function, using the hook functions.