rust/tests/fail/stacked_borrows
Ben Kimock afa1dddcf9 Store protectors outside Item, pack Tag and Perm
Previously, Item was a struct of a NonZeroU64, an Option which was
usually unset or irrelevant, and a 4-variant enum. So collectively, the
size of an Item was 24 bytes, but only 8 bytes were used for the most
part.

So this takes advantage of the fact that it is probably impossible to
exhaust the total space of SbTags, and steals 3 bits from it to pack the
whole struct into a single u64. This bit-packing means that we reduce
peak memory usage when Miri goes memory-bound by ~3x. We also get CPU
performance improvements of varying size, because not only are we simply
accessing less memory, we can now compare a Vec<Item> using a memcmp
because it does not have any padding.
2022-07-12 21:01:33 -04:00
..
2022-07-08 16:08:32 +00:00
2022-07-08 16:08:32 +00:00
2022-07-05 18:16:20 -04:00
2022-07-05 18:16:20 -04:00
2022-07-08 16:08:32 +00:00
2022-07-08 16:08:32 +00:00
2022-07-08 16:08:32 +00:00
2022-06-21 11:46:09 -07:00
2022-07-08 16:08:32 +00:00
2022-07-08 16:08:32 +00:00