diff options
| author | bors <bors@rust-lang.org> | 2024-01-19 02:36:13 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-01-19 02:36:13 +0000 |
| commit | d3c9082a44f00b22152ebc9c92c129b10ccb7793 (patch) | |
| tree | 037b46258755d2c15413dd5f662aae079ff42868 /compiler/rustc_ast_lowering/src | |
| parent | 25f8d01fd8bda339612d0c0a8844173a09205f7c (diff) | |
| parent | d59968b5f65c8b703f66913181d30d31df113d70 (diff) | |
| download | rust-d3c9082a44f00b22152ebc9c92c129b10ccb7793.tar.gz rust-d3c9082a44f00b22152ebc9c92c129b10ccb7793.zip | |
Auto merge of #120006 - cjgillot:no-hir-owner, r=wesleywiser
Get rid of the hir_owner query. This query was meant as a firewall between `hir_owner_nodes` which is supposed to change often, and the queries that only depend on the item signature. That firewall was inefficient, leaking the contents of the HIR body through `HirId`s. `hir_owner` incurs a significant cost, as we need to hash HIR twice in multiple modes. This PR proposes to remove it, and simplify the hashing scheme. For the future, `def_kind`, `def_span`... are much more efficient for incremental decoupling, and should be preferred.
Diffstat (limited to 'compiler/rustc_ast_lowering/src')
| -rw-r--r-- | compiler/rustc_ast_lowering/src/lib.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index 5387880b6e6..057fe65d0af 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -662,9 +662,9 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { let (opt_hash_including_bodies, attrs_hash) = if self.tcx.needs_crate_hash() { self.tcx.with_stable_hashing_context(|mut hcx| { let mut stable_hasher = StableHasher::new(); - hcx.with_hir_bodies(node.def_id(), &bodies, |hcx| { - node.hash_stable(hcx, &mut stable_hasher) - }); + node.hash_stable(&mut hcx, &mut stable_hasher); + // Bodies are stored out of line, so we need to pull them explicitly in the hash. + bodies.hash_stable(&mut hcx, &mut stable_hasher); let h1 = stable_hasher.finish(); let mut stable_hasher = StableHasher::new(); |
