-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
miri engine: Stacked Borrows NG #55270
Conversation
@bors r+ |
📌 Commit 6fb754aaddbdd8e77200849332e0db2e851ecc58 has been approved by |
Cycling PR to hopefully get the PR-travis state unstuck. |
@bors r=oli-obk |
💡 This pull request was already approved, no need to approve it again.
|
📌 Commit 6fb754aaddbdd8e77200849332e0db2e851ecc58 has been approved by |
☔ The latest upstream changes (presumably #55347) made this pull request unmergeable. Please resolve the merge conflicts. |
6fb754a
to
292d862
Compare
Rebased. @bors r=oli-obk |
📌 Commit 292d862a633d993ded2ab8f57eaf2ceace56a6cc has been approved by |
This comment has been minimized.
This comment has been minimized.
…de)reference hooks work on places
292d862
to
95b19bb
Compare
Rebased. @bors r=oli-obk |
📌 Commit 95b19bb has been approved by |
🌲 The tree is currently closed for pull requests below priority 1, this pull request will be tested once the tree is reopened |
miri engine: Stacked Borrows NG For more refined tracking in miri, we do return untagged pointers from the memory abstraction after allocations and let the caller decide how to tag these. Also refactor the `tag_(de)reference` hooks so they can be more easily called in the ref-to-place and place-to-ref methods, and reorder things in validation: validation calls ref-to-place which (when running in miri) triggers some checks, so we want to run it rather late and catch other problems first. We also do not need to redundantly check the ref to be allocated any more, the checks miri does anyway imply thath. r? @oli-obk
☀️ Test successful - status-appveyor, status-travis |
Add Retagging statements This adds a `Retag` statement kind to MIR, used to perform the retagging operation from [Stacked Borrows](https://www.ralfj.de/blog/2018/08/07/stacked-borrows.html). It also kills the old `Validate` statements that I added last year. NOTE: This includes #55270. Only [these commits are new](RalfJung/rust@stacked-borrows-ng...RalfJung:retagging).
For more refined tracking in miri, we do return untagged pointers from the memory abstraction after allocations and let the caller decide how to tag these.
Also refactor the
tag_(de)reference
hooks so they can be more easily called in the ref-to-place and place-to-ref methods, and reorder things in validation: validation calls ref-to-place which (when running in miri) triggers some checks, so we want to run it rather late and catch other problems first. We also do not need to redundantly check the ref to be allocated any more, the checks miri does anyway imply thath.r? @oli-obk