about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/ide/src/lib.rs4
-rw-r--r--crates/ide/src/status.rs5
-rw-r--r--crates/ide_db/src/change.rs15
-rw-r--r--crates/ide_db/src/lib.rs15
-rw-r--r--crates/ide_db/src/wasm_shims.rs19
-rw-r--r--crates/rust-analyzer/src/main_loop.rs19
6 files changed, 13 insertions, 64 deletions
diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs
index 31f2bcba35e..96dae9ee0bc 100644
--- a/crates/ide/src/lib.rs
+++ b/crates/ide/src/lib.rs
@@ -144,10 +144,6 @@ impl AnalysisHost {
         self.db.apply_change(change)
     }
 
-    pub fn maybe_collect_garbage(&mut self) {
-        self.db.maybe_collect_garbage();
-    }
-
     pub fn collect_garbage(&mut self) {
         self.db.collect_garbage();
     }
diff --git a/crates/ide/src/status.rs b/crates/ide/src/status.rs
index c2370818180..1427c50cf8e 100644
--- a/crates/ide/src/status.rs
+++ b/crates/ide/src/status.rs
@@ -37,13 +37,12 @@ pub(crate) fn status(db: &RootDatabase) -> String {
     let macro_syntax_tree_stats = macro_syntax_tree_stats(db);
     let symbols_stats = LibrarySymbolsQuery.in_db(db).entries::<LibrarySymbolsStats>();
     format!(
-        "{}\n{}\n{}\n{} (macros)\n\n\nmemory:\n{}\ngc {:?} seconds ago",
+        "{}\n{}\n{}\n{} (macros)\n{} total\n",
         files_stats,
         symbols_stats,
         syntax_tree_stats,
         macro_syntax_tree_stats,
         memory_usage(),
-        db.last_gc.elapsed().as_secs(),
     )
 }
 
@@ -121,7 +120,7 @@ struct LibrarySymbolsStats {
 
 impl fmt::Display for LibrarySymbolsStats {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
-        write!(fmt, "{} ({}) symbols", self.total, self.size)
+        write!(fmt, "{} ({}) index symbols", self.total, self.size)
     }
 }
 
diff --git a/crates/ide_db/src/change.rs b/crates/ide_db/src/change.rs
index 8b4fd7ab849..7f98111c483 100644
--- a/crates/ide_db/src/change.rs
+++ b/crates/ide_db/src/change.rs
@@ -1,7 +1,7 @@
 //! Defines a unit of change that can applied to a state of IDE to get the next
 //! state. Changes are transactional.
 
-use std::{fmt, sync::Arc, time};
+use std::{fmt, sync::Arc};
 
 use base_db::{
     salsa::{Database, Durability, SweepStrategy},
@@ -81,8 +81,6 @@ impl fmt::Debug for RootChange {
     }
 }
 
