aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-05-29 12:35:02 +0100
committerAleksey Kladov <[email protected]>2019-05-29 12:37:04 +0100
commit118a2113c148ce6806732094c70fb030139b26ac (patch)
tree067e1576e3794633ceb8045edc5188a0a015f97f /crates
parent6a1e3e59cb06b8372be00f9f4277e20d06c9050a (diff)
trigger garbage collection *after* requests, not before
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index 16c05e4c3..d406faf6c 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -171,7 +171,6 @@ fn main_loop_inner(
171 let (libdata_sender, libdata_receiver) = unbounded(); 171 let (libdata_sender, libdata_receiver) = unbounded();
172 loop { 172 loop {
173 let _p = profile("loop_turn"); 173 let _p = profile("loop_turn");
174 state.maybe_collect_garbage();
175 174
176 log::trace!("selecting"); 175 log::trace!("selecting");
177 let event = select! { 176 let event = select! {
@@ -193,13 +192,17 @@ fn main_loop_inner(
193 } 192 }
194 let mut state_changed = false; 193 let mut state_changed = false;
195 match event { 194 match event {
196 Event::Task(task) => on_task(task, msg_sender, pending_requests), 195 Event::Task(task) => {
196 on_task(task, msg_sender, pending_requests);
197 state.maybe_collect_garbage();
198 }
197 Event::Vfs(task) => { 199 Event::Vfs(task) => {
198 state.vfs.write().handle_task(task); 200 state.vfs.write().handle_task(task);
199 state_changed = true; 201 state_changed = true;
200 } 202 }
201 Event::Lib(lib) => { 203 Event::Lib(lib) => {
202 state.add_lib(lib); 204 state.add_lib(lib);
205 state.maybe_collect_garbage();
203 in_flight_libraries -= 1; 206 in_flight_libraries -= 1;
204 } 207 }
205 Event::Msg(msg) => match msg { 208 Event::Msg(msg) => match msg {