summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index fd33d295c..2d685ce76 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -9,6 +9,7 @@ use crate::args::PackageJsonDepsProvider;
use crate::args::StorageKeyResolver;
use crate::args::TsConfigType;
use crate::cache::Caches;
+use crate::cache::CodeCache;
use crate::cache::DenoDir;
use crate::cache::DenoDirProvider;
use crate::cache::EmitCache;
@@ -178,6 +179,7 @@ struct CliFactoryServices {
cjs_resolutions: Deferred<Arc<CjsResolutionStore>>,
cli_node_resolver: Deferred<Arc<CliNodeResolver>>,
feature_checker: Deferred<Arc<FeatureChecker>>,
+ code_cache: Deferred<Arc<CodeCache>>,
}
pub struct CliFactory {
@@ -226,6 +228,9 @@ impl CliFactory {
_ = caches.fast_check_db();
_ = caches.type_checking_cache_db();
}
+ if self.options.code_cache_enabled() {
+ _ = caches.code_cache_db();
+ }
}
_ => {}
}
@@ -534,6 +539,12 @@ impl CliFactory {
})
}
+ pub fn code_cache(&self) -> Result<&Arc<CodeCache>, AnyError> {
+ self.services.code_cache.get_or_try_init(|| {
+ Ok(Arc::new(CodeCache::new(self.caches()?.code_cache_db())))
+ })
+ }
+
pub fn parsed_source_cache(&self) -> &Arc<ParsedSourceCache> {
self
.services
@@ -790,6 +801,12 @@ impl CliFactory {
fs.clone(),
cli_node_resolver.clone(),
),
+ if self.options.code_cache_enabled() {
+ Some(self.code_cache()?.clone())
+ } else {
+ None
+ },
+ self.module_info_cache()?.clone(),
)),
self.root_cert_store_provider().clone(),
self.fs().clone(),
@@ -804,6 +821,11 @@ impl CliFactory {
// self.options.disable_deprecated_api_warning,
true,
self.options.verbose_deprecated_api_warning,
+ if self.options.code_cache_enabled() {
+ Some(self.code_cache()?.clone())
+ } else {
+ None
+ },
))
}