-const GC_COOLDOWN: time::Duration = time::Duration::from_millis(100);
-
 impl RootDatabase {
     pub fn request_cancellation(&mut self) {
         let _p = profile::span("RootDatabase::request_cancellation");
@@ -126,23 +124,12 @@ impl RootDatabase {
         }
     }
 
-    pub fn maybe_collect_garbage(&mut self) {
-        if cfg!(feature = "wasm") {
-            return;
-        }
-
-        if self.last_gc_check.elapsed() > GC_COOLDOWN {
-            self.last_gc_check = crate::wasm_shims::Instant::now();
-        }
-    }
-
     pub fn collect_garbage(&mut self) {
         if cfg!(feature = "wasm") {
             return;
         }
 
         let _p = profile::span("RootDatabase::collect_garbage");
-        self.last_gc = crate::wasm_shims::Instant::now();
 
         let sweep = SweepStrategy::default().discard_values().sweep_all_revisions();
 
diff --git a/crates/ide_db/src/lib.rs b/crates/ide_db/src/lib.rs
index 70ada02f312..0d209c6ec05 100644
--- a/crates/ide_db/src/lib.rs
+++ b/crates/ide_db/src/lib.rs
@@ -10,7 +10,6 @@ pub mod defs;
 pub mod search;
 pub mod imports_locator;
 pub mod source_change;
-mod wasm_shims;
 
 use std::{fmt, sync::Arc};
 
@@ -36,8 +35,6 @@ use crate::{line_index::LineIndex, symbol_index::SymbolsDatabase};
 )]
 pub struct RootDatabase {
     storage: salsa::Storage<RootDatabase>,
-    pub last_gc: crate::wasm_shims::Instant,
-    pub last_gc_check: crate::wasm_shims::Instant,
 }
 
 impl fmt::Debug for RootDatabase {
@@ -99,11 +96,7 @@ impl Default for RootDatabase {
 
 impl RootDatabase {
     pub fn new(lru_capacity: Option<usize>) -> RootDatabase {
-        let mut db = RootDatabase {
-            storage: salsa::Storage::default(),
-            last_gc: crate::wasm_shims::Instant::now(),
-            last_gc_check: crate::wasm_shims::Instant::now(),
-        };
+        let mut db = RootDatabase { storage: salsa::Storage::default() };
         db.set_crate_graph_with_durability(Default::default(), Durability::HIGH);
         db.set_local_roots_with_durability(Default::default(), Durability::HIGH);
         db.set_library_roots_with_durability(Default::default(), Durability::HIGH);
@@ -121,11 +114,7 @@ impl RootDatabase {
 
 impl salsa::ParallelDatabase for RootDatabase {
     fn snapshot(&self) -> salsa::Snapshot<RootDatabase> {
-        salsa::Snapshot::new(RootDatabase {
-            storage: self.storage.snapshot(),
-            last_gc: self.last_gc,
-            last_gc_check: self.last_gc_check,
-        })
+        salsa::Snapshot::new(RootDatabase { storage: self.storage.snapshot() })
     }
 }
 
diff --git a/crates/ide_db/src/wasm_shims.rs b/crates/ide_db/src/wasm_shims.rs
deleted file mode 100644
index 7af9f9d9bb7..00000000000
--- a/crates/ide_db/src/wasm_shims.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-//! A version of `std::time::Instant` that doesn't panic in WASM.
-
-#[cfg(not(feature = "wasm"))]
-pub use std::time::Instant;
-
-#[cfg(feature = "wasm")]
-#[derive(Clone, Copy, Debug)]
-pub struct Instant;
-
-#[cfg(feature = "wasm")]
-impl Instant {
-    pub fn now() -> Self {
-        Self
-    }
-
-    pub fn elapsed(&self) -> std::time::Duration {
-        std::time::Duration::new(0, 0)
-    }
-}
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index 06ab9d508d0..c2d0ac791bf 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -189,19 +189,16 @@ impl GlobalState {
                 }
                 lsp_server::Message::Response(resp) => self.complete_request(resp),
             },
-            Event::Task(task) => {
-                match task {
-                    Task::Response(response) => self.respond(response),
-                    Task::Diagnostics(diagnostics_per_file) => {
-                        for (file_id, diagnostics) in diagnostics_per_file {
-                            self.diagnostics.set_native_diagnostics(file_id, diagnostics)
-                        }
+            Event::Task(task) => match task {
+                Task::Response(response) => self.respond(response),
+                Task::Diagnostics(diagnostics_per_file) => {
+                    for (file_id, diagnostics) in diagnostics_per_file {
+                        self.diagnostics.set_native_diagnostics(file_id, diagnostics)
                     }
-                    Task::Workspaces(workspaces) => self.switch_workspaces(workspaces),
-                    Task::Unit => (),
                 }
-                self.analysis_host.maybe_collect_garbage();
-            }
+                Task::Workspaces(workspaces) => self.switch_workspaces(workspaces),
+                Task::Unit => (),
+            },
             Event::Vfs(mut task) => {
                 let _p = profile::span("GlobalState::handle_event/vfs");
                 loop {