diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-08-22 12:14:59 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-22 12:14:59 -0400 |
commit | 7a1a082876298a4c9e37237074ea62942180d083 (patch) | |
tree | 690b46889987a9f576a1b0601a322141b51b0660 /cli/proc_state.rs | |
parent | c66386dbd20b735161017a239c6af013da1f1718 (diff) |
perf: cache swc dependency analysis and don't hold onto `ParsedSource`s in memory (#15502)
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index 0ffca1fa9..6821e8183 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -7,6 +7,7 @@ use crate::args::TypeCheckMode; use crate::cache; use crate::cache::EmitCache; use crate::cache::FastInsecureHasher; +use crate::cache::ParsedSourceCache; use crate::cache::TypeCheckCache; use crate::compat; use crate::compat::NodeEsmResolver; @@ -82,6 +83,7 @@ pub struct Inner { pub broadcast_channel: InMemoryBroadcastChannel, pub shared_array_buffer_store: SharedArrayBufferStore, pub compiled_wasm_module_store: CompiledWasmModuleStore, + pub parsed_source_cache: ParsedSourceCache, maybe_resolver: Option<Arc<dyn deno_graph::source::Resolver + Send + Sync>>, maybe_file_watcher_reporter: Option<FileWatcherReporter>, pub npm_resolver: GlobalNpmPackageResolver, @@ -217,6 +219,8 @@ impl ProcState { warn!("{}", ignored_options); } let emit_cache = EmitCache::new(dir.gen_cache.clone()); + let parsed_source_cache = + ParsedSourceCache::new(Some(dir.dep_analysis_db_file_path())); let npm_resolver = GlobalNpmPackageResolver::from_deno_dir( &dir, cli_options.reload_flag(), @@ -242,6 +246,7 @@ impl ProcState { broadcast_channel, shared_array_buffer_store, compiled_wasm_module_store, + parsed_source_cache, maybe_resolver, maybe_file_watcher_reporter, npm_resolver, @@ -367,6 +372,7 @@ impl ProcState { None }; + let analyzer = self.parsed_source_cache.as_analyzer(); let graph = create_graph( roots.clone(), is_dynamic, @@ -374,7 +380,7 @@ impl ProcState { &mut loader, maybe_resolver, maybe_locker, - None, + Some(&*analyzer), maybe_file_watcher_reporter, ) .await; @@ -589,14 +595,15 @@ impl ProcState { let graph_data = self.graph_data.read(); for (specifier, entry) in graph_data.entries() { if let ModuleEntry::Module { - maybe_parsed_source: Some(parsed_source), - .. + code, media_type, .. } = entry { emit_parsed_source( &self.emit_cache, + &self.parsed_source_cache, specifier, - parsed_source, + *media_type, + code, &self.emit_options, self.emit_options_hash, )?; @@ -630,6 +637,7 @@ impl ProcState { .as_ref() .map(|im| im.as_resolver()) }; + let analyzer = self.parsed_source_cache.as_analyzer(); let graph = create_graph( roots, @@ -638,7 +646,7 @@ impl ProcState { &mut cache, maybe_resolver, maybe_locker, - None, + Some(&*analyzer), None, ) .await; |