diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 31f2bcba35..96dae9ee0b 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 c237081818..1427c50cf8 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::(); 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 8b4fd7ab84..7f98111c48 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 70ada02f31..0d209c6ec0 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, - 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) -> 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 { - 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 7af9f9d9bb..0000000000 --- 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 06ab9d508d..c2d0ac791b 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 {