Commit Graph

1493 Commits

Author SHA1 Message Date
Ralf Jung 69fd22f904 fix for latest nightly 2017-07-31 16:53:53 -07:00
Oliver Schneider 7c6befe69f Merge pull request #274 from RalfJung/packed2
make force_allocation handle packed ByValPair
2017-07-31 12:41:29 +02:00
Ralf Jung 4458001644 remove some commented-out tracing 2017-07-28 19:47:02 -07:00
Ralf Jung eb6c743e42 avoid anonymous bool 2017-07-28 19:43:05 -07:00
Ralf Jung 14c8e834b9 use Cell for memory's aligned flag to avoid infecting interfaces with 'fake' mutability 2017-07-27 09:14:04 -07:00
Ralf Jung 4672cb7bde make force_allocation handle packed ByValPair 2017-07-26 23:45:22 -07:00
Oliver Schneider f906c5458c Merge pull request #272 from oli-obk/mir-validate
Mir validate
2017-07-26 23:37:52 +02:00
Ralf Jung 791dbaf584 disable validation code so that it all compiles against current nightly 2017-07-26 11:27:40 -07:00
Ralf Jung fdc7071697 whitelist some more methods 2017-07-26 11:10:47 -07:00
Oliver Schneider 46324c24ca Merge pull request #273 from RalfJung/ref
Test that &* of a dangling (and even unaligned) ptr is okay
2017-07-26 07:46:39 +02:00
Ralf Jung b372de8ec9 move undef-check-on-release-validation out, to catch more cases 2017-07-25 18:15:43 -07:00
Ralf Jung 858e5eef92 check mutable UnsafeCell; hack for AtomicBool::get_mut 2017-07-25 17:31:40 -07:00
Ralf Jung 744780e794 more hacks to make test cases pass 2017-07-25 17:31:40 -07:00
Ralf Jung e5cc8aaf5b Test that &* of a dangling (and even unaligned) ptr is okay 2017-07-25 17:02:57 -07:00
Ralf Jung e2d80d0423 whitelist things so that more tests pass 2017-07-25 13:24:23 -07:00
Ralf Jung ec6d289c5b suspend lvalues, not locks. refactor memory locking.
Due to this, we are back down to 88 tests
2017-07-25 10:30:12 +02:00
Ralf Jung 0b15db0cc2 make LockInfo non-Copy 2017-07-25 10:30:12 +02:00
Ralf Jung 59d49c5d6d fix checks when releasing write locks (101) 2017-07-25 10:30:12 +02:00
Ralf Jung b79814e281 we don't have to set the frame on every step 2017-07-25 10:30:12 +02:00
Ralf Jung 4aae2e766e handle type of function definitions (98) 2017-07-25 10:30:12 +02:00
Ralf Jung 3f8a497bf0 we need to normalize associated types also deep in the hierarchy (89) 2017-07-25 10:30:12 +02:00
Ralf Jung 769a2b5c81 Handle trait objects. Only very superficial checking of the vtable for now. (88) 2017-07-25 10:30:12 +02:00
Ralf Jung e5c6637d87 nits. also, rustc now emits released for drop. (72) 2017-07-25 10:30:12 +02:00
Ralf Jung d0f043528d exempt UnsafeCell from checks (69) 2017-07-25 10:30:12 +02:00
Ralf Jung a41602561c move validation to its own file 2017-07-25 10:30:02 +02:00
Ralf Jung 359e5360d8 we have to permit deallocation memory for which we hold a read lock (67) 2017-07-25 10:22:11 +02:00
Ralf Jung ee209ccd74 fix handling univariant enums (62) 2017-07-25 10:22:11 +02:00
Ralf Jung 5440fe4b52 permit locking constant memory (60) 2017-07-25 10:22:11 +02:00
Ralf Jung 66e55b0d6e fn ptrs and never were accidentally disabled (55) 2017-07-25 10:22:11 +02:00
Ralf Jung 8e495999df fix normalizing associated types. this brings us up to 52 passing tests! 2017-07-25 10:22:11 +02:00
Ralf Jung bb6e5224da handle array types 2017-07-25 10:22:11 +02:00
Ralf Jung 4457a52d4f Re-do the way locking is done during verification
We now lock at the "leaves" on the types, rather than locking at references.
In particular, Validate for sth. of non-reference lvalue will also lock the "outer" memory.
Also change the way we release write locks, and some refactoring in the memory.
2017-07-25 10:22:11 +02:00
Ralf Jung 7c6e6cf492 for references, validate alignment and handle ZSTs 2017-07-25 10:22:10 +02:00
Ralf Jung 1f9153fac3 validate TyClosure, TyTuple, TyNever 2017-07-25 10:20:45 +02:00
Ralf Jung dac51f41ad various small fixes and tracing 2017-07-25 10:20:45 +02:00
Ralf Jung 046675d735 Also release locks on ReleaseValidation and EndRegion 2017-07-25 10:20:45 +02:00
Ralf Jung aaae815b44 fix release_lock_until to no longer remove inactive locks 2017-07-25 10:20:45 +02:00
Ralf Jung fda5cc9b4c avoid downcasting for enum variants without further fields 2017-07-25 10:20:45 +02:00
Ralf Jung a91ee4bb03 validate boxes 2017-07-25 10:20:45 +02:00
Ralf Jung 22f43e2d2b implement checking for ADTs 2017-07-25 10:20:45 +02:00
Ralf Jung 02e802811b implement stub validity check for basic types (bool, int, float); acquire locks for references 2017-07-25 10:20:45 +02:00
Ralf Jung edc6ce30d5 implement acquiring and releasing locks 2017-07-25 10:19:27 +02:00
Ralf Jung 4372f1145f add locking data structures and lock checks
This brings back some of the memory range ideas that were deleted with the packed refactoring.
2017-07-25 10:19:27 +02:00
Ralf Jung d2a9235c63 update for rustc changes: treat new MIR commands as NOP 2017-07-25 10:15:00 +02:00
Oliver Schneider 03ca15e62d Merge pull request #267 from RalfJung/cast
Fix ptr-int-casts
2017-07-24 11:31:25 +02:00
Oliver Schneider 4a34a1b50e Pass HasDataLayout instead of the data layout itself 2017-07-24 09:56:02 +02:00
Oliver Schneider 9c07f424da Use rustc traits instead of our own 2017-07-23 15:00:22 +02:00
Ralf Jung 4d38f8dffb move pointer truncation to a common method in memory.rs 2017-07-22 11:28:48 -07:00
Oliver Schneider 6e10752fef Merge pull request #269 from oli-obk/cleanups
Remove unused `IntoValTyPair` hack
2017-07-22 09:52:47 +02:00
Ralf Jung 40950b2cd1 fix nits 2017-07-21 20:02:48 -07:00