Oliver Schneider
1b94e06a1a
ppaux::parameterized $sometimes panics, let's catch that.
2016-09-15 16:10:58 +02:00
Scott Olson
f731766805
Fix allocation of fn items by allowing ZST alignment to be 0.
2016-09-13 21:31:12 -06:00
Oliver Schneider
23eb8a5cf2
error on failed assumptions
2016-09-13 13:08:57 +02:00
Oliver Schneider
c57233abca
needless clones
2016-09-13 13:03:54 +02:00
Oliver Schneider
903bb97c17
needless references
2016-09-13 13:03:42 +02:00
Scott Olson
4051b0e36a
Merge pull request #53 from oli-obk/dont_touch_my_precious_constants
...
Detect modifications of immutable memory
2016-09-11 03:17:58 -06:00
Scott Olson
db7d842fb3
Fix comment wording.
2016-09-11 03:06:44 -06:00
Oliver Schneider
3c5f595d45
prevent the modification of vtables
2016-09-11 11:02:45 +02:00
Oliver Schneider
5c47e3dbd8
only allow the modification of static mut
or statics with interior mutability
2016-09-11 11:02:45 +02:00
Oliver Schneider
0e58c2a31b
document the fields of Allocation
2016-09-11 11:02:45 +02:00
Oliver Schneider
78bef956c9
don't load memory as mutable if not necessary
2016-09-11 11:02:45 +02:00
Scott Olson
5ac138c61f
Update for changes in rustc.
2016-09-10 20:59:23 -06:00
Oliver Schneider
3562118948
use canonical formatting of pub (super)
2016-09-10 15:14:49 +02:00
Oliver Schneider
bcda724c43
closures don't work yet
2016-09-09 15:44:35 +02:00
Oliver Schneider
00c551c5f0
implement calling methods through trait objects
2016-09-09 12:51:14 +02:00
Oliver Schneider
168d9e7745
don't use type_is_immediate
for finding fat ptr casts
2016-09-08 10:26:33 +02:00
Oliver Schneider
d627cc749f
use cheap assertions instead of expensive debug assertions
2016-09-08 10:25:45 +02:00
Oliver Schneider
0f177fdecf
implement more casts
2016-09-07 18:34:59 +02:00
Oliver Schneider
ad053d66fe
change the block and stmt position after a function call returns
...
previously we moved to the target block *before* calling a function, so when inspecting
the stack, it appeared as if we were in the first statement of the next block.
2016-09-07 12:48:29 +02:00
Scott Olson
be23dcdb8c
Merge pull request #47 from oli-obk/unreachable_bugs
...
replace all `unreachable!` and `panic!` calls with `bug!`
2016-09-07 02:53:33 -06:00
Oliver Schneider
7be27ecb53
forgot to insert a {} into the format string
2016-09-07 10:43:13 +02:00
Oliver Schneider
ca703f619c
DRY
2016-09-07 10:30:49 +02:00
Oliver Schneider
f5a89d297c
rustc now can use integer literals in attributes
2016-09-07 10:27:57 +02:00
Oliver Schneider
35e8882553
still use panic!
for missing MIR, because compiletest can't test compiler bugs
2016-09-07 10:27:32 +02:00
Oliver Schneider
7b24d55eca
address comments
2016-09-07 10:12:15 +02:00
Oliver Schneider
cd91f9feee
replace all unreachable!
and panic!
calls with bug!
2016-09-06 16:16:49 +02:00
Oliver Schneider
cd42bb97f0
rustup to rustc 1.13.0-nightly ( 91f057de3
2016-09-04)
2016-09-06 16:04:51 +02:00
Scott Olson
45cf3cfde2
Update for changes in rustc.
2016-08-27 01:44:54 -06:00
Oliver Schneider
f8cfc387fd
address nits
2016-07-25 12:30:35 +02:00
Oliver Schneider
ec897f9156
don't allow runtime-aligning of memory
2016-07-22 16:35:39 +02:00
Oliver Schneider
613d15c672
clippy
2016-07-07 13:19:17 +02:00
Oliver Schneider
4c258d1ed2
Merge remote-tracking branch 'origin/master' into alignment
2016-07-07 13:17:08 +02:00
Oliver Schneider
44bef25235
allocating memory for floats can fail, too
2016-07-07 11:30:00 +02:00
Oliver Schneider
9669acc3a3
Merge remote-tracking branch 'origin/master' into the_outer_limits
2016-07-07 11:27:49 +02:00
Oliver Schneider
5381981446
shrink_to_fit some vectors to prevent interpreted code from passing the memory limits
2016-07-07 11:21:18 +02:00
Oliver Schneider
8d3817cfc6
use usize instead of u64 for memory limits
2016-07-07 11:20:46 +02:00
Oliver Schneider
a7d3a85d9e
infer type of the various limits
2016-07-07 11:20:09 +02:00
Oliver Schneider
7d2803ae3f
remove unused extern crate
2016-07-07 11:19:55 +02:00
Oliver Schneider
7613ef0563
comparing floats is necessary in rare cases
2016-07-06 11:53:03 +02:00
Oliver Schneider
51ce4a2584
use byteorder's write_f{32,64} instead of transmuting
2016-07-06 11:51:32 +02:00
Oliver Schneider
1bd8e04228
check alignment in various places
2016-07-06 11:12:44 +02:00
Oliver Schneider
50987e3697
some methods to check pointers for correct alignment
2016-07-06 10:58:51 +02:00
Oliver Schneider
7161c72320
abi alignment is the correct one
2016-07-06 10:58:26 +02:00
Oliver Schneider
082effb3ee
align allocations in the worst possible way
2016-07-05 14:27:27 +02:00
Oliver Schneider
4781a6ba54
add attribute to limit the stack size
2016-07-05 13:23:58 +02:00
Oliver Schneider
88d98998e1
add execution time limit
2016-07-05 13:17:40 +02:00
Oliver Schneider
1444cabc08
make the memory limit configurable
2016-07-05 13:04:46 +02:00
Oliver Schneider
756fbcce48
add a memory limit
2016-07-05 10:47:10 +02:00
Oliver Schneider
4b831569f6
implement floats by running the ops on the host architecture
2016-07-05 09:08:24 +02:00
Scott Olson
a7cc77a010
Compare against ZST_ALLOC_ID in points_to_zst.
2016-07-01 16:40:52 -06:00
Oliver Schneider
3d9588332f
address comments
2016-07-01 13:09:40 +02:00
Oliver Schneider
594f1d79da
optimize all ZST allocations into one single allocation
2016-07-01 13:09:17 +02:00
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
Oliver Schneider
2405c81c65
stepwise interpretation
2016-06-01 18:50:20 +02:00
Oliver Schneider
5a8b0ab579
don't clone the MIR Rc in every iteration
2016-06-01 18:50:20 +02:00
Oliver Schneider
8398781132
remove one layer of indirection when interpreting const/static/main functions
2016-06-01 18:50:20 +02:00
Oliver Schneider
e73fa7733d
can't evaluate failed assertions yet
2016-06-01 18:50:20 +02:00
Oliver Schneider
fee3a2c1a7
remove intermediate vars
2016-06-01 18:42:57 +02:00
Oliver Schneider
af41c54301
use format! compile time magics for indentation
2016-06-01 18:33:29 +02:00
Oliver Schneider
c62cce3116
wraparound when reaching indentation lvl 40
2016-06-01 18:18:01 +02:00
Oliver Schneider
b7df4fdc75
use a number for the maximum indentation instead of relying on str::len()
2016-06-01 17:58:50 +02:00
Oliver Schneider
f9a5416135
use MIRI_LOG instead of RUST_LOG, because rustc's output is very verbose
2016-06-01 17:32:57 +02:00
Oliver Schneider
f1e4ef6c6f
re-introduce the module name to the logs and show vertical bars
2016-06-01 11:47:55 +02:00
Oliver Schneider
4f3f2020ed
add the log
crate + env_logger
to be able to choose the log granularity at runtime
2016-06-01 11:47:41 +02:00
Oliver Schneider
f910019da1
add a note to Memory::new mentioning tcx.data_layout
2016-06-01 11:24:23 +02:00
Oliver Schneider
29516c3129
improve out of bounds error message
2016-06-01 11:22:37 +02:00
Oliver Schneider
12c2e5fab2
4byte pointers
2016-06-01 11:10:43 +02:00
Oliver Schneider
b78ca5f7e1
replace panic!
s with Result
2016-06-01 11:10:43 +02:00
Oliver Schneider
cecae8050e
remove unnecessary printlns for benchmarks
2016-05-30 13:40:46 +02:00
Oliver Schneider
c55b3666ea
clippy nit
2016-05-27 16:12:17 +02:00
Scott Olson
8961063c60
Handle some cases of StructWrappedNullablePointer.
...
... plus a bunch of minor refactorings.
2016-05-25 00:39:12 -06:00
Scott Olson
3ba923701f
Update for changes in rustc nightly.
2016-05-13 22:34:50 -06:00
Scott Olson
f63206ed2f
Handle discriminant_value intrinsic.
2016-05-09 23:41:57 -06:00
Scott Olson
2d32503409
Support C ABI memcmp function.
2016-05-09 21:53:20 -06:00
Scott Olson
b9c37124be
Handle size_of_val for slice types.
2016-05-09 21:01:12 -06:00
Scott Olson
6d9a748858
Handle size_of_val for sized types.
2016-05-09 20:44:42 -06:00
Scott Olson
382dc0ccb2
Update for my github username change.
2016-05-09 20:08:37 -06:00
Scott Olson
ddfbb655e1
Handle statics.
2016-05-09 20:03:13 -06:00
Scott Olson
b859444562
Do or do not.
2016-05-09 18:52:53 -06:00
Scott Olson
753971a4c5
Handle promoted rvalues by recursing with call_nested.
2016-05-09 18:21:52 -06:00
Scott Olson
49b6349577
Update to a new nightly.
2016-05-09 15:32:18 -06:00
Scott Olson
a6b9b165c3
Handle CEnum layouts with signed representations.
2016-05-08 19:49:07 -06:00
Scott Olson
5f07e2ebd3
Merge branch 'new-data-layout'
2016-05-08 19:31:28 -06:00
Scott Olson
d288472b29
Handle CEnum layouts with unsigned representations.
2016-05-08 19:29:07 -06:00
Scott Olson
9e289fa0aa
Fully handle RawNullablePointer layout.
2016-04-30 01:04:17 -06:00
Scott Olson
30f07f3d7f
Re-implement support for downcast lvalues.
2016-04-29 23:32:15 -06:00
Andre Bogus
7cb6c0dbfe
back out similar_names change
2016-04-29 17:47:10 +02:00
Andre Bogus
de64670de0
Fixed some clippy warnings
2016-04-29 06:01:17 +02:00
Scott Olson
3fd2ee9ddc
Remove unused eval_operand_and_layout fn.
2016-04-23 20:46:27 -06:00
Scott Olson
500cd25627
Add missing boolean binops.
2016-04-23 20:13:00 -06:00
Scott Olson
2db3597b56
Implement boolean binops.
2016-04-23 00:39:38 -06:00
Scott Olson
6f50289d43
Fix lvalue projections with fat pointer bases.
2016-04-23 00:26:10 -06:00
Scott Olson
4a863c2a6a
Replace Repr with the new ty::layout in rustc.
...
Lvalues still need work (see lvalue_layout).
2016-04-23 00:03:59 -06:00
Oliver Schneider
ef5fc75c35
various testing improvements
2016-04-22 20:09:00 +02:00
Oliver Schneider
211c12a1d0
use compiletest_rs
2016-04-22 10:34:14 +02:00
Scott Olson
e81d88d236
Use 8-byte pointers on 32-bit hosts for now.
...
This will be target-dependent and host-independent eventually.
2016-04-15 03:28:18 -06:00
Scott Olson
84f21584ea
Fix drop fill checking on 32-bit hosts.
2016-04-15 03:16:35 -06:00
Scott Olson
926bbba459
Fix over-long bitshift on 32-bit hosts.
...
Fixes #4 . (Hopefully.)
2016-04-14 17:39:06 -06:00
Pascal Hertleif
6abfa56b20
Update to Rust Nightly 2016-04-11
2016-04-14 00:01:00 +02:00
Scott Olson
a69ad6703f
Store AllocIds directly in allocation map.
2016-04-09 19:31:53 -06:00
Scott Olson
910ad2a391
Implement filling drop.
2016-04-07 05:56:07 -06:00
Scott Olson
6be14eab15
Handle missing allocations in Memory::dump.
2016-04-07 03:07:57 -06:00
Scott Olson
1f6583fe06
Implement drop/deallocation for Box.
2016-04-07 03:02:02 -06:00
Scott Olson
bef57b291b
Simplify intrinsic/c_abi call argument evaluation.
2016-04-07 02:02:30 -06:00
Scott Olson
f97eb35222
Change debug log format.
2016-04-06 19:28:40 -06:00
Scott Olson
6a99779740
Rename ty_size -> type_size and ty_to_repr -> type_repr.
2016-04-06 19:01:00 -06:00
Scott Olson
c55320a3db
Update for changes in rustc master.
2016-04-06 19:00:34 -06:00
Scott Olson
f4dce09c97
Print sizes in allocation dumps.
2016-04-06 17:33:24 -06:00
Scott Olson
f472018fbb
Partially implement reallocation (e.g. for growing Vecs).
2016-04-06 17:29:56 -06:00
Scott Olson
284404da06
Fix undef mask initialization and test undef reads.
2016-04-06 04:35:25 -06:00
Scott Olson
dbd8a82643
Add a test for overwriting part of a relocation.
2016-04-06 04:19:56 -06:00
Scott Olson
c08ddaaa48
Implement a naive, slow version of undef mask copying.
2016-04-06 04:08:52 -06:00
Scott Olson
8a0aa9291a
Switch to bitmask-based undef mask.
2016-04-06 03:45:06 -06:00
Scott Olson
bdba4641cc
Rearrange code in memory.rs.
2016-04-04 20:33:41 -06:00
Scott Olson
682742c223
Print terminator kinds (without spans) when debugging.
2016-04-04 20:07:22 -06:00
Scott Olson
e72d8f8dc6
Update for changes in rustc master.
2016-03-31 22:34:07 -06:00
Scott Olson
d25ddb3130
Add stack traces to error notes.
2016-03-30 22:04:53 -06:00
Scott Olson
17df5cfec3
Move substs stack management into main stack managment fns.
2016-03-29 22:13:31 -06:00
Scott Olson
6a8bb2c1c0
Add initial error reporting via rustc's interface.
2016-03-29 19:09:32 -06:00
Scott Olson
e4dcdcab65
Remove unnecessary Result return in push_stack_frame.
2016-03-29 19:08:45 -06:00
Scott Olson
63fdd46f9a
Handle custom discriminant values and detect invalid discriminants.
2016-03-28 21:08:16 -06:00
Scott Olson
1861dbc2ab
Update for changes in rustc master.
2016-03-28 17:43:23 -06:00
Scott Olson
62294d0c42
Mark bytes undefined in uninit intrinsic.
2016-03-28 16:37:07 -06:00
Scott Olson
56e118f86c
Mark partially-overwritten relocations as undefined.
2016-03-27 00:29:02 -06:00
Scott Olson
62fab9268e
Fix bug where &str's lengths were not copied.
2016-03-26 23:57:14 -06:00
Scott Olson
acf2ceb534
Check for undefinedness when reading from memory.
2016-03-26 23:56:49 -06:00
Scott Olson
68ccf3904e
Add method for checking if a range is defined in an allocation.
2016-03-26 23:25:35 -06:00
Scott Olson
33e924d383
Add undefined byte tracking.
2016-03-26 22:25:08 -06:00
Scott Olson
5451b6115b
Reorganize memory methods.
2016-03-23 21:40:58 -06:00
Scott Olson
87458955dd
Refactor memory/allocation handling.
2016-03-23 19:44:05 -06:00
Scott Olson
f96c76e878
Use Box<[u8]> instead of Vec<u8> for allocations.
2016-03-22 00:48:28 -06:00
Scott Olson
e6c58d8277
Assert the absence of fat pointers more often.
2016-03-21 18:51:08 -06:00
Scott Olson
69c41f5372
Write the correct size for PrimVall::IntegerPtr.
2016-03-21 05:42:42 -06:00
Scott Olson
600ff26e65
Refactor handling of relocations.
2016-03-21 05:27:34 -06:00
Scott Olson
59e25cc52c
Hide execution traces (they are getting long...)
2016-03-21 04:19:27 -06:00
Scott Olson
3fc9b7dd2c
Make more MIR match statements exhaustive.
2016-03-21 04:01:52 -06:00
Scott Olson
69f41facb9
Support intrinsics::overflowing_sub for vec![x; n].
2016-03-21 03:42:34 -06:00
Scott Olson
dc5fbf17ca
Support [x; N] array repeat rvalues.
2016-03-21 03:34:24 -06:00
Scott Olson
6eef7cc01a
Make mir::Rvalue handling exhaustive (some still unimplemented).
2016-03-21 03:19:48 -06:00
Scott Olson
877d2d900e
Abort miri if the Rust code had compilation errors.
2016-03-21 02:54:20 -06:00
Scott Olson
207463d9a0
Add array indexing for-loop test.
2016-03-21 02:37:31 -06:00
Scott Olson
2994732a81
Remove debug print.
2016-03-21 01:04:50 -06:00
Scott Olson
0de1bbefd5
Refactor isize/usize read/writes.
2016-03-20 23:24:27 -06:00
Scott Olson
95e225d765
Monomorphize lvalue types.
2016-03-20 23:11:06 -06:00
Scott Olson
49e8d3ef5e
Simplify handling of Result in eval_assignment.
2016-03-20 23:09:27 -06:00
Scott Olson
f7d0e0423b
Support fat pointer reborrowing, length checking.
2016-03-20 22:59:13 -06:00
Scott Olson
dbd01d071a
Refactor some names.
2016-03-20 22:07:25 -06:00
Scott Olson
40d0a1f67f
Implement length access and indexing for fixed-sized arrays.
2016-03-20 21:30:31 -06:00
Scott Olson
62c5083f30
Reduce duplication for integer reprs.
2016-03-20 20:33:46 -06:00
Scott Olson
c8781e3c01
Support fn pointer type sizes.
2016-03-20 20:16:40 -06:00
Scott Olson
2e12b220be
Stop unintentionally clearing source relocations when copying.
2016-03-20 20:15:13 -06:00
Scott Olson
493b5f649c
Implement the move_val_init intrinsic.
2016-03-20 19:23:57 -06:00
Scott Olson
28ccc2bf65
Implement the __rust_allocate C ABI function.
2016-03-20 18:41:39 -06:00
Scott Olson
6a000b37cc
Simplify Misc casts (still incorrect).
2016-03-19 11:07:19 -06:00
Scott Olson
20f152296a
Implement min_align_of and a hacky mul_with_overflow.
2016-03-19 11:01:33 -06:00
Scott Olson
6c6cea28bd
Write intrinsic result to correct lvalue.
2016-03-19 10:01:53 -06:00
Scott Olson
1eb66b6701
Handle "offset" intrinsic on integer pointers.
2016-03-19 09:09:13 -06:00
Scott Olson
668f2b6fd4
Implement bytestring literals.
2016-03-18 23:20:59 -06:00
Scott Olson
26c4772f51
Implement string literals.
2016-03-18 23:19:39 -06:00
Scott Olson
5d4a804100
Implement the dummy 'assume' intrinsic.
2016-03-18 23:04:07 -06:00
Scott Olson
dbc9913b7d
Implement pointer primvals and comparison ops on them.
2016-03-18 23:03:46 -06:00
Scott Olson
81f49ed1c0
Implement transmute.
2016-03-18 12:42:09 -06:00
Scott Olson
de10839f96
Avoid an integer underflow error.
2016-03-18 12:11:57 -06:00
Scott Olson
e910d40e6a
Add error message for missing MIR.
2016-03-18 12:11:39 -06:00
Scott Olson
31b8c17770
Reformat for consistency.
2016-03-18 11:53:24 -06:00
Scott Olson
b1af71e217
Implement more intrinsics.
2016-03-18 11:52:28 -06:00
Scott Olson
ee47ce3978
Normalize associated types when monomorphizing.
2016-03-18 11:52:13 -06:00
Scott Olson
27ff9ab914
Add initial support for closures.
2016-03-18 10:48:31 -06:00
Scott Olson
f8f31ea549
Remove some TODOs.
2016-03-17 08:01:34 -06:00
Scott Olson
12457607c3
Choose pointer size dynamically.
2016-03-17 07:53:26 -06:00
Scott Olson
0b37be71c2
Change invalid pointer read panic into Err.
2016-03-17 07:24:10 -06:00
Scott Olson
6477a5c694
Fix boolean tests and clean up code.
2016-03-17 06:39:29 -06:00
Scott Olson
0a8491b985
Simplify integer reading/writing.
2016-03-17 06:26:37 -06:00
Scott Olson
961137c018
Remove fn_ty argument from call_intrinsic for now.
2016-03-17 06:04:24 -06:00
Scott Olson
36dfde50f4
Extract intrinsic function handling.
2016-03-17 06:00:27 -06:00
Scott Olson
e057a156f2
Shorten ty_to_repr(ty).size() to ty_size(ty).
2016-03-17 05:49:16 -06:00
Scott Olson
49a26b93ca
whitespace.
2016-03-17 05:40:56 -06:00
Scott Olson
20da5cacc6
Cached those outputs.
2016-03-17 05:40:27 -06:00
Scott Olson
19bf6eec6b
Arena allocate and cache type representations.
2016-03-17 05:32:00 -06:00
Scott Olson
432619ea5e
Use total size instead of max variant size in aggregates.
2016-03-17 04:57:50 -06:00
Scott Olson
573c11cef5
Simplify make_aggregate_repr.
2016-03-17 04:55:12 -06:00
Scott Olson
3ebf5063a4
Merge sum and product representations.
2016-03-17 04:38:46 -06:00
Scott Olson
71ed952465
Simplify primitive type reprs.
2016-03-17 03:36:06 -06:00
Scott Olson
c55d4b07fd
Fix typo.
2016-03-17 03:20:49 -06:00
Scott Olson
7698a85d01
Simplify Repr::Array's elem size.
2016-03-17 03:19:13 -06:00
Scott Olson
4704bdca8d
Simplify PrimVals.
2016-03-17 03:12:15 -06:00
Scott Olson
abd235837a
Simplify FieldRepr sizes.
2016-03-17 03:11:40 -06:00
Scott Olson
a1fc284559
Simplify some Repr code.
2016-03-17 02:53:03 -06:00
Scott Olson
aa791a4085
Add fixmes to horrible casting code.
2016-03-17 01:11:06 -06:00
Scott Olson
d3b47c418f
WIP: Support array indexing including a get_unchecked
test.
...
Required supporting:
* Trait method lookup
* The `offset` intrinsic
* Fat pointers
* Unsizing coercions and some raw pointer and integer casts
2016-03-16 23:28:49 -06:00
Scott Olson
59cf49baf4
Create a pointer-only version of eval_operand. Fix pointer offset.
2016-03-16 23:28:09 -06:00
Scott Olson
3ab619c5c3
Update for changes in rustc master.
2016-03-15 16:09:08 -06:00
Scott Olson
c18e7a68fb
Split Repr creation out of eval_lvalue.
2016-03-15 07:13:31 -06:00
Scott Olson
8f84d3abc6
Implement fixed-sized arrays.
2016-03-15 05:51:02 -06:00
Scott Olson
40462d64ef
Implement the size_of intrinsic.
2016-03-15 00:45:25 -06:00
Scott Olson
9d1d96ce07
Add unsigned integers.
2016-03-14 23:03:31 -06:00
Scott Olson
9e1bb9841e
Fix substs in nested generic function calls.
2016-03-14 22:26:39 -06:00
Scott Olson
fbb9dd260d
Clarify output allocations.
2016-03-14 22:08:38 -06:00
Scott Olson
b1475e5cd4
Implement Rvalue::Box allocations.
2016-03-14 22:05:50 -06:00
Scott Olson
a7c7764c93
Reorganize and simplify.
2016-03-14 21:48:00 -06:00
Scott Olson
f74d1dc7f1
Improve execution trace logging.
2016-03-14 21:29:25 -06:00
Scott Olson
4a22283d8b
Extract Terminator evaluation out of the main loop.
2016-03-14 21:18:39 -06:00
Scott Olson
7bac5963b9
Handle recursive calls without recursing in miri.
2016-03-14 20:39:51 -06:00
Scott Olson
66eb109070
Properly handle generic fn calls.
2016-03-13 18:33:26 -06:00
Scott Olson
1a27734a7b
Reimplement cross-crate function calls.
2016-03-13 17:19:42 -06:00
Scott Olson
7740268dd5
Reimplement crate-local function calls.
2016-03-13 16:08:23 -06:00
Scott Olson
373f8a7a87
Fix typo.
2016-03-13 14:46:24 -06:00
Scott Olson
f145017319
Add support for pointers.
2016-03-13 14:36:25 -06:00
Scott Olson
250e9615c5
Remove unused variable.
2016-03-13 08:01:22 -06:00
Scott Olson
2105914886
Remove old commented-out code.
2016-03-13 07:40:52 -06:00
Scott Olson
9aa3a8675f
Reimplement variant downcast projection.
2016-03-13 07:23:48 -06:00
Scott Olson
dd3d58f249
Reimplement field lvalue projection.
2016-03-13 06:48:04 -06:00
Scott Olson
6d37e7fc29
Reimplement sum type switching.
2016-03-13 06:30:28 -06:00
Scott Olson
80d12601ff
Write enum discriminants.
2016-03-13 06:05:48 -06:00
Scott Olson
cc8b8efd33
Allow switching on non-integer types.
2016-03-13 04:50:16 -06:00
Scott Olson
96c51dc8ed
Make sum repr discriminant an arbitrary repr.
2016-03-13 01:55:48 -06:00
Scott Olson
dad5edd4f3
Unnest integer reprs.
2016-03-13 01:48:07 -06:00
Scott Olson
6b4d2b11a6
Add support for smaller signed integers.
2016-03-13 01:43:28 -06:00
Scott Olson
c1edb9f978
More work for multiple int sizes.
2016-03-13 01:14:20 -06:00
Scott Olson
397dbd909a
Add initial support for different int sizes.
2016-03-12 23:15:53 -06:00
Scott Olson
7cda22f8c5
Add initial enum initialization support.
2016-03-12 22:27:54 -06:00
Scott Olson
1370008576
Restructure aggregates and pave the way for enums.
2016-03-12 22:15:59 -06:00
Scott Olson
346618cd2b
Fix 0-sized writes being treated as out of bounds.
2016-03-12 21:32:05 -06:00
Scott Olson
bffbb89354
Update for changes in rustc master.
2016-03-12 20:23:48 -06:00
Scott Olson
8a0b95bc8b
Support structs and single-variant enums.
2016-03-11 21:27:54 -06:00
Scott Olson
fd10ec9278
Clean up unused things.
2016-03-07 10:14:47 -06:00
Scott Olson
0cb7e3fae0
Support SwitchInt for integer types.
2016-03-07 08:22:18 -06:00
Scott Olson
e41af43dbf
Re-add support for integer unary ops.
2016-03-07 07:57:08 -06:00
Scott Olson
f72b0c9b12
Make formatting consistent.
2016-03-07 07:50:49 -06:00
Scott Olson
619daf0129
Re-add support for integer binops.
2016-03-07 07:48:38 -06:00
Scott Olson
83adde623f
Simplfy memory allocation.
2016-03-07 07:19:43 -06:00
Scott Olson
3ae6b80ab1
Remove Pointer's repr field and make it Copy.
...
This required refactoring throughout and math operators have been temporarily
commented out.
2016-03-07 07:10:52 -06:00
Scott Olson
6d6cd1f420
Rename 'block' to 'current_block'.
2016-03-07 04:50:44 -06:00
Scott Olson
586bc5d1da
Reimplement 'if' conditions.
2016-03-07 04:48:12 -06:00
Scott Olson
a1adc55370
Add basic bool support.
2016-03-07 04:44:03 -06:00
Scott Olson
d330bd6a32
Glob import variants before matching and simplify some code.
2016-03-07 04:10:57 -06:00
Scott Olson
4f4e0b5051
Implement a call stack using the new memory system.
2016-03-06 04:23:24 -06:00
Scott Olson
e784659568
Sort imports.
2016-03-05 00:52:14 -06:00
Scott Olson
b0683c4c72
Remove Allocation's Clone impl.
2016-03-05 00:50:53 -06:00
Scott Olson
7c5ea62156
Move memory module to its own file.
2016-03-05 00:48:23 -06:00
Scott Olson
a29a6e0db9
Refactor integer reading and writing.
2016-03-05 00:45:54 -06:00
Scott Olson
6686944ded
Refactor memory range access error checnking.
2016-03-05 00:23:37 -06:00
Scott Olson
45677b453c
Rename memory "values" to "allocations".
2016-03-04 23:44:49 -06:00
Scott Olson
3d9a91d0f7
Remove alloc_id_hack.
2016-03-04 23:22:41 -06:00
Scott Olson
53403ee8bd
WIP: Add some support for tuples. Optimize memory copies.
2016-03-04 23:22:24 -06:00
Scott Olson
83fbfb95c0
WIP: Add EvalError/EvalResult and apply throughout.
2016-02-28 01:07:03 -06:00
Scott Olson
255927bc0c
WIP: Support unary integer ops again.
2016-02-28 00:49:27 -06:00
Scott Olson
21f97a436b
WIP: Rename eval_constant to const_to_ptr.
2016-02-27 22:10:10 -06:00
Scott Olson
2776f55d0c
WIP: Switching to a new byte-based value representation.
2016-02-27 19:20:25 -06:00
Scott Olson
b263886598
Update for changes in rustc master.
2016-02-25 16:06:50 -06:00
Scott Olson
d4c0ef420d
Remove old comments.
2016-02-18 19:24:42 -06:00
Scott Olson
1c7738d38a
Update for changes in rustc master.
2016-02-18 19:06:22 -06:00
Scott Olson
416bc12669
Update for changes in rustc master.
2016-01-11 20:30:15 -06:00
Scott Olson
685d9f7e39
Match Terminators exhaustively.
2016-01-07 16:08:53 -06:00
Scott Olson
56ceebf869
Update for changed in Rust master.
2016-01-06 21:05:08 -06:00
Scott Olson
a3ca2db48a
Add support for references.
2015-12-28 22:24:05 -06:00
Scott Olson
fbf49715c9
Update for upstream addition of ItemKind.
2015-12-18 22:22:34 -06:00
Scott Olson
df96c61591
Implement cross-crate fn calls by loading Mir from crate metadata.
2015-12-17 14:03:01 -06:00
Scott Olson
5e0ba54d00
Move miri binary source into src/bin.
2015-12-12 00:46:03 -06:00
Scott Olson
96128cff85
Update for changes in rustc.
2015-12-12 00:43:29 -06:00
Scott Olson
caaec388b5
Update for changes in rustc.
2015-12-04 13:11:32 -06:00
Scott Olson
064c3521c3
Restructure into separate binary and library.
2015-11-21 21:20:06 -06:00
Scott Olson
2010b14ac8
Add initial support for matching on enums.
...
This adds support for:
* the Switch terminator
* the Downcast projection rvalue
* the Index projection rvalue
2015-11-21 01:31:09 -06:00
Scott Olson
12bce479b3
Support ADT aggregate rvalues and allocation.
2015-11-21 01:07:32 -06:00
Scott Olson
e05df509fb
Refactor push_stack_frame.
2015-11-20 20:52:33 -06:00
Scott Olson
0a2f43e553
Write fn call return values directly into an lvalue the caller provides.
2015-11-20 20:49:25 -06:00
Scott Olson
aa4b82209e
Fix another long line.
2015-11-20 16:18:46 -06:00
Scott Olson
651896a0ae
Fix an overlong line formatting issue.
2015-11-20 16:16:34 -06:00
Scott Olson
39d9d40e40
Remove glob uses and slightly refactor.
2015-11-20 15:54:02 -06:00
Scott Olson
fae7a5685f
Refactor stack frames and pointers in preparation for aggregates like ADTs.
2015-11-20 15:34:28 -06:00
Scott Olson
f674aeba97
Add a constant flag to enable and disable execution trac printouts.
2015-11-20 15:32:39 -06:00
Scott Olson
c7244afea1
Implement SwitchInt (for some match expressions).
2015-11-19 16:49:13 -06:00
Scott Olson
7ce6a250d4
Implement function calls.
2015-11-19 07:07:47 -06:00
Scott Olson
7112fc8cd1
Handle Goto, Panic, and If terminators properly.
2015-11-19 03:23:50 -06:00
Scott Olson
c37b2bba05
Add call frames to track offsets of values in the value stack.
2015-11-16 15:22:27 -06:00
Scott Olson
fa1c04f194
Factor out lvalue evaluation and use a single value stack.
2015-11-14 01:19:07 -06:00
Scott Olson
694facf395
Factor out constant evaluation.
2015-11-12 17:44:29 -06:00
Scott Olson
71f70e95ed
Implement unary operators for integers.
2015-11-12 17:24:43 -06:00
Scott Olson
b099391aaf
Check actual vs. expected values.
2015-11-12 17:11:41 -06:00
Scott Olson
7453761405
Implement all binary operations on ints.
2015-11-12 16:13:35 -06:00
Scott Olson
4e80530bdb
Sort uses.
2015-11-12 16:13:22 -06:00
Scott Olson
cf49d6b080
Add the interpreter from my rustc branch and hook it up to CompileController.
2015-11-12 15:50:58 -06:00