Commit Graph

52 Commits

Author SHA1 Message Date
Ralf Jung
479eb3bd2b support for basic (non-overlapping) 2-phase borrows 2018-12-02 13:30:09 +01:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
26fe778c55
Typo
Co-Authored-By: RalfJung <post@ralfj.de>
2018-11-28 09:58:23 +01:00
Ralf Jung
97e010f5b9 barriers prevent deallocation 2018-11-27 14:26:23 +01:00
Ralf Jung
194710e112 no barriers for boxes 2018-11-27 14:26:23 +01:00
Ralf Jung
dd94930ee3 implement function barriers 2018-11-27 14:26:23 +01:00
Ralf Jung
215ec38624 track call IDs 2018-11-27 14:25:20 +01:00
Ralf Jung
e9370d2b74 adjust for memory_allocated hook, make RangeMap preallocated with a fixed size 2018-11-27 14:25:20 +01:00
Oliver Scherer
32e93ed776 Update to Memory -> Allocation method move 2018-11-23 17:00:31 +01:00
Ralf Jung
694d2490f1 slightly more verbose error msg 2018-11-21 16:02:38 +01:00
Ralf Jung
41f89beb3f if let 2018-11-21 16:01:39 +01:00
Ralf Jung
ec8cc029c1 on a deref, check that we are not using a mutable ref with a frozen tag 2018-11-21 15:44:47 +01:00
Ralf Jung
6085865975 adjust for InboundsCheck parameter of memory bounds check 2018-11-20 08:45:25 +01:00
Ralf Jung
19f8a9db7d Boxes can also use the fast path 2018-11-17 12:35:58 +01:00
Ralf Jung
c847071355 add comment about not using builtin_deref 2018-11-17 12:33:44 +01:00
Ralf Jung
880229d4c3 escape-on-cast, now ptr-deref does not change the tag at all, ever 2018-11-17 10:05:40 +01:00
Ralf Jung
b7dbb5e2a7 also consider boxes like unique references 2018-11-17 10:05:40 +01:00
Ralf Jung
36b97cd76c Factor out common top-level code from escape-to-raw and retag 2018-11-16 11:24:01 +01:00
Ralf Jung
a1f895d6f2 retagging: descent into values, type-driven 2018-11-16 11:09:33 +01:00
Ralf Jung
60e26af323 add a sanity assertion 2018-11-16 08:40:00 +01:00
Ralf Jung
cf1746222e we no longer even try pushing to a frozen location 2018-11-15 21:22:05 +01:00
Ralf Jung
f521fd5e0f let's call this a redundant reborrow 2018-11-15 21:22:05 +01:00
Ralf Jung
c234009fdd generalize reborrow-to-raw exception to a general redundancy check 2018-11-15 09:35:40 +01:00
Ralf Jung
5a801c0dc1 adjust comment 2018-11-15 09:35:40 +01:00
Ralf Jung
a87e952102 Separate deref and access into different operations; add special exception for creating raw references 2018-11-15 09:35:40 +01:00
Ralf Jung
a94e197105 better test the special exception for reading through unique when things are shared 2018-11-15 09:35:40 +01:00
Ralf Jung
020313dd85 make freezing inherently part of the high-level reactivate/initiate operations 2018-11-15 09:35:40 +01:00
Ralf Jung
09919c2b59 Retag is the only operation that generates new tags 2018-11-15 09:35:40 +01:00
Ralf Jung
f5bd85d009 update for memory_deallocated moving to AllocExtra 2018-11-14 16:03:38 +01:00
Ralf Jung
e7aa5c68ff Update rustc for AllocationExtra trait
Based on https://github.com/solson/miri/pull/493 but there were more conflicts
than code so I opted not to cherry-pick.
2018-11-12 08:54:12 +01:00
Ralf Jung
00936316d1 treat shared and raw borrows alike 2018-11-08 08:29:34 +01:00
Ralf Jung
74635a57e2 re-do large parts of stacked borrows, now with proper support for partiall frozen data 2018-11-08 08:29:34 +01:00
Ralf Jung
9edac3189a rustup 2018-11-05 08:52:02 +01:00
Ralf Jung
cb691b7ed9 comment on mut-to-shr transmutes 2018-11-03 11:42:38 +01:00
Ralf Jung
a68779fd16 use crate:: import to make edition port easier later 2018-11-01 09:00:09 +01:00
Ralf Jung
81534496dc rename RefKind to UsageKind, because it not only used for references now 2018-11-01 08:58:03 +01:00
Ralf Jung
478f137c39 put all the logic into reactivatable() 2018-11-01 08:58:03 +01:00
Ralf Jung
85f821d7e9 unify checks on memory access and reborrowing, and update for Machine trait change 2018-11-01 08:58:03 +01:00
Ralf Jung
bba3c49e84 basic retagging (no fn_entry); this also makes us catch more bugs even with optimizations and we can finally stop mutating the state on deref 2018-11-01 08:58:03 +01:00
Ralf Jung
7ac0e79ad5 stub Retag hook; fix tests for removal of -Zmir-emit-validate 2018-11-01 08:58:03 +01:00
Ralf Jung
1fa0ff88c0 fix nits 2018-10-30 10:41:01 +01:00
Ralf Jung
a34b9c7b70 make some things public for the benefit of priroda 2018-10-24 11:39:31 +02:00
Ralf Jung
5388037f8a remove code duplication by letting reactivatable() compute what reactivate() has to do 2018-10-23 15:59:50 +02:00
Ralf Jung
fe83ef323c also run compile-fail tests with and without optimizations 2018-10-23 13:09:17 +02:00
Ralf Jung
26bb4f79dc get rid of implicit Raw at bottom of stack; locals get a uniq at their bottom 2018-10-22 18:17:37 +02:00
Ralf Jung
01828fde53 respect memory's privacy 2018-10-22 16:48:10 +02:00
Ralf Jung
dd1558f337 rustc update and be very selective about what we accept on a deref 2018-10-22 16:48:09 +02:00
Ralf Jung
1ae1b9bfea adapt to rustc API changes and factor out computing the tag for ty+mutbl 2018-10-22 16:45:03 +02:00
Ralf Jung
1a7fb7ec3c expand comment about incomplete support for interior mutability 2018-10-22 12:51:47 +02:00
Ralf Jung
b259512c57 bump for ENABLE_PTR_TRACKING_HOOKS, and remove some dead code 2018-10-17 17:36:07 +02:00
Ralf Jung
d4b78b36ab stacked borrows: enforcement at memory accesses 2018-10-17 15:15:53 +02:00