Commit Graph

1410 Commits

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