about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-01-08 18:16:00 +0000
committerbors <bors@rust-lang.org>2021-01-08 18:16:00 +0000
commit26438b473883ea607b30288e461187f0fb2fe589 (patch)
tree367872d4228bcc704926734c49695738999bdd34 /compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp
parentddf2cc7f8eb34f1a63b491d6a52e3e8208393c09 (diff)
parent0f334c3642257f711e0c397fec11707d86e14e70 (diff)
downloadrust-26438b473883ea607b30288e461187f0fb2fe589.tar.gz
rust-26438b473883ea607b30288e461187f0fb2fe589.zip
Auto merge of #78452 - cjgillot:ddk-struct, r=Mark-Simulacrum
Access query (DepKind) metadata through fields

This refactors the access to query definition metadata (attributes such as eval always, anon, has_params) and loading/forcing functions to generate a number of structs, instead of matching on the DepKind enum. This makes access to the fields cheaper to compile. Using a struct means that finding the metadata for a given query is just an offset away; previously the match may have been compiled to a jump table but likely not completely inlined as we expect here.

A previous attempt explored a similar strategy, but using trait objects in #78314 that proved less effective, likely due to higher overheads due to forcing dynamic calls and poorer cache utilization (all metadata is fairly densely packed with this PR).
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp')
0 files changed, 0 insertions, 0 deletions