Commit Graph

209 Commits

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