Uh oh!
There was an error while loading. Please reload this page.
[MIR] Some initial zeroing implementation work - #31430
Conversation
nagisa
commented
Feb 5, 2016
rust-highfive
commented
Feb 5, 2016
(rust_highfive has picked a reviewer for you, use r? to override) |
nikomatsakis
commented
Feb 5, 2016
This looks pretty good. I think we also need to zero on moves ( |
nikomatsakis
commented
Feb 5, 2016
@bors r+ (should be no conflict with other PR landing, though one hopes it doesn't bounce) |
bors
commented
Feb 5, 2016
📌 Commit 69b6f72 has been approved by |
nagisa
commented
Feb 6, 2016
bors
commented
Feb 6, 2016
🙀 |
nagisa
commented
Feb 6, 2016
@bors r=nikomatsakis |
bors
commented
Feb 6, 2016
📌 Commit 569b18f has been approved by |
bors
commented
Feb 6, 2016
⌛ Testing commit 569b18f with merge 831a453... |
bors
commented
Feb 7, 2016
💔 Test failed - auto-linux-64-nopt-t |
bors
commented
Feb 9, 2016
☔ The latest upstream changes (presumably #31282) made this pull request unmergeable. Please resolve the merge conflicts. |
nagisa
commented
Feb 9, 2016
I’m genuinely confused about the test failure here. |
nikomatsakis
commented
Feb 18, 2016
Indeed, it's confusing. I pulled the branch locally and am doing a build, just to see what I see. |
nikomatsakis
commented
Feb 18, 2016
@nagisa maybe rebase and we'll just give it the ol' bors retry? |
nikomatsakis
commented
Feb 19, 2016
never mind, the error is quite reproducible if you configure with |
Hopefully the author caught all the cases. For the mir_dynamic_drops_3 test case the ratio of memsets to other instructions is 12%. On the other hand we actually do not double drop for at least the test cases provided anymore in MIR.
nagisa
commented
Feb 24, 2016
@nikomatsakis re-r? This has changed somewhat considerably since last time and now is a full-ish implementation. |
In MIR we previously tried to match `let x in { exprs; let y in { exprs; }}` with our data
structures which is rather unwieldy, espeicially because it requires some sort of recursion or
stack to process, while, a flat list of statements is enough – lets only relinquish their lifetime
at the end of the block (i.e. end of the list).
Also fixesrust-lang#31853.nikomatsakis
commented
Mar 1, 2016
@bors r+ |
bors
commented
Mar 1, 2016
📌 Commit d1a1239 has been approved by |
bors
commented
Mar 1, 2016
Zeroing on-drop seems to work fine. Still thinking about the best way to approach zeroing on-move. (based on top of the other drop PR; only the last 2 commits are relevant)
bors
commented
Mar 2, 2016
SimonSapin
commented
Mar 7, 2016
I don’t understand the code changes but the PR title mentions zeroing rather than filling. Are we reverting https://internals.rust-lang.org/t/attention-hackers-filling-drop/1715 ? |
nagisa
commented
Mar 7, 2016
This is using the same technique used by the current translator, so you could also call it filling (I personally see no distinction). This PR also affects MIR only (which is not used by default) and is a temporary solution until we make non-filling (stack flags) drops happen. |
SimonSapin
commented
Mar 8, 2016
Alright. My worry is code that uses Is it the plan to not enable MIR until it comes with proper drop flags on the stack and |
arielb1
commented
Mar 8, 2016
This uses the same kind of filling that non-MIR uses. We should revert this commit when pnkfelix gets stack-flag drop working. |
Zeroing on-drop seems to work fine. Still thinking about the best way to approach zeroing on-move.
(based on top of the other drop PR; only the last 2 commits are relevant)