Skip to content

Commit 0eb2ee3

Browse files
authored
refactor: move logger into pass and reorg some passes (#12742)
* refactor: move logger into pass and reorg some passes * chore: fix bench check
1 parent ad662bc commit 0eb2ee3

File tree

17 files changed

+321
-199
lines changed

17 files changed

+321
-199
lines changed

crates/rspack_core/src/compilation/build_module_graph/mod.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ mod graph_updater;
33
mod lazy_barrel_artifact;
44
mod module_executor;
55

6+
use std::sync::atomic::Ordering;
7+
68
use rspack_error::Result;
9+
use rspack_util::tracing_preset::TRACING_BENCH_TARGET;
10+
use tracing::instrument;
711

812
pub use self::{
913
artifact::{BuildModuleGraphArtifact, BuildModuleGraphArtifactState},
@@ -13,7 +17,36 @@ pub use self::{
1317
},
1418
module_executor::{ExecuteModuleId, ExecutedRuntimeModule, ModuleExecutor},
1519
};
16-
use crate::Compilation;
20+
use crate::{Compilation, logger::Logger};
21+
22+
pub async fn build_module_graph_pass(compilation: &mut Compilation) -> Result<()> {
23+
let logger = compilation.get_logger("rspack.Compiler");
24+
let start = logger.time("build module graph");
25+
compilation.do_build_module_graph().await?;
26+
logger.time_end(start);
27+
Ok(())
28+
}
29+
30+
impl Compilation {
31+
#[instrument("Compilation:build_module_graph",target=TRACING_BENCH_TARGET, skip_all)]
32+
async fn do_build_module_graph(&mut self) -> Result<()> {
33+
// run module_executor
34+
if let Some(module_executor) = &mut self.module_executor {
35+
let mut module_executor = std::mem::take(module_executor);
36+
module_executor.hook_before_make(self).await?;
37+
self.module_executor = Some(module_executor);
38+
}
39+
40+
let artifact = self.build_module_graph_artifact.take();
41+
self
42+
.build_module_graph_artifact
43+
.replace(build_module_graph(self, artifact).await?);
44+
45+
self.in_finish_make.store(true, Ordering::Release);
46+
47+
Ok(())
48+
}
49+
}
1750

1851
/// make module graph, support incremental rebuild
1952
///
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use rspack_error::Result;
2+
3+
use crate::{Compilation, SharedPluginDriver, logger::Logger};
4+
5+
pub async fn finish_make_pass(
6+
compilation: &mut Compilation,
7+
plugin_driver: SharedPluginDriver,
8+
) -> Result<()> {
9+
let logger = compilation.get_logger("rspack.Compiler");
10+
let start = logger.time("finish make hook");
11+
plugin_driver
12+
.compiler_hooks
13+
.finish_make
14+
.call(compilation)
15+
.await?;
16+
logger.time_end(start);
17+
18+
Ok(())
19+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
use std::sync::atomic::Ordering;
2+
3+
use rspack_error::Result;
4+
use rspack_util::tracing_preset::TRACING_BENCH_TARGET;
5+
use tracing::instrument;
6+
7+
use crate::{
8+
Compilation, cache::Cache, compilation::build_module_graph::finish_build_module_graph,
9+
logger::Logger,
10+
};
11+
12+
pub async fn finish_module_graph_pass(
13+
compilation: &mut Compilation,
14+
cache: &mut dyn Cache,
15+
) -> Result<()> {
16+
let logger = compilation.get_logger("rspack.Compiler");
17+
let start = logger.time("finish compilation");
18+
compilation.finish_build_module_graph().await?;
19+
cache
20+
.after_build_module_graph(&compilation.build_module_graph_artifact)
21+
.await;
22+
logger.time_end(start);
23+
24+
Ok(())
25+
}
26+
27+
impl Compilation {
28+
#[instrument("Compilation:finish",target=TRACING_BENCH_TARGET, skip_all)]
29+
pub async fn finish_build_module_graph(&mut self) -> Result<()> {
30+
self.in_finish_make.store(false, Ordering::Release);
31+
// clean up the entry deps
32+
let make_artifact = self.build_module_graph_artifact.take();
33+
self
34+
.build_module_graph_artifact
35+
.replace(finish_build_module_graph(self, make_artifact).await?);
36+
// sync assets to module graph from module_executor
37+
if let Some(module_executor) = &mut self.module_executor {
38+
let mut module_executor = std::mem::take(module_executor);
39+
module_executor.hook_after_finish_modules(self).await?;
40+
self.module_executor = Some(module_executor);
41+
}
42+
// make finished, make artifact should be readonly thereafter.
43+
Ok(())
44+
}
45+
}

crates/rspack_core/src/compilation/finish_module/mod.rs renamed to crates/rspack_core/src/compilation/finish_modules/mod.rs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1+
use rspack_error::Result;
2+
13
use super::*;
24
use crate::logger::Logger;
35

4-
impl Compilation {
5-
#[instrument("Compilation:finish",target=TRACING_BENCH_TARGET, skip_all)]
6-
pub async fn finish_build_module_graph(&mut self) -> Result<()> {
7-
self.in_finish_make.store(false, Ordering::Release);
8-
// clean up the entry deps
9-
let make_artifact = self.build_module_graph_artifact.take();
10-
self
11-
.build_module_graph_artifact
12-
.replace(finish_build_module_graph(self, make_artifact).await?);
13-
// sync assets to module graph from module_executor
14-
if let Some(module_executor) = &mut self.module_executor {
15-
let mut module_executor = std::mem::take(module_executor);
16-
module_executor.hook_after_finish_modules(self).await?;
17-
self.module_executor = Some(module_executor);
18-
}
19-
// make finished, make artifact should be readonly thereafter.
20-
Ok(())
21-
}
6+
pub async fn finish_modules_pass(compilation: &mut Compilation) -> Result<()> {
7+
let dependencies_diagnostics_artifact = compilation.dependencies_diagnostics_artifact.clone();
8+
let async_modules_artifact = compilation.async_modules_artifact.clone();
9+
let diagnostics = compilation
10+
.collect_build_module_graph_effects(
11+
&mut dependencies_diagnostics_artifact.borrow_mut(),
12+
&mut async_modules_artifact.borrow_mut(),
13+
)
14+
.await?;
15+
compilation.extend_diagnostics(diagnostics);
16+
17+
Ok(())
18+
}
2219

20+
impl Compilation {
2321
#[tracing::instrument("Compilation:collect_build_module_graph_effects", skip_all)]
2422
pub async fn collect_build_module_graph_effects(
2523
&mut self,
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use rspack_error::Result;
2+
3+
use crate::{Compilation, SharedPluginDriver, cache::Cache, logger::Logger};
4+
5+
pub async fn make_hook_pass(
6+
compilation: &mut Compilation,
7+
plugin_driver: SharedPluginDriver,
8+
cache: &mut dyn Cache,
9+
) -> Result<()> {
10+
let logger = compilation.get_logger("rspack.Compiler");
11+
12+
cache
13+
.before_build_module_graph(&mut compilation.build_module_graph_artifact)
14+
.await;
15+
16+
let start = logger.time("make hook");
17+
plugin_driver.compiler_hooks.make.call(compilation).await?;
18+
logger.time_end(start);
19+
20+
Ok(())
21+
}

crates/rspack_core/src/compilation/mod.rs

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ mod create_chunk_assets;
88
mod create_hash;
99
mod create_module_assets;
1010
mod create_module_hashes;
11-
mod finish_module;
11+
mod finish_make;
12+
mod finish_module_graph;
13+
mod finish_modules;
14+
mod make;
1215
mod module_ids;
1316
mod optimize_chunk_modules;
1417
mod optimize_chunks;
@@ -19,6 +22,7 @@ mod optimize_tree;
1922
mod process_assets;
2023
mod run_passes;
2124
mod runtime_requirements;
25+
mod seal;
2226
use std::{
2327
collections::{VecDeque, hash_map},
2428
fmt::{self, Debug},
@@ -74,8 +78,7 @@ use crate::{
7478
SourceType, Stats, ValueCacheVersions,
7579
build_chunk_graph::artifact::BuildChunkGraphArtifact,
7680
compilation::build_module_graph::{
77-
BuildModuleGraphArtifact, ModuleExecutor, UpdateParam, build_module_graph,
78-
finish_build_module_graph, update_module_graph,
81+
BuildModuleGraphArtifact, ModuleExecutor, UpdateParam, update_module_graph,
7982
},
8083
compiler::{CompilationRecords, CompilerId},
8184
get_runtime_key,
@@ -990,25 +993,6 @@ impl Compilation {
990993
ukey
991994
}
992995

993-
#[instrument("Compilation:build_module_graph",target=TRACING_BENCH_TARGET, skip_all)]
994-
pub async fn build_module_graph(&mut self) -> Result<()> {
995-
// run module_executor
996-
if let Some(module_executor) = &mut self.module_executor {
997-
let mut module_executor = std::mem::take(module_executor);
998-
module_executor.hook_before_make(self).await?;
999-
self.module_executor = Some(module_executor);
1000-
}
1001-
1002-
let artifact = self.build_module_graph_artifact.take();
1003-
self
1004-
.build_module_graph_artifact
1005-
.replace(build_module_graph(self, artifact).await?);
1006-
1007-
self.in_finish_make.store(true, Ordering::Release);
1008-
1009-
Ok(())
1010-
}
1011-
1012996
pub async fn rebuild_module<T>(
1013997
&mut self,
1014998
module_identifiers: IdentifierSet,
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
use super::*;
2+
use crate::logger::Logger;
23

34
pub async fn optimize_chunk_modules_pass(
45
compilation: &mut Compilation,
56
plugin_driver: SharedPluginDriver,
67
) -> Result<()> {
7-
plugin_driver
8+
let logger = compilation.get_logger("rspack.Compilation");
9+
let start = logger.time("optimize chunk modules");
10+
11+
let result = plugin_driver
812
.compilation_hooks
913
.optimize_chunk_modules
1014
.call(compilation)
1115
.await
1216
.map(|_| ())
13-
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeChunkModules"))
17+
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeChunkModules"));
18+
19+
logger.time_end(start);
20+
result
1421
}

crates/rspack_core/src/compilation/optimize_chunks/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
use super::*;
2+
use crate::logger::Logger;
23

34
pub async fn optimize_chunks_pass(
45
compilation: &mut Compilation,
56
plugin_driver: SharedPluginDriver,
67
) -> Result<()> {
8+
let logger = compilation.get_logger("rspack.Compilation");
9+
let start = logger.time("optimize chunks");
10+
711
while matches!(
812
plugin_driver
913
.compilation_hooks
@@ -13,5 +17,7 @@ pub async fn optimize_chunks_pass(
1317
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeChunks"))?,
1418
Some(true)
1519
) {}
20+
21+
logger.time_end(start);
1622
Ok(())
1723
}

crates/rspack_core/src/compilation/optimize_modules/mod.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
use super::*;
2+
use crate::logger::Logger;
23

34
pub async fn optimize_modules_pass(
45
compilation: &mut Compilation,
56
plugin_driver: SharedPluginDriver,
67
) -> Result<()> {
8+
let logger = compilation.get_logger("rspack.Compilation");
9+
let start = logger.time("optimize modules");
10+
711
let mut diagnostics = vec![];
812
while matches!(
913
plugin_driver
@@ -16,10 +20,13 @@ pub async fn optimize_modules_pass(
1620
) {}
1721
compilation.extend_diagnostics(diagnostics);
1822

19-
plugin_driver
23+
let result = plugin_driver
2024
.compilation_hooks
2125
.after_optimize_modules
2226
.call(compilation)
2327
.await
24-
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.afterOptimizeModules"))
28+
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.afterOptimizeModules"));
29+
30+
logger.time_end(start);
31+
result
2532
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
use super::*;
2+
use crate::logger::Logger;
23

34
pub async fn optimize_tree_pass(
45
compilation: &mut Compilation,
56
plugin_driver: SharedPluginDriver,
67
) -> Result<()> {
7-
plugin_driver
8+
let logger = compilation.get_logger("rspack.Compilation");
9+
let start = logger.time("optimize tree");
10+
11+
let result = plugin_driver
812
.compilation_hooks
913
.optimize_tree
1014
.call(compilation)
1115
.await
12-
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeTree"))
16+
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeTree"));
17+
18+
logger.time_end(start);
19+
result
1320
}

0 commit comments

Comments
 (0)