Scott Olson
1720b1f4af
Remove AddCallGuards. It's useless for Miri.
2016-06-30 21:39:35 -06:00
Scott Olson
64eca52ad3
Run Mir passes (copied from rustc pre-trans).
2016-06-30 21:33:24 -06:00
Scott Olson
756d73b3ca
Remove filling drop to prep for elaborated drops.
2016-06-30 21:30:03 -06:00
Oliver Schneider
b91338b220
things priroda needs to be public or changed
2016-06-30 11:29:25 +02:00
Oliver Schneider
ae3c49a9e5
use the item path printer that prints user friendly textual paths
2016-06-29 17:07:05 +02:00
Oliver Schneider
7d574f7b1c
don't execute the first statement of a constant/static/promoted right away
...
This might create confusion, because attempting to execute a statement can cause
arbitrary stackframes to be added for the constants/statics/promoteds required by that
statement. Before this commit, the first statement of the last added stackframe was
executed immediately. Thus there was no way to inspect the state before that first
statement.
2016-06-28 15:06:44 +02:00
Oliver 'ker' Schneider
37287d2a5d
use free methods instead of traits
2016-06-25 16:50:33 +02:00
Oliver Schneider
e23fdd1f49
fix const -> pointer writing (noticeable on big endian)
2016-06-23 15:40:46 +02:00
Oliver Schneider
0288486b73
use target byte order
2016-06-23 15:16:25 +02:00
Oliver Schneider
86040c0d29
simplify write_ptr
2016-06-23 13:04:05 +02:00
Oliver Schneider
4c7aae73bc
adjust all pointer_size checks to use the method
2016-06-23 10:02:39 +02:00
Oliver Schneider
d13153c424
add a pointer_size method to Memory for easy access
2016-06-23 09:59:16 +02:00
Oliver Schneider
205a988c1b
improve rustdoc rendering
2016-06-23 09:40:01 +02:00
Oliver Schneider
055b6a8d38
store full TargetDataLayout in Memory instead of just pointer size
2016-06-23 09:36:37 +02:00
Scott Olson
0c720f6e6b
Split terminator evaluation into a new module.
2016-06-23 01:03:58 -06:00
Scott Olson
d80cf91ef2
Rename stepper
module to step
.
2016-06-23 00:04:10 -06:00
Scott Olson
7bda9f24d6
Make step
an EvalContext
method and remove Stepper
.
2016-06-23 00:02:47 -06:00
Oliver Schneider
b10fc7a99f
make sure miri never switches over an invalid char value
2016-06-21 09:44:01 +02:00
Oliver Schneider
7a9272c8e1
no need to cast chars as u32 before casting to u64
2016-06-21 09:43:45 +02:00
Oliver Schneider
422e5edd28
error message improvements
2016-06-21 09:43:27 +02:00
Oliver Schneider
2dbd30fa51
implement char handling
2016-06-21 09:35:20 +02:00
Oliver Schneider
65de5dd2d0
simplify even more
2016-06-20 18:15:33 +02:00
Oliver Schneider
c7039dbb2b
simplify the masked rhs computation
2016-06-20 18:01:35 +02:00
Oliver Schneider
001ae69212
remove the bad rhs value error and panic instead. the typechecker prevent this
2016-06-20 17:52:36 +02:00
Oliver Schneider
a088f105aa
add a comment explaining the magic numbers
2016-06-20 17:52:14 +02:00
Oliver Schneider
3e3aeab0ed
implement bit masks as the compiler would translate them
2016-06-20 17:16:45 +02:00
Oliver Schneider
0821a15476
no need for EvalContext::eval_binop
2016-06-20 16:57:36 +02:00
Oliver Schneider
68469be89b
rename function cache member
2016-06-20 16:52:53 +02:00
Oliver Schneider
b9ac85d2a9
rustc does overflow checking for us, don't duplicate it.
2016-06-20 16:52:43 +02:00
Oliver Schneider
a1082b9b1a
Merge remote-tracking branch 'origin/master' into oflo
2016-06-20 12:33:09 +02:00
Oliver Schneider
e90ee1674a
fix comparing of function pointers
2016-06-20 10:35:15 +02:00
Oliver Schneider
874d683bfa
improve method names and add documentation
2016-06-20 10:34:34 +02:00
Scott Olson
f4cf3f3636
Get benchmarks running again and factor out some parts in common with bin/miri.rs.
2016-06-17 21:35:37 -06:00
Scott Olson
51edf7ede6
Rename max indentation constant for clarity.
2016-06-17 19:55:24 -06:00
Scott Olson
5ae4a0f2a9
Only indent trace logs.
2016-06-17 19:48:45 -06:00
Oliver Schneider
00eb198a82
implement fn -> unsafe fn pointer casts
2016-06-17 16:49:06 +02:00
Oliver Schneider
e3a2bf84e2
clippy
2016-06-17 16:03:11 +02:00
Oliver Schneider
3ba4f6db04
remove code repetition and fix overflowing intrinsics
2016-06-17 15:16:41 +02:00
Oliver Schneider
58b4fac1ce
implement overflowing ops
2016-06-17 13:09:20 +02:00
Scott Olson
8db0bc0ce9
Merge pull request #27 from oli-obk/travis
...
create a miri-pass test that allows us to run miri for arbitrary targets
2016-06-16 14:03:41 -05:00
Oliver Schneider
82dc95c3ad
create a miri-pass test that allows us to run miri for arbitrary targets
2016-06-15 16:01:00 +02:00
Scott Olson
bac37e69d7
Merge branch 'wip'
2016-06-15 05:24:15 -06:00
Scott Olson
b24edd6a23
Merge pull request #24 from oli-obk/typesafe_fn_calls
...
Typesafe fn calls
2016-06-15 05:05:50 -06:00
Oliver Schneider
d82a79220b
use the logging framework instead of println!
2016-06-15 13:00:51 +02:00
Oliver Schneider
a55ac1fea8
pass arguments to start
2016-06-15 12:55:04 +02:00
Scott Olson
16f778ad20
Rename next_block to block and reorganize Frame fields.
2016-06-14 20:13:59 -06:00
Scott Olson
269f70007f
Get the sysroot (like compiletest) in Miri itself.
2016-06-14 19:30:59 -06:00
Oliver Schneider
1bd00e8cb4
run start
and main
language item if provided
2016-06-14 11:52:45 +02:00
Oliver Schneider
c36dcff005
forbid calling functions through pointers of a different type
2016-06-14 10:34:54 +02:00
Oliver Schneider
55fd060cd8
don't use #[miri_run]
anymore, but execute the main
function
2016-06-13 15:33:05 +02:00
Oliver Schneider
fe9b455006
comment nit
2016-06-13 15:32:08 +02:00
Oliver Schneider
4d090fa693
report better errors when using a fn ptr as memory and vice versa
2016-06-13 11:39:15 +02:00
Oliver Schneider
3aa585e421
Merge remote-tracking branch 'origin/master' into function_pointers2
2016-06-13 11:24:01 +02:00
Scott Olson
024b3d2b45
Merge remote-tracking branch 'oli/function_pointers2' into fixup-function_pointers2
2016-06-11 16:46:01 -06:00
Scott Olson
1c58b7c2ed
Add hacky stub version of CheckedBinaryOp.
2016-06-11 13:10:42 -06:00
Scott Olson
71188ea2df
Remove inception test for now.
2016-06-11 13:10:25 -06:00
Scott Olson
947e9a5c31
Fix infinite loop when debug trace is disabled.
2016-06-11 12:38:50 -06:00
Scott Olson
781c3a6660
Update for changes in rustc nightly.
2016-06-11 12:38:28 -06:00
Oliver Schneider
384623daa7
function pointers
2016-06-10 18:06:36 +02:00
Oliver Schneider
67211218f0
display the full path to the function if no MIR is found
2016-06-10 18:04:12 +02:00
Oliver Schneider
9780729104
we already have the constant's type, no need to recompute from the def_id
2016-06-10 18:04:12 +02:00
Oliver Schneider
cea2a8ae9e
adjust lifetimes and bindings to the GlobalEvalContext -> EvalContext rename
2016-06-10 16:56:04 +02:00
Oliver Schneider
9c8f84caf7
style nit
2016-06-10 16:32:39 +02:00
Oliver Schneider
4fa328ef5f
remove unused method
2016-06-10 16:20:25 +02:00
Oliver Schneider
6af821f202
rename GlobalEvalContext to EvalContext
2016-06-10 16:20:17 +02:00
Oliver Schneider
b3c1713b89
expose a minimal API and use it in the binary
2016-06-10 13:01:51 +02:00
Oliver Schneider
3b804942fd
simplify the stepper interface
2016-06-10 12:34:15 +02:00
Oliver Schneider
8c3a066d8d
get rid of the constants cache in the stepper
...
this is possible due to the removal of `FnEvalContext`
2016-06-09 17:24:42 +02:00
Oliver Schneider
336206cec2
the type_size
method's substs
argument allows computing the locals before pushing the stack frame
2016-06-09 17:23:58 +02:00
Oliver Schneider
2dbd82d296
inline the call
method into interpret_start_points
2016-06-09 16:49:40 +02:00
Oliver Schneider
fc935c10f8
print errors in one central location
2016-06-09 16:13:42 +02:00
Oliver Schneider
ba9e25b2eb
No more terminators
2016-06-09 16:08:34 +02:00
Oliver Schneider
8fec1a7aa7
merge FnEvalContext into GlobalEvalContext
2016-06-09 16:01:53 +02:00
Oliver Schneider
05eaa522a5
rename static_item
to global_item
2016-06-09 11:27:12 +02:00
Oliver Schneider
040a501a68
make sure globals that yield function pointers aren't treated like functions
2016-06-09 11:27:02 +02:00
Oliver Schneider
225a6a272d
we already have the constant's type, no need to recompute from the def_id
2016-06-09 11:16:09 +02:00
Oliver Schneider
59d858a0b1
refactor away the closures and Event
enum
2016-06-09 10:56:23 +02:00
Oliver Schneider
cbbf58bbaa
the statement/terminator has already been computed, don't do it again
2016-06-08 12:47:24 +02:00
Oliver Schneider
2178961262
improve the docs of ConstantId
2016-06-08 12:35:15 +02:00
Oliver Schneider
240f0c0dd6
improve fn argument naming
2016-06-08 12:30:25 +02:00
Oliver Schneider
3868a62713
put ConstantId
's common fields into a struct
2016-06-08 11:46:37 +02:00
Oliver Schneider
3de30e33f5
no more function pointers
2016-06-08 11:34:56 +02:00
Oliver Schneider
8b25bc8a9a
directly push stackframes for constants when they are encountered
2016-06-08 11:11:33 +02:00
Oliver Schneider
6b939bbd79
rebase leftovers
2016-06-08 11:11:08 +02:00
Oliver Schneider
1f27d3f7b3
don't cache the MIR in the Stepper
2016-06-08 10:26:48 +02:00
Oliver Schneider
c881cf10d8
clippy nits
2016-06-08 09:41:28 +02:00
Oliver Schneider
f42be6db54
move load_mir to the global eval context
2016-06-08 09:41:25 +02:00
Oliver Schneider
4d44a970a3
move some methods from FnEvalContext to GlobalEvalContext
2016-06-08 09:38:59 +02:00
Oliver Schneider
4c833a54d2
globally cache statics and promoteds
2016-06-03 17:41:36 +02:00
Oliver Schneider
4743842821
move constants stack to stackframe
2016-06-03 17:08:51 +02:00
Oliver Schneider
02eed64cc0
update documentation
2016-06-03 17:04:08 +02:00
Oliver Schneider
346560b318
factor out the statement index into the stackframe
2016-06-03 16:57:47 +02:00
Oliver Schneider
f995db9ffb
store the current block in the frame
2016-06-03 16:51:51 +02:00
Oliver Schneider
cc1ca73f57
jit interpretation of constants
2016-06-03 15:48:56 +02:00
Oliver Schneider
05f829cc9f
merge the three stacks in the interpreter
2016-06-02 18:21:32 +02:00
Oliver Schneider
38ae3526e5
remove a debug message that snuck into the commit
2016-06-02 18:03:22 +02:00
Oliver Schneider
6ac64f19af
also step through promoteds, constants and statics
2016-06-02 17:05:17 +02:00
Oliver Schneider
5211178377
note that not all literal items are function pointers
2016-06-01 19:20:23 +02:00
Oliver Schneider
0c269a500c
rename iterator
module to stepper
2016-06-01 19:17:18 +02:00
Oliver Schneider
77e1ec2b49
style: spaces between functions
2016-06-01 19:01:40 +02:00