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-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-12 21:01:33 -04:00
2022-06-20 23:50:40 -07:00
2022-07-12 21:01:33 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-12 21:01:33 -04:00
2022-06-26 21:14:42 -04:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-07-08 15:55:37 +00:00
2022-07-12 21:01:33 -04:00
2022-07-08 15:55:37 +00:00
2022-07-12 21:01:33 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-19 17:21:57 -07:00
2022-07-02 11:33:29 -04:00
2022-06-19 17:21:57 -07:00
2022-07-02 11:33:29 -04:00
2022-06-26 21:14:42 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-26 21:14:42 -04:00
2022-07-02 11:33:29 -04:00
2022-06-25 23:31:24 -04:00
2022-07-02 11:33:29 -04:00
2022-06-25 23:31:24 -04:00
2022-07-02 11:33:29 -04:00
2022-06-26 21:14:42 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-06-25 23:31:24 -04:00
2022-07-12 21:01:33 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-20 23:50:40 -07:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-07-12 21:01:33 -04:00
2022-07-12 21:01:33 -04:00
2022-07-08 15:55:37 +00:00
2022-07-05 18:16:20 -04:00
2022-07-08 15:55:37 +00:00
2022-07-05 18:16:20 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-07-08 15:55:37 +00:00
2022-07-12 21:01:33 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-06-26 21:14:42 -04:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:32:06 -07:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-06-21 11:46:09 -07:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-06-25 23:31:24 -04:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00
2022-07-02 11:33:29 -04:00
2022-07-08 15:55:37 +00:00
2022-07-02 11:33:29 -04:00
2022-07-08 16:08:32 +00:00
2022-07-02 11:33:29 -04:00