about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDavid Barsky <me@davidbarsky.com>2025-03-16 13:07:08 -0400
committerDavid Barsky <me@davidbarsky.com>2025-03-17 10:45:03 -0400
commitb97596c81fa581c2254aec7b7463f727f4e6eab8 (patch)
treec280cc6fc1abaad3639a4d945bf1d34a62fcefcb /src
parentd89aefd5f23b68b699a23dc73206634505860b13 (diff)
downloadrust-b97596c81fa581c2254aec7b7463f727f4e6eab8.tar.gz
rust-b97596c81fa581c2254aec7b7463f727f4e6eab8.zip
analysis-stats: run Salsa's LRU at the end of analysis
Diffstat (limited to 'src')
-rw-r--r--src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs
index b02708bf246..29331000a11 100644
--- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs
+++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs
@@ -22,7 +22,10 @@ use ide::{
     Analysis, AnalysisHost, AnnotationConfig, DiagnosticsConfig, Edition, InlayFieldsToResolve,
     InlayHintsConfig, LineCol, RootDatabase,
 };
-use ide_db::{EditionedFileId, LineIndexDatabase, SnippetCap, base_db::SourceDatabase};
+use ide_db::{
+    EditionedFileId, LineIndexDatabase, SnippetCap,
+    base_db::{SourceDatabase, salsa::Database},
+};
 use itertools::Itertools;
 use load_cargo::{LoadCargoConfig, ProcMacroServerChoice, load_workspace};
 use oorandom::Rand32;
@@ -104,7 +107,7 @@ impl flags::AnalysisStats {
         }
         eprintln!(")");
 
-        let host = AnalysisHost::with_database(db);
+        let mut host = AnalysisHost::with_database(db);
         let db = host.raw_database();
 
         let mut analysis_sw = self.stop_watch();
@@ -250,6 +253,9 @@ impl flags::AnalysisStats {
             self.run_term_search(&workspace, db, &vfs, file_ids, verbosity);
         }
 
+        let db = host.raw_database_mut();
+        db.trigger_lru_eviction();
+
         let total_span = analysis_sw.elapsed();
         eprintln!("{:<20} {total_span}", "Total:");
         report_metric("total time", total_span.time.as_millis() as u64, "ms");