1. 10 3月, 2022 1 次提交
  2. 08 3月, 2022 38 次提交
  3. 07 3月, 2022 1 次提交
    • B
      Auto merge of #94690 - nnethercote:clarify-Layout-interning, r=fee1-dead · ecb867ec
      bors 提交于
      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.
      
      r? `@fee1-dead`
      ecb867ec