From 136dce67cec749dce5989ea29e88359ef79a0045 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Fri, 14 Apr 2023 16:22:33 -0400 Subject: refactor: break up `ProcState` (#18707) 1. Breaks up functionality within `ProcState` into several other structs to break out the responsibilities (`ProcState` is only a data struct now). 2. Moves towards being able to inject dependencies more easily and have functionality only require what it needs. 3. Exposes `Arc` around the "service structs" instead of it being embedded within them. The idea behind embedding them was to reduce the verbosity of needing to pass around `Arc<...>`, but I don't think it was exactly working and as we move more of these structs to be more injectable I don't think the extra verbosity will be a big deal. --- cli/cache/caches.rs | 15 +++++++-------- cli/cache/parsed_source.rs | 8 ++------ 2 files changed, 9 insertions(+), 14 deletions(-) (limited to 'cli/cache') diff --git a/cli/cache/caches.rs b/cli/cache/caches.rs index da6912f2a..0b60d0bec 100644 --- a/cli/cache/caches.rs +++ b/cli/cache/caches.rs @@ -1,7 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::path::PathBuf; -use std::sync::Arc; use once_cell::sync::OnceCell; @@ -13,18 +12,18 @@ use super::node::NODE_ANALYSIS_CACHE_DB; use super::parsed_source::PARSED_SOURCE_CACHE_DB; use super::DenoDir; -#[derive(Clone, Default)] +#[derive(Default)] pub struct Caches { - fmt_incremental_cache_db: Arc>, - lint_incremental_cache_db: Arc>, - dep_analysis_db: Arc>, - node_analysis_db: Arc>, - type_checking_cache_db: Arc>, + fmt_incremental_cache_db: OnceCell, + lint_incremental_cache_db: OnceCell, + dep_analysis_db: OnceCell, + node_analysis_db: OnceCell, + type_checking_cache_db: OnceCell, } impl Caches { fn make_db( - cell: &Arc>, + cell: &OnceCell, config: &'static CacheDBConfiguration, path: PathBuf, ) -> CacheDB { diff --git a/cli/cache/parsed_source.rs b/cli/cache/parsed_source.rs index 09b1c13ae..0cac4afa6 100644 --- a/cli/cache/parsed_source.rs +++ b/cli/cache/parsed_source.rs @@ -73,7 +73,6 @@ impl deno_graph::ParsedSourceStore for ParsedSourceCacheSources { /// A cache of `ParsedSource`s, which may be used with `deno_graph` /// for cached dependency analysis. -#[derive(Clone)] pub struct ParsedSourceCache { db: CacheDB, sources: ParsedSourceCacheSources, @@ -95,11 +94,8 @@ impl ParsedSourceCache { } } - pub fn reset_for_file_watcher(&self) -> Self { - Self { - db: self.db.clone(), - sources: Default::default(), - } + pub fn clear(&self) { + self.sources.0.lock().clear(); } pub fn get_parsed_source_from_esm_module( -- cgit v1.2.3