Commit Graph

680 Commits

Author SHA1 Message Date
Oliver Schneider
893f16389e
run drop on array elements 2016-11-04 17:34:33 +01:00
Oliver Schneider
5ef7924aa9
call drop for all elements of an owned slice 2016-11-04 16:51:43 +01:00
Oliver Schneider
c4c8764f53
generate a drop method pointer in the vtable and process it 2016-11-04 16:38:04 +01:00
Oliver Schneider
bd6e52d831
fix the drop_in_place intrinsic for fat pointers 2016-11-04 16:37:12 +01:00
Oliver Schneider
0420c27c8e
fix drop ordering and forward fat pointer extras to fields
this doesn't yet use the fat pointer extras
2016-11-04 15:55:05 +01:00
Oliver Schneider
859b7049c8
add method to ensure that a Value::ByRef is now a Value::ByVal* 2016-11-04 15:49:51 +01:00
Oliver Schneider
8003c570d8
don't panic on pointer to value comparison in primvals 2016-11-04 15:49:14 +01:00
Oliver Schneider
b12e7224af
move method to function so it can be used in map iterators without borrowing self 2016-11-04 15:48:45 +01:00
Oliver Schneider
73d7f1d41b
implement drop for NonZero optimized enums 2016-11-04 09:34:54 +01:00
Oliver Schneider
ff95efc525
Revert "Fix tests broken by std::vec::SetLenOnDrop."
This reverts commit 366c793306.
2016-11-04 09:15:59 +01:00
Oliver Schneider
bd25230882
nit: move if let into match 2016-11-04 09:15:31 +01:00
Oliver Schneider
2a35b3e322
call user defined drop impls 2016-11-03 17:32:37 +01:00
Oliver Schneider
1e0d5b817d
implement a bunch of intrinsics 2016-11-03 17:32:06 +01:00
Oliver Schneider
e406099348
sanity check that boxes of zsts don't deallocate the zst allocation 2016-11-03 16:01:14 +01:00
Oliver Schneider
50fd0765b5
call drop "glue" for enums 2016-11-03 15:55:09 +01:00
Oliver Schneider
b90cc77bac
basic struct and tuple drop "glue" 2016-11-03 15:22:39 +01:00
Oliver Schneider
feefb66ebd
recursively drop Box<Box<...Box<T>...>> 2016-11-03 13:30:54 +01:00
Oliver Schneider
a1acd9405d
don't allocate on drop calls 2016-11-03 13:27:35 +01:00
Oliver Schneider
a9b984d21e
don't always allocate for the uninit intrinsic 2016-11-03 13:13:47 +01:00
Oliver Schneider
92f6874ead
enable code sharing between global and local access 2016-11-03 12:52:13 +01:00
Oliver Schneider
bf73e7581e
don't always allocate during init intrinsic processing 2016-11-03 12:31:04 +01:00
Oliver Schneider
b3bf730513
don't panic on invalid primval types, report an error instead 2016-11-03 12:30:41 +01:00
Oliver Schneider
19c44dab05
rustup to rustc 1.14.0-nightly (7c69b0d5a 2016-11-01) 2016-11-03 10:38:08 +01:00
Scott Olson
c50c6e52da Merge pull request #72 from bluss/rustup
rustup to rustc 1.14.0-nightly (3f4408347 2016-10-27)
2016-11-01 15:59:24 -07:00
bluss
277a1ee869 rustup to rustc 1.14.0-nightly (3f4408347 2016-10-27) 2016-11-01 23:26:04 +01:00
Scott Olson
5f1120299c Merge pull request #70 from plietar/patch-1
README.md: Fix logging environment variable name
2016-10-31 17:02:06 -07:00
Paul Lietar
9ffc43e639 README.md: Fix logging environment variable name 2016-10-31 16:37:54 +00:00
Scott Olson
c148d887e3 Merge pull request #69 from oli-obk/master
don't force allocations for most casts
2016-10-21 11:06:19 -06:00
Oliver Schneider
073f91654c
don't force allocate for most Unsize casts
only Arc<T> -> Arc<Trait> unsize casts are left
2016-10-21 15:18:12 +02:00
Oliver Schneider
9af5a0a420
don't force allocate for UnsafeFnPointer casts 2016-10-21 14:55:49 +02:00
Oliver Schneider
eb08a2e646
don't force allocate for ReifyFnPointer casts 2016-10-21 14:54:37 +02:00
Oliver Schneider
512f344a3b
don't force allocate for Misc casts 2016-10-21 13:56:38 +02:00
Scott Olson
7f3cb7fdb8 Merge pull request #68 from oli-obk/master
priroda requirements + static impl
2016-10-21 04:08:20 -06:00
Oliver Schneider
edc6b93b85
adjust some comments referencing locals 2016-10-21 12:03:34 +02:00
Oliver Schneider
9d0b903d9d
remove GlobalKind 2016-10-21 11:54:38 +02:00
Oliver Schneider
e82e6132ec
preemptively change some assertions into errors 2016-10-21 11:51:24 +02:00
Oliver Schneider
2f81729e76
rename more [Ss]tatic* to [Gg]lobal* 2016-10-21 11:48:56 +02:00
Oliver Schneider
d3b3c56b07
rename statics/Constant/ConstantId/ConstantKind to [gG]lobal* 2016-10-21 11:39:39 +02:00
Oliver Schneider
f6bbea0f08
choose better function and argument names 2016-10-21 11:24:10 +02:00
Oliver Schneider
9e9586da95
constant ids are Copy now 2016-10-21 11:21:52 +02:00
Scott Olson
e7bcf35f8a Simplify PrimValKind and remove a horrible hack.
This takes the `AllocId` out of PrimValKind, replacing it with a
`relocation` field on `PrimVal`, which is closer to an earlier design
for `PrimVal` I discussed with @eddyb.

