Skip to content
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

julia_gc: replace jl_task_stack_buffer by jl_active_task_stack #5724

Merged
merged 1 commit into from
May 23, 2024

Conversation

fingolfin
Copy link
Member

The former has been deprecated since 2020.

The former has been deprecated since 2020.
@fingolfin fingolfin added topic: kernel release notes: not needed PRs introducing changes that are wholly irrelevant to the release notes topic: julia Julia GC integration and related matters backport-to-4.13 labels May 23, 2024
char * stackend = (char *)jl_task_stack_buffer(task, &size, &tid);
stackend += size;
char *dummy, *stackend;
jl_active_task_stack(task, &dummy, &dummy, &dummy, &stackend);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(I am not that familiar with C.) Does this work as expected passing the same reference multiple times?

From the test changes in JuliaLang/julia@791b194#diff-56f74cdd491aa2348d5c9811ddcaa10d76190925157b55f10ae5caae1339b549 (Introduction of jl_active_task_stack) I would expect the third argument to be the stackend we want, and not the fifth.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this work as expected passing the same reference multiple times?

Yes it does (to know that one has to look at the implementation of jl_active_task_stack which I did).

Regarding 3rd vs. 5th argument: Yes, I made a note to myself that in theory, using the 3rd would be better because it would mean we end up scanning less. But analyzing the code of jl_task_stack_buffer and jl_active_task_stack revealed that actually using the 5th is an exact match for what the old codepath computed.

I may revisit using the 3rd in a future revision, but for now using the 5th is the safer bet, as it minimizes the change in behavior compared to what we had before (and what worked). And while using the 3rd might be an optimization, it also has a risk of introducing a bug (namely if it is actually scanning too little). That said, the two value almost always coincide anyway, only for inactive tasks with copy_stack enabled is there even the possibility for a difference.

@fingolfin fingolfin merged commit 7e07b99 into gap-system:master May 23, 2024
22 checks passed
@fingolfin fingolfin deleted the mh/jl_task_stack_buffer branch May 23, 2024 22:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-to-4.13-DONE release notes: not needed PRs introducing changes that are wholly irrelevant to the release notes topic: julia Julia GC integration and related matters topic: kernel
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants