-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Adding support for MMTk (non-moving immix) #56288
base: master
Are you sure you want to change the base?
Conversation
…art of the refactoring
…art of the refactoring
…art of the refactoring
@@ -2452,8 +2452,122 @@ void LateLowerGCFrame::PlaceRootsAndUpdateCalls(SmallVectorImpl<int> &Colors, St | |||
} | |||
} | |||
|
|||
#ifdef MMTK_GC |
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'd prefer it if this was a runtime option to the pass rather than a compiletime option.
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.
Do you mean choosing MMTk as a runtime option or inlining the fastpath as a runtime option? The former is not really possible, at least not at this point. The latter should be possible, with maybe a small overhead of checking the runtime option variable every time we're running that pass.
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 mean the latter
Value *callee = CI->getCalledOperand(); | ||
assert(callee); | ||
|
||
auto GCAllocBytes = getOrNull(jl_intrinsics::GCAllocBytes); |
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.
You should be able to just iterate over users of this global rather than iterating through all statements, which is slow.
…and jl_atomic_store_relaxed
This PR adds the possibility of building/running Julia using MMTk, running non-moving immix.
The binding code (Rust) associated with it is in https://github.com/mmtk/mmtk-julia/tree/upstream-ready/immix. Instructions on how to build/run Julia with MMTk are described in the
README
file inside the binding repo.