This commit prepares the code for removing the `PrimValKind` from
`PrimVal` and making them more pure bitbags. The only code dealing with
`PrimValKind` will be code making decisions like "what kind of operation
do I need to do on these bits", like operators and casting. Transmutes
of `PrimVal`s will become true no-ops, not even adjusting a `kind`
field.

This commit also removes my horrible `value_to_primval` hack that made
an allocation for every `ByVal` passed in, so it could use `read_value`
to get a `PrimVal` with the right kind. Now I just compute the
`PrimValKind` from the `Ty` and re-tag the `PrimVal`.

The code got slightly messier in some areas here, but I think a _lot_ of
code will simplify in obvious ways once I remove the `kind` field from
`PrimVal`.

Gosh, if my commit messages aren't turning into essays these days.
2016-10-21 03:17:53 -06:00
Oliver Schneider
f81c4ac91b
more priroda requirements 2016-10-21 10:45:01 +02:00
Oliver Schneider
b8842b25e8
yield a miri error instead of panicking on uninitialized statics 2016-10-21 10:44:48 +02:00
Oliver Schneider
a75e7f7686
don't allocate statics unless a reference to them is created 2016-10-21 10:32:27 +02:00
Oliver Schneider
bef879083e
split eval_and_read_lvalue into two functions 2016-10-21 10:31:13 +02:00
Oliver Schneider
24be49f7dd
add a 'tcx lifetime to Lvalue in preparation for statics 2016-10-21 10:29:56 +02:00
Oliver Schneider
ed679c3d23
make some pieces public that are required by priroda 2016-10-20 13:10:22 +02:00
Scott Olson
330be7766f Represent PrimVals as "bitbags".
Now instead of holding a native type based on the tag, all PrimVals
store a u64 (the `bits`), along with a `kind` corresponding to the
variant as it would be in the old PrimVal representation.

This commit makes no major optimizations and attempts to not change any
behaviour. There will be commits to follow that make use of this
representation to eliminate unnecessary allocation hacks like in
`value_to_primval`.

A number of places could be even more cleaned up after this commit,
particularly in `cast.rs`.
2016-10-20 04:42:19 -06:00
Scott Olson
d6b4e1aba6 Expand on "uninit" FIXME. 2016-10-19 20:27:35 -06:00
Scott Olson
e807f0c405 Fix local dump check. 2016-10-18 23:24:30 -06:00