Skip to content

Refactorings for enabling parallel compilation (part 1) #1264

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

Merged
merged 17 commits into from
Aug 13, 2022

Conversation

bjorn3
Copy link
Member

@bjorn3 bjorn3 commented Aug 13, 2022

This PR contains a bunch of refactorings to remove dependencies on TyCtxt and Session for various functions that will in the future be called on background threads as those types are only available on the main thread.

While I was working on this refactoring I also managed to remove the partial linking hack previously necessary for allowing incremental compilation and inline assembly to work together. This fixes support for inline assembly on macOS. cc #1204

Part of #652

See #1266 for the next PR in this series.

bjorn3 added 17 commits August 10, 2022 15:06
The new codegen_and_compile_fn function only calls codegen_fn and then
compile_fn. This makes it possible for both parts to be called
separately by the driver.
This allows it to be executed on a background thread.
The allocator shim doesn't get reused and the allocator shim is just
under 2kb, so reusing it is likely more expensive than regenerating it.
This reduces memory usage and may improve performance slightly.
The copy depends on Session, which is only available on the main thread.
As such the copy can't be done on future codegen threads.
Error reporting requires a Session, which isn't available on background
threads.
TyCtxt isn't available on background threads.
@bjorn3 bjorn3 added C-enhancement Category: An issue proposing an enhancement or a PR with one. compile-time How fast is the code compiled labels Aug 13, 2022
@bjorn3 bjorn3 merged commit 523f0db into master Aug 13, 2022
@bjorn3 bjorn3 deleted the parallel_comp_refactor branch August 13, 2022 14:53
@bjorn3 bjorn3 added the C-cleanup Category: PRs that clean code up or issues documenting cleanup. label Aug 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-cleanup Category: PRs that clean code up or issues documenting cleanup. C-enhancement Category: An issue proposing an enhancement or a PR with one. compile-time How fast is the code compiled
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant