Scott Olson
5f65ee2713
Refactor in preparation for Value
locals.
...
Turning locals into `Vec<Value>` will allow writing `PrimVal` results
directly into the locals array without creating `memory::Allocation`s
for every local.
This will entail passing around a generalized kind of `Lvalue` instead
of `Pointer`s for the destinations of operations. Replacing `Pointer`
with `Lvalue` is mostly done with this commit, but expanding `Lvalue`
will come later.
This commit turns every local from `Pointer` into `Value::ByRef(ptr)`.
Locals which are `Value::ByVal(prim_val)` will come in a later commit.
2016-10-14 03:31:45 -06:00
Oliver Schneider
5d1080d0ca
refactor Lvalue
and PrimVal::{SlicePtr, VtablePtr}
into Value::ByValPair
2016-09-26 17:49:30 +02:00
Oliver Schneider
fcbaf990f2
check Pointer::to_int
for non-integer pointers
2016-09-26 11:37:23 +02:00
Oliver Schneider
2282289ad5
refactor away intermediate allocations, stage1
2016-09-23 10:27:14 +02:00
Oliver Schneider
38748fa615
refactor away IntegerPtr
2016-09-22 15:47:16 +02:00
Scott Olson
5b012edc7a
Rename AbstractPtr to Ptr.
2016-09-21 23:23:50 -06:00
Scott Olson
c1ae916a64
Remove a few instances of eval_operand_to_ptr.
2016-09-19 19:01:28 -06:00
Scott Olson
20ced4a720
Replace const_to_ptr with const_to_value.
...
This reduces the number of allocations Miri makes drastically. The
`const_to_ptr` function was a lame hack that allocated for every since simple
constant, and all of those are avoided now, except for one extra allocation each
for string and bytestring literals which will be fixed in a followup commit.
There are a number of hacks such as `eval_operand_to_ptr` left over from this
commit, which will also be fixed in followup commits.
2016-09-19 02:19:34 -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
cd91f9feee
replace all unreachable!
and panic!
calls with bug!
2016-09-06 16:16:49 +02:00
Oliver Schneider
613d15c672
clippy
2016-07-07 13:19:17 +02:00
Oliver Schneider
7613ef0563
comparing floats is necessary in rare cases
2016-07-06 11:53:03 +02:00
Oliver Schneider
4b831569f6
implement floats by running the ops on the host architecture
2016-07-05 09:08:24 +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
b9ac85d2a9
rustc does overflow checking for us, don't duplicate it.
2016-06-20 16:52:43 +02:00
Oliver Schneider
e90ee1674a
fix comparing of function pointers
2016-06-20 10:35:15 +02:00
Oliver Schneider
58b4fac1ce
implement overflowing ops
2016-06-17 13:09:20 +02:00
Oliver Schneider
c36dcff005
forbid calling functions through pointers of a different type
2016-06-14 10:34:54 +02:00
Oliver Schneider
b78ca5f7e1
replace panic!
s with Result
2016-06-01 11:10:43 +02:00
Scott Olson
382dc0ccb2
Update for my github username change.
2016-05-09 20:08:37 -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
dbc9913b7d
Implement pointer primvals and comparison ops on them.
2016-03-18 23:03:46 -06:00
Scott Olson
4704bdca8d
Simplify PrimVals.
2016-03-17 03:12:15 -06:00
Scott Olson
9d1d96ce07
Add unsigned integers.
2016-03-14 23:03:31 -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
6b4d2b11a6
Add support for smaller signed integers.
2016-03-13 01:43:28 -06:00