summaryrefslogtreecommitdiff
path: root/cli/proc_state.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-08-22 12:14:59 -0400
committerGitHub <noreply@github.com>2022-08-22 12:14:59 -0400
commit7a1a082876298a4c9e37237074ea62942180d083 (patch)
tree690b46889987a9f576a1b0601a322141b51b0660 /cli/proc_state.rs
parentc66386dbd20b735161017a239c6af013da1f1718 (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.rs18
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;