Commit Graph

985 Commits

Author SHA1 Message Date
Oliver Schneider f7bc6ab162 Reuse the Backtrace object instead of rolling our own 2017-08-03 12:37:52 +02:00
Oliver Schneider 163821b500 Remove accidental text paste 2017-08-03 12:37:24 +02:00
Oliver Schneider 29a3c4d28c Produce backtraces for miri internals 2017-08-02 16:59:01 +02:00
Oliver Schneider 79f38bf2cd Process untagged unions 2017-08-01 16:12:29 +02:00
Oliver Schneider d05784f23c Address comments 2017-08-01 11:11:57 +02:00
Oliver Schneider 8de85808ec Properly process ptr_op for const eval 2017-08-01 09:56:21 +02:00
Oliver Schneider adfea61665 Allow machines to create new memory kinds 2017-08-01 09:56:21 +02:00
Oliver Schneider f16b9e280b Move all intrinsics out of interpret and fail CTFE on intrinsic calls 2017-08-01 09:56:21 +02:00
Oliver Schneider df7c42bcc8 Move a method used everywhere out of intrinsic.rs 2017-08-01 09:56:21 +02:00
Oliver Schneider e15d374dda Fix doc text 2017-08-01 09:56:21 +02:00
Oliver Schneider e5799a6af3 Reduce the chance of accidentally calling functions in CTFE
previously miri had a check for const fn and other cases that
CTFE requires. Instead the function call is completely
processed inside the machine. This allows CTFE to have full
control over what is called and miri to not have useless
CTFE-checks in normal mode.
2017-08-01 09:56:21 +02:00
Oliver Schneider 728bb878ac Move the global_item function to the EvalContext 2017-08-01 09:56:21 +02:00
Oliver Schneider 960dca172d Rename const_eval::Evaluator to CompileTimeFunctionEvaluator 2017-08-01 09:56:21 +02:00
Oliver Schneider 4a4640a331 Move more non-CTFE operations to the Machine 2017-08-01 09:56:21 +02:00
Oliver Schneider 36502a32b0 Implement the first machine function 2017-08-01 09:56:21 +02:00
Oliver Schneider 11e30a65e6 Split up miri into the librustc_mir and bin parts 2017-08-01 09:56:21 +02:00
Ralf Jung 69fd22f904 fix for latest nightly 2017-07-31 16:53:53 -07: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
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
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 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