-
Notifications
You must be signed in to change notification settings - Fork 75
Allow configuring each Immix space to be non moving #1305
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
Conversation
61d26db
to
a965bb8
Compare
a965bb8
to
530d80c
Compare
804f43b
to
cf726b4
Compare
cf726b4
to
2ecb7a3
Compare
@wks I have addressed your comments, and posted performance results for the PR. Can you review it again? |
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
Sorry. There are some issues with PlanConstraints::moves_objects
. I'll comment later.
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.
One minor issue is that PlanConstraints::moves_objects
may conditionally be true if some Cargo features are enabled.
From one hand, we may leave it as true
so that the VM will conservatively consider Immix
and StickyImmix
are moving plans. This is OK for testing object copying on VMs that plans to supported copying GC.
But I think there may be some VMs that intentionally only supports non-copying GCs. They can reject any plans labelled with PlanConstrant::moves_objects == false
. In this case, those VM bindings will always enable immix_non_moving
and sticky_immix_non_moving_nursery
and expect Immix and StickyImmix to have PlanConstrant::moves_objects == true
. I am not sure how the performance may be (because of fragmentation), but I think setting PlanConstrant::moves_objects
accurately could be helpful.
on the feature immix_non_moving
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
We plan to use non-moving Immix as a non-moving space. In this case, we will have two Immix spaces, one allows moving, and the other does not. We currently use global constants to control whether Immix moves objects or not, and we cannot have two Immix spaces that are configured differently.
This PR removes those constants, and adds a flag
never_move_objects
inImmixSpaceArgs
to indicate whether this Immix space disallows moving.