rust/compiler/rustc_middle
bors 8c4db851a7 Auto merge of #122662 - Mark-Simulacrum:optional-drop, r=bjorn3
Omit non-needs_drop drop_in_place in vtables

This replaces the drop_in_place reference with null in vtables. On librustc_driver.so, this drops about ~17k (11%) 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. I'm not sure that's readily avoidable without changing the vtable format (e.g., so that we can 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.

Accepted MCP: https://github.com/rust-lang/compiler-team/issues/730
2024-05-28 16:04:14 +00:00
..
src Auto merge of #122662 - Mark-Simulacrum:optional-drop, r=bjorn3 2024-05-28 16:04:14 +00:00
Cargo.toml Uplift GenericArgKind, CanonicalVarValues, QueryInput 2024-05-18 16:21:43 -04:00
messages.ftl Port DeprecatedMacro to diag structs 2024-05-21 20:16:39 +00:00
README.md

For more information about how rustc works, see the rustc dev guide.