the order matters
authorRalf Jung <post@ralfj.de>
Mon, 15 Oct 2018 16:21:26 +0000 (18:21 +0200)
committerRalf Jung <post@ralfj.de>
Mon, 15 Oct 2018 16:21:26 +0000 (18:21 +0200)
personal/_posts/2018-08-07-stacked-borrows.md

index 80501398d1007f598e1762ddd06ff3857035b1dd..54dd417c8aecb7aee373717ca1d1a21b8646f551 100644 (file)
@@ -450,7 +450,7 @@ Now we can look at what happens for each operation.
 * Any time a function returns, we have to clean up the barriers.
   - Iterate over all of memory and remove the matching `FnBarrier`. This is where the "stack" becomes a bit of a lie, because we also remove barriers from the middle of a stack.<br>
     This could be optimized by adding an indirection, so we just have to record somewhere that this function call has ended.
 * Any time a function returns, we have to clean up the barriers.
   - Iterate over all of memory and remove the matching `FnBarrier`. This is where the "stack" becomes a bit of a lie, because we also remove barriers from the middle of a stack.<br>
     This could be optimized by adding an indirection, so we just have to record somewhere that this function call has ended.
-* Any time memory is deallocated, the stacks of the deallocated bytes must not contain any barriers.  Moreover, deallocation counts as mutation, so the usual rules for that apply.
+* Any time memory is deallocated, this counts as mutation, so the usual rules for that apply. After that, the stacks of the deallocated bytes must not contain any barriers.
 
 
 If you want to test your own understanding of "Stacked Borrows", I invite you to go back to [Section 2.2 of "Types as Contracts"]({% post_url 2017-07-17-types-as-contracts %}#22-examples) and look at the three examples here.
 
 
 If you want to test your own understanding of "Stacked Borrows", I invite you to go back to [Section 2.2 of "Types as Contracts"]({% post_url 2017-07-17-types-as-contracts %}#22-examples) and look at the three examples here.