1
Fork 0
rust/compiler/rustc_data_structures/src
Nicholas Nethercote 4f008e06c3 Clarify Layout interning.
`Layout` is another type that is sometimes interned, sometimes not, and
we always use references to refer to it so we can't take any advantage
of the uniqueness properties for hashing or equality checks.

This commit renames `Layout` as `LayoutS`, and then introduces a new
`Layout` that is a newtype around an `Interned<LayoutS>`. It also
interns more layouts than before. Previously layouts within layouts
(via the `variants` field) were never interned, but now they are. Hence
the lifetime on the new `Layout` type.

Unlike other interned types, these ones are in `rustc_target` instead of
`rustc_middle`. This reflects the existing structure of the code, which
does layout-specific stuff in `rustc_target` while `TyAndLayout` is
generic over the `Ty`, allowing the type-specific stuff to occur in
`rustc_middle`.

The commit also adds a `HashStable` impl for `Interned`, which was
needed. It hashes the contents, unlike the `Hash` impl which hashes the
pointer.
2022-03-07 13:41:47 +11:00
..
base_n mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
binary_search_util Adopt let else in more places 2022-02-19 17:27:43 +01:00
fingerprint Make Fingerprint::combine_commutative associative 2022-01-03 19:07:29 +01:00
graph Avoid exhausting stack space in dominator compression 2022-02-23 16:07:56 -05:00
intern Rename PtrKey as Interned and improve it. 2022-02-15 15:50:29 +11:00
obligation_forest obligation forest docs 2022-02-21 12:00:26 +01:00
owning_ref Also fix “a OwningRef 2021-08-24 02:28:38 +02:00
sip128 SipHasher128: improve constant names and add more comments 2020-10-11 23:48:35 -07:00
small_c_str mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
small_str Add SmallStr 2022-03-04 16:57:34 +01:00
snapshot_map Call the method fork instead of clone and add proper comments 2022-02-14 12:57:20 -03:00
sorted_map Remove invalid #[cfg(tests)] in index_map 2022-03-04 11:34:50 +01:00
sso compiler: fix some typos 2022-03-01 20:02:47 +08:00
stable_hasher Fix isize optimization in StableHasher for big-endian architectures 2022-02-03 11:47:41 +01:00
tagged_ptr Small performance tweaks 2021-12-12 12:35:01 +08:00
thin_vec eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
tiny_list Move some test-only code to test files 2021-03-17 10:31:30 -04:00
transitive_relation Move some test-only code to test files 2021-03-17 10:31:30 -04:00
vec_map eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
atomic_ref.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
base_n.rs Apply clippy suggestions 2021-10-10 15:38:19 +02:00
captures.rs Remove #[allow(unused_lifetimes)] which is now unnecessary 2021-06-17 08:56:54 +09:00
fingerprint.rs Provide copy-free access to raw Decoder bytes 2022-02-22 18:11:59 -05:00
flock.rs Fix the flock fallback implementation 2021-08-15 18:44:06 +02:00
frozen.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
functor.rs Make IdFunctor::try_map_id panic-safe 2021-12-07 11:11:23 +00:00
fx.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
intern.rs Clarify Layout interning. 2022-03-07 13:41:47 +11:00
jobserver.rs datastructures: replace lazy_static by SyncLazy from std 2020-09-01 22:06:47 +01:00
lib.rs Add SmallStr 2022-03-04 16:57:34 +01:00
macros.rs Introduce ChunkedBitSet and use it for some dataflow analyses. 2022-02-23 10:18:49 +11:00
map_in_place.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
memmap.rs Add safety comment to StableAddress impl for Mmap 2021-04-03 14:51:05 +02:00
profiling.rs Remove redundant [..]s 2021-12-09 00:01:29 +01:00
sharded.rs Move Sharded maps into each QueryCache impl 2022-02-20 12:10:46 -05:00
sip128.rs Use const generics in SipHasher128's short_write 2022-02-05 19:55:44 +01:00
small_c_str.rs Inline SmallCStr::deref 2022-03-04 16:57:34 +01:00
small_str.rs Add SmallStr 2022-03-04 16:57:34 +01:00
sorted_map.rs Use SortedMap in HIR. 2021-10-21 23:08:57 +02:00
stable_hasher.rs Use const generics in SipHasher128's short_write 2022-02-05 19:55:44 +01:00
stable_map.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
stable_set.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
stack.rs Allow inlining of ensure_sufficient_stack() 2022-02-12 11:30:04 +01:00
steal.rs more clippy fixes 2021-11-07 16:59:05 +01:00
svh.rs Make Decodable and Decoder infallible. 2022-01-22 10:38:31 +11:00
sync.rs Fix typos “a”→“an” 2021-08-22 15:35:11 +02:00
tagged_ptr.rs Miscellaneous inlining improvements 2021-06-02 08:49:58 +02:00
temp_dir.rs Capitalize safety comments 2020-09-08 22:37:18 -04:00
thin_vec.rs Rustdoc: use ThinVec for GenericArgs bindings 2022-01-01 11:29:14 +01:00
tiny_list.rs Apply clippy suggestions 2021-10-10 15:38:19 +02:00
transitive_relation.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
unhash.rs Avoid rehashing Fingerprint as a map key 2020-09-01 18:27:02 -07:00
vec_linked_list.rs Stop enabling in_band_lifetimes in rustc_data_structures 2021-12-05 20:17:35 -08:00
vec_map.rs Add VecMap::get_value_matching and assert if > 1 element 2021-07-23 08:44:23 -03:00
work_queue.rs Remove (lots of) dead code 2021-03-27 22:16:33 -04:00