about summary refs log tree commit diff
path: root/tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2024-03-17 17:42:37 -0400
committerMark Rousskov <mark.simulacrum@gmail.com>2024-05-27 16:26:56 -0400
commit9ddcc594113d9d8a3b9181c4436b767251b876c5 (patch)
tree8bd46af4d586ee114c93cbfb0ff1948c058f2064 /tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs
parent05b1415f18a3b7d5bb780d55890663e63a407926 (diff)
downloadrust-9ddcc594113d9d8a3b9181c4436b767251b876c5.tar.gz
rust-9ddcc594113d9d8a3b9181c4436b767251b876c5.zip
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 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.
Diffstat (limited to 'tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs')
0 files changed, 0 insertions, 0 deletions