Skip to content

Commit 9aa0276

Browse files
authored
perf(compile): remove swc from denort (#27721)
This is achieved by storing CJS export analysis ahead of time in the executable, which should also improve the performance of `denort` by this never being done anymore (I'm too lazy atm to bench this, but it will be significant for some programs).
1 parent b962b87 commit 9aa0276

File tree

24 files changed

+1365
-906
lines changed

24 files changed

+1365
-906
lines changed

Cargo.lock

Lines changed: 7 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ deno_core = { version = "0.331.0" }
5656
deno_bench_util = { version = "0.180.0", path = "./bench_util" }
5757
deno_config = { version = "=0.45.0", features = ["workspace", "sync"] }
5858
deno_lockfile = "=0.24.0"
59-
deno_media_type = { version = "0.2.3", features = ["module_specifier"] }
59+
deno_media_type = { version = "0.2.4", features = ["module_specifier"] }
6060
deno_npm = "=0.27.2"
6161
deno_path_util = "=0.3.0"
6262
deno_permissions = { version = "0.45.0", path = "./runtime/permissions" }

cli/factory.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -813,19 +813,11 @@ impl CliFactory {
813813
.services
814814
.node_code_translator
815815
.get_or_try_init_async(async {
816-
let caches = self.caches()?;
817-
let node_analysis_cache =
818-
NodeAnalysisCache::new(caches.node_analysis_db());
819816
let node_resolver = self.node_resolver().await?.clone();
820-
let cjs_esm_analyzer = CliCjsCodeAnalyzer::new(
821-
node_analysis_cache,
822-
self.cjs_tracker()?.clone(),
823-
self.fs().clone(),
824-
Some(self.parsed_source_cache().clone()),
825-
);
817+
let cjs_code_analyzer = self.create_cjs_code_analyzer()?;
826818

827819
Ok(Arc::new(NodeCodeTranslator::new(
828-
cjs_esm_analyzer,
820+
cjs_code_analyzer,
829821
self.in_npm_pkg_checker()?.clone(),
830822
node_resolver,
831823
self.npm_resolver().await?.clone(),
@@ -836,6 +828,17 @@ impl CliFactory {
836828
.await
837829
}
838830

831+
fn create_cjs_code_analyzer(&self) -> Result<CliCjsCodeAnalyzer, AnyError> {
832+
let caches = self.caches()?;
833+
let node_analysis_cache = NodeAnalysisCache::new(caches.node_analysis_db());
834+
Ok(CliCjsCodeAnalyzer::new(
835+
node_analysis_cache,
836+
self.cjs_tracker()?.clone(),
837+
self.fs().clone(),
838+
Some(self.parsed_source_cache().clone()),
839+
))
840+
}
841+
839842
pub async fn npm_req_resolver(
840843
&self,
841844
) -> Result<&Arc<CliNpmReqResolver>, AnyError> {
@@ -1025,6 +1028,7 @@ impl CliFactory {
10251028
) -> Result<DenoCompileBinaryWriter, AnyError> {
10261029
let cli_options = self.cli_options()?;
10271030
Ok(DenoCompileBinaryWriter::new(
1031+
self.create_cjs_code_analyzer()?,
10281032
self.cjs_tracker()?,
10291033
self.cli_options()?,
10301034
self.deno_dir()?,

0 commit comments

Comments
 (0)