@@ -141,16 +141,175 @@ impl RootDatabase {
141141 db. set_local_roots_with_durability ( Default :: default ( ) , Durability :: HIGH ) ;
142142 db. set_library_roots_with_durability ( Default :: default ( ) , Durability :: HIGH ) ;
143143 db. set_enable_proc_attr_macros ( false ) ;
144- db. update_lru_capacity ( lru_capacity) ;
144+ db. update_parse_query_lru_capacity ( lru_capacity) ;
145145 db
146146 }
147147
148- pub fn update_lru_capacity ( & mut self , lru_capacity : Option < usize > ) {
148+ pub fn update_parse_query_lru_capacity ( & mut self , lru_capacity : Option < usize > ) {
149149 let lru_capacity = lru_capacity. unwrap_or ( base_db:: DEFAULT_LRU_CAP ) ;
150150 base_db:: ParseQuery . in_db_mut ( self ) . set_lru_capacity ( lru_capacity) ;
151151 hir:: db:: ParseMacroExpansionQuery . in_db_mut ( self ) . set_lru_capacity ( lru_capacity) ;
152152 hir:: db:: MacroExpandQuery . in_db_mut ( self ) . set_lru_capacity ( lru_capacity) ;
153153 }
154+
155+ pub fn update_lru_capacities ( & mut self , lru_capacities : & FxHashMap < Box < str > , usize > ) {
156+ use hir:: db as hir_db;
157+
158+ base_db:: ParseQuery . in_db_mut ( self ) . set_lru_capacity (
159+ lru_capacities. get ( stringify ! ( ParseQuery ) ) . copied ( ) . unwrap_or ( base_db:: DEFAULT_LRU_CAP ) ,
160+ ) ;
161+ hir_db:: ParseMacroExpansionQuery . in_db_mut ( self ) . set_lru_capacity (
162+ lru_capacities
163+ . get ( stringify ! ( ParseMacroExpansionQuery ) )
164+ . copied ( )
165+ . unwrap_or ( base_db:: DEFAULT_LRU_CAP ) ,
166+ ) ;
167+ hir_db:: MacroExpandQuery . in_db_mut ( self ) . set_lru_capacity (
168+ lru_capacities
169+ . get ( stringify ! ( MacroExpandQuery ) )
170+ . copied ( )
171+ . unwrap_or ( base_db:: DEFAULT_LRU_CAP ) ,
172+ ) ;
173+
174+ macro_rules! update_lru_capacity_per_query {
175+ ( $( $module: ident :: $query: ident ) * ) => { $(
176+ if let Some ( & cap) = lru_capacities. get( stringify!( $query) ) {
177+ $module:: $query. in_db_mut( self ) . set_lru_capacity( cap) ;
178+ }
179+ ) * }
180+ }
181+ update_lru_capacity_per_query ! [
182+ // SourceDatabase
183+ // base_db::ParseQuery
184+ // base_db::CrateGraphQuery
185+ // base_db::ProcMacrosQuery
186+
187+ // SourceDatabaseExt
188+ // base_db::FileTextQuery
189+ // base_db::FileSourceRootQuery
190+ // base_db::SourceRootQuery
191+ base_db:: SourceRootCratesQuery
192+
193+ // ExpandDatabase
194+ hir_db:: AstIdMapQuery
195+ // hir_db::ParseMacroExpansionQuery
196+ // hir_db::InternMacroCallQuery
197+ hir_db:: MacroArgTextQuery
198+ hir_db:: MacroDefQuery
199+ // hir_db::MacroExpandQuery
200+ hir_db:: ExpandProcMacroQuery
201+ hir_db:: MacroExpandErrorQuery
202+ hir_db:: HygieneFrameQuery
203+
204+ // DefDatabase
205+ hir_db:: FileItemTreeQuery
206+ hir_db:: CrateDefMapQueryQuery
207+ hir_db:: BlockDefMapQuery
208+ hir_db:: StructDataQuery
209+ hir_db:: StructDataWithDiagnosticsQuery
210+ hir_db:: UnionDataQuery
211+ hir_db:: UnionDataWithDiagnosticsQuery
212+ hir_db:: EnumDataQuery
213+ hir_db:: EnumDataWithDiagnosticsQuery
214+ hir_db:: ImplDataQuery
215+ hir_db:: ImplDataWithDiagnosticsQuery
216+ hir_db:: TraitDataQuery
217+ hir_db:: TraitDataWithDiagnosticsQuery
218+ hir_db:: TraitAliasDataQuery
219+ hir_db:: TypeAliasDataQuery
220+ hir_db:: FunctionDataQuery
221+ hir_db:: ConstDataQuery
222+ hir_db:: StaticDataQuery
223+ hir_db:: Macro2DataQuery
224+ hir_db:: MacroRulesDataQuery
225+ hir_db:: ProcMacroDataQuery
226+ hir_db:: BodyWithSourceMapQuery
227+ hir_db:: BodyQuery
228+ hir_db:: ExprScopesQuery
229+ hir_db:: GenericParamsQuery
230+ hir_db:: VariantsAttrsQuery
231+ hir_db:: FieldsAttrsQuery
232+ hir_db:: VariantsAttrsSourceMapQuery
233+ hir_db:: FieldsAttrsSourceMapQuery
234+ hir_db:: AttrsQuery
235+ hir_db:: CrateLangItemsQuery
236+ hir_db:: LangItemQuery
237+ hir_db:: ImportMapQuery
238+ hir_db:: FieldVisibilitiesQuery
239+ hir_db:: FunctionVisibilityQuery
240+ hir_db:: ConstVisibilityQuery
241+ hir_db:: CrateSupportsNoStdQuery
242+
243+ // HirDatabase
244+ hir_db:: InferQueryQuery
245+ hir_db:: MirBodyQuery
246+ hir_db:: BorrowckQuery
247+ hir_db:: TyQuery
248+ hir_db:: ValueTyQuery
249+ hir_db:: ImplSelfTyQuery
250+ hir_db:: ConstParamTyQuery
251+ hir_db:: ConstEvalQuery
252+ hir_db:: ConstEvalDiscriminantQuery
253+ hir_db:: ImplTraitQuery
254+ hir_db:: FieldTypesQuery
255+ hir_db:: LayoutOfAdtQuery
256+ hir_db:: TargetDataLayoutQuery
257+ hir_db:: CallableItemSignatureQuery
258+ hir_db:: ReturnTypeImplTraitsQuery
259+ hir_db:: GenericPredicatesForParamQuery
260+ hir_db:: GenericPredicatesQuery
261+ hir_db:: TraitEnvironmentQuery
262+ hir_db:: GenericDefaultsQuery
263+ hir_db:: InherentImplsInCrateQuery
264+ hir_db:: InherentImplsInBlockQuery
265+ hir_db:: IncoherentInherentImplCratesQuery
266+ hir_db:: TraitImplsInCrateQuery
267+ hir_db:: TraitImplsInBlockQuery
268+ hir_db:: TraitImplsInDepsQuery
269+ // hir_db::InternCallableDefQuery
270+ // hir_db::InternLifetimeParamIdQuery
271+ // hir_db::InternImplTraitIdQuery
272+ // hir_db::InternTypeOrConstParamIdQuery
273+ // hir_db::InternClosureQuery
274+ // hir_db::InternGeneratorQuery
275+ hir_db:: AssociatedTyDataQuery
276+ hir_db:: TraitDatumQuery
277+ hir_db:: StructDatumQuery
278+ hir_db:: ImplDatumQuery
279+ hir_db:: FnDefDatumQuery
280+ hir_db:: FnDefVarianceQuery
281+ hir_db:: AdtVarianceQuery
282+ hir_db:: AssociatedTyValueQuery
283+ hir_db:: TraitSolveQueryQuery
284+ hir_db:: ProgramClausesForChalkEnvQuery
285+
286+ // SymbolsDatabase
287+ symbol_index:: ModuleSymbolsQuery
288+ symbol_index:: LibrarySymbolsQuery
289+ // symbol_index::LocalRootsQuery
290+ // symbol_index::LibraryRootsQuery
291+
292+ // LineIndexDatabase
293+ crate :: LineIndexQuery
294+
295+ // InternDatabase
296+ // hir_db::InternFunctionQuery
297+ // hir_db::InternStructQuery
298+ // hir_db::InternUnionQuery
299+ // hir_db::InternEnumQuery
300+ // hir_db::InternConstQuery
301+ // hir_db::InternStaticQuery
302+ // hir_db::InternTraitQuery
303+ // hir_db::InternTraitAliasQuery
304+ // hir_db::InternTypeAliasQuery
305+ // hir_db::InternImplQuery
306+ // hir_db::InternExternBlockQuery
307+ // hir_db::InternBlockQuery
308+ // hir_db::InternMacro2Query
309+ // hir_db::InternProcMacroQuery
310+ // hir_db::InternMacroRulesQuery
311+ ] ;
312+ }
154313}
155314
156315impl salsa:: ParallelDatabase for RootDatabase {
0 commit comments