Allow configuring each Immix space to be non moving#1305
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? |
Sorry. There are some issues with PlanConstraints::moves_objects. I'll comment later.
wks
left a comment
There was a problem hiding this comment.
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



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_objectsinImmixSpaceArgsto indicate whether this Immix space disallows moving.