about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/ty/vtable.rs
AgeCommit message (Collapse)AuthorLines
2025-07-07compiler: Parse `p-` specs in datalayout string, allow definition of custom ↵Edoardo Marangoni-2/+2
default data address space
2025-05-26extend allocbytes with associated typeNia Espera-1/+1
2025-01-30Do not treat vtable supertraits as distinct when bound with different bound varsMichael Goulet-9/+8
2025-01-28miri: optimize zeroed allocSpecificProtagonist-2/+4
Co-authored-by: Ralf Jung <post@ralfj.de>
2025-01-21Move supertrait_def_ids into the elaborate module like all other fnsMichael Goulet-1/+2
2024-12-06Remove polymorphizationBen Kimock-2/+1
2024-11-18use `TypingEnv` when no `infcx` is availablelcnr-2/+2
the behavior of the type system not only depends on the current assumptions, but also the currentnphase of the compiler. This is mostly necessary as we need to decide whether and how to reveal opaque types. We track this via the `TypingMode`.
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-1/+1
2024-08-06miri: make vtable addresses not globally uniqueRalf Jung-3/+8
2024-07-29Reformat `use` declarations.Nicholas Nethercote-2/+3
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-06-27supertrait_def_ids was already implemented in middleMichael Goulet-35/+0
2024-06-27Make queries more explicitMichael Goulet-1/+1
2024-06-01Deduplicate supertrait_def_ids codeMark Rousskov-12/+10
2024-06-01Increase vtable layout sizeMark Rousskov-0/+64
This improves LLVM's codegen by allowing vtable loads to be hoisted out of loops (as just one example).
2024-05-27Omit non-needs_drop drop_in_place in vtablesMark Rousskov-4/+8
This replaces the drop_in_place reference with null in vtables. On librustc_driver.so, this drops about ~17k dynamic relocations from the output, since many vtables can now be placed in read-only memory, rather than having a relocated pointer included. This makes a tradeoff by adding a null check at vtable call sites. That's hard to avoid without changing the vtable format (e.g., to use a pc-relative relocation instead of an absolute address, and avoid the dynamic relocation that way). But it seems likely that the check is cheap at runtime.
2024-04-29Remove `extern crate rustc_macros` from `rustc_middle`.Nicholas Nethercote-0/+1
2023-09-14make it more clear which functions create fresh AllocIdRalf Jung-3/+3
2023-07-30inline format!() args up to and including rustc_middleMatthias Krüger-2/+2
2023-06-01Use translatable diagnostics in `rustc_const_eval`Deadbeef-1/+1
2023-02-24Rename many interner functions.Nicholas Nethercote-1/+1
(This is a large commit. The changes to `compiler/rustc_middle/src/ty/context.rs` are the most important ones.) The current naming scheme is a mess, with a mix of `_intern_`, `intern_` and `mk_` prefixes, with little consistency. In particular, in many cases it's easy to use an iterator interner when a (preferable) slice interner is available. The guiding principles of the new naming system: - No `_intern_` prefixes. - The `intern_` prefix is for internal operations. - The `mk_` prefix is for external operations. - For cases where there is a slice interner and an iterator interner, the former is `mk_foo` and the latter is `mk_foo_from_iter`. Also, `slice_interners!` and `direct_interners!` can now be `pub` or non-`pub`, which helps enforce the internal/external operations division. It's not perfect, but I think it's a clear improvement. The following lists show everything that was renamed. slice_interners - const_list - mk_const_list -> mk_const_list_from_iter - intern_const_list -> mk_const_list - substs - mk_substs -> mk_substs_from_iter - intern_substs -> mk_substs - check_substs -> check_and_mk_substs (this is a weird one) - canonical_var_infos - intern_canonical_var_infos -> mk_canonical_var_infos - poly_existential_predicates - mk_poly_existential_predicates -> mk_poly_existential_predicates_from_iter - intern_poly_existential_predicates -> mk_poly_existential_predicates - _intern_poly_existential_predicates -> intern_poly_existential_predicates - predicates - mk_predicates -> mk_predicates_from_iter - intern_predicates -> mk_predicates - _intern_predicates -> intern_predicates - projs - intern_projs -> mk_projs - place_elems - mk_place_elems -> mk_place_elems_from_iter - intern_place_elems -> mk_place_elems - bound_variable_kinds - mk_bound_variable_kinds -> mk_bound_variable_kinds_from_iter - intern_bound_variable_kinds -> mk_bound_variable_kinds direct_interners - region - intern_region (unchanged) - const - mk_const_internal -> intern_const - const_allocation - intern_const_alloc -> mk_const_alloc - layout - intern_layout -> mk_layout - adt_def - intern_adt_def -> mk_adt_def_from_data (unusual case, hard to avoid) - alloc_adt_def(!) -> mk_adt_def - external_constraints - intern_external_constraints -> mk_external_constraints Other - type_list - mk_type_list -> mk_type_list_from_iter - intern_type_list -> mk_type_list - tup - mk_tup -> mk_tup_from_iter - intern_tup -> mk_tup
2022-12-18avoid .into() conversion to identical typesMatthias Krüger-2/+2
2022-12-10compiler: remove unnecessary imports and qualified pathsKaDiWa-1/+0
2022-11-13add is_sized method on Abi and Layout, and use itRalf Jung-1/+1
2022-08-26make read_immediate error immediately on uninit, so ImmTy can carry ↵Ralf Jung-4/+4
initialized Scalar
2022-05-28Fix TyKind lint, make consts no longer fn, etcMichael Goulet-3/+5
2022-05-28Initial fixes on top of type interner commitMichael Goulet-3/+4
2021-10-07Turn tcx.vtable_allocation() into a query.Michael Woerister-65/+60
2021-10-07Remove untracked vtable-const-allocation cache from tcxMichael Woerister-9/+1
2021-07-22Add comment and more tests.Charles Lew-0/+6
2021-07-20Switch to store `Instance` directly within `VtblEntry`, fix `TraitVPtr` ↵Charles Lew-21/+29
representation.
2021-07-20Refactor vtable format.Charles Lew-1/+7
2021-07-14consistently treat None-tagged pointers as ints; get rid of some deprecated ↵Ralf Jung-3/+3
Scalar methods
2021-07-03Make vtable_allocation always succeedSmitty-5/+6
2021-07-02Allocation failure in constprop panics right awaySmitty-1/+1
2021-06-29Properly handle const prop failuresSmitty-1/+1
2021-06-29Support allocation failures when interperting MIRSmitty-5/+5
Note that this breaks Miri. Closes #79601
2021-06-28Update other codegens to use tcx managed vtable allocations.Charles Lew-0/+106