Commit Graph

541 Commits

Author SHA1 Message Date
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