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
dc6e877ead
Split "new" miri crate into modules
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
6d3c88c061
Merge pull request #277 from RalfJung/nightly
...
fix for latest nightly
2017-07-31 17:14:38 -07:00
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