diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-03-16 16:42:58 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-03-16 16:42:58 +0000 |
commit | adcc89137d3feea8f19fad461bbde6f4bce048e5 (patch) | |
tree | 160af959553ce57fdfcbc0a6c79bafcc3611aeea /crates/ra_hir_def/src/nameres/raw.rs | |
parent | 648df02953a6ebf87a5876668eceba208687e8a7 (diff) | |
parent | 9faea2364dee4fbc9391ad233c570b70256ef002 (diff) |
Merge #3584
3584: Switch to dynamic dispatch r=matklad a=matklad
Benches are in https://github.com/rust-analyzer/rust-analyzer/issues/1987#issuecomment-598807185
TL;DR:
* 33% faster release build
* slightly worse/same perf
* no changes for debug build
* slightly smaller binary
cc @flodiebold I genuinely don't know if it is a good idea or not.
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_hir_def/src/nameres/raw.rs')
-rw-r--r-- | crates/ra_hir_def/src/nameres/raw.rs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs index ea3c00da8..0e4931f58 100644 --- a/crates/ra_hir_def/src/nameres/raw.rs +++ b/crates/ra_hir_def/src/nameres/raw.rs | |||
@@ -9,7 +9,6 @@ use std::{ops::Index, sync::Arc}; | |||
9 | 9 | ||
10 | use hir_expand::{ | 10 | use hir_expand::{ |
11 | ast_id_map::AstIdMap, | 11 | ast_id_map::AstIdMap, |
12 | db::AstDatabase, | ||
13 | hygiene::Hygiene, | 12 | hygiene::Hygiene, |
14 | name::{AsName, Name}, | 13 | name::{AsName, Name}, |
15 | }; | 14 | }; |
@@ -45,16 +44,13 @@ pub struct RawItems { | |||
45 | } | 44 | } |
46 | 45 | ||
47 | impl RawItems { | 46 | impl RawItems { |
48 | pub(crate) fn raw_items_query( | 47 | pub(crate) fn raw_items_query(db: &dyn DefDatabase, file_id: HirFileId) -> Arc<RawItems> { |
49 | db: &(impl DefDatabase + AstDatabase), | ||
50 | file_id: HirFileId, | ||
51 | ) -> Arc<RawItems> { | ||
52 | let _p = profile("raw_items_query"); | 48 | let _p = profile("raw_items_query"); |
53 | let mut collector = RawItemsCollector { | 49 | let mut collector = RawItemsCollector { |
54 | raw_items: RawItems::default(), | 50 | raw_items: RawItems::default(), |
55 | source_ast_id_map: db.ast_id_map(file_id), | 51 | source_ast_id_map: db.ast_id_map(file_id), |
56 | file_id, | 52 | file_id, |
57 | hygiene: Hygiene::new(db, file_id), | 53 | hygiene: Hygiene::new(db.upcast(), file_id), |
58 | }; | 54 | }; |
59 | if let Some(node) = db.parse_or_expand(file_id) { | 55 | if let Some(node) = db.parse_or_expand(file_id) { |
60 | if let Some(source_file) = ast::SourceFile::cast(node.clone()) { | 56 | if let Some(source_file) = ast::SourceFile::cast(node.clone()) { |