-
Notifications
You must be signed in to change notification settings - Fork 24
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
Recreate llvm-backend gcroots code on develop branch #1077
Comments
I am going to attempt to break this down into some slightly more atomic changes that can be applied as a sequence of high level changes to the backend. This can constitute a sequence of pull requests.
|
For reference, I am including here the sequence of PRs that comprise most of the changes that were applied to implement this change on the original branch. this is useful because as I am getting into the meat of the changes, it is helpful to refer to the PR descriptions for these PRs to make sure I understand the motivation behind the changes.
|
There exists a body of code that was applied to a branch of the llvm backend in the past whose purpose was to allow garbage collection to be triggered by the allocator when the allocator ran out of space, rather than attempting to only trigger garbage collection after a rewrite step. This can prevent leaks when a long sequence of function calls occurs between two rewrite steps.
However, that code has bit-rotted and it is not at all trivial to resurrect the branch. Instead, we are going to attempt to replay the changes of the branch onto develop behind a feature flag.
This is pretty low priority and also very time consuming, so we should not pick up this work unless it is likely to directly affect the current milestone or if we have a lot of free time on our hands. With that being said, I am going to attempt to describe the changes that were made in the interests of documenting the work that will be required.
Right now this is going to be pretty low level because I don't have access to a clear picture of the high-level changes that were made due to the messiness of the branch. I will try to separate this out into a high level work plan in the future.
Here are the low-level changes that need to be replayed:
The text was updated successfully, but these errors were encountered: