Skip to content

Commit 33f4af2

Browse files
hardfistCopilot
andauthored
refactor: split make phase (#12186)
* refactor: split make phase * chore: fix cargo check * Update crates/rspack_core/src/compiler/rebuild.rs Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent b4c08a1 commit 33f4af2

File tree

34 files changed

+190
-133
lines changed

34 files changed

+190
-133
lines changed

crates/rspack_binding_api/src/compilation/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ impl JsCompilation {
205205

206206
Ok(
207207
compilation
208-
.make_artifact
208+
.build_module_graph_artifact
209209
.built_modules()
210210
.filter_map(|module_id| {
211211
compilation
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::Cache;
2-
use crate::compilation::make::MakeArtifact;
2+
use crate::compilation::build_module_graph::BuildModuleGraphArtifact;
33

44
/// Disable cache implementation
55
///
@@ -9,7 +9,7 @@ pub struct DisableCache;
99

1010
#[async_trait::async_trait]
1111
impl Cache for DisableCache {
12-
async fn before_make(&mut self, make_artifact: &mut MakeArtifact) {
12+
async fn before_build_module_graph(&mut self, make_artifact: &mut BuildModuleGraphArtifact) {
1313
*make_artifact = Default::default();
1414
}
1515
}

crates/rspack_core/src/cache/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ use rspack_fs::{IntermediateFileSystem, ReadableFileSystem};
88

99
use self::{disable::DisableCache, memory::MemoryCache, persistent::PersistentCache};
1010
use crate::{
11-
Compilation, CompilerOptions, ExperimentCacheOptions, compilation::make::MakeArtifact,
11+
Compilation, CompilerOptions, ExperimentCacheOptions,
12+
compilation::build_module_graph::BuildModuleGraphArtifact,
1213
};
1314

1415
/// Cache trait
@@ -31,8 +32,8 @@ pub trait Cache: Debug + Send + Sync {
3132
}
3233
async fn after_compile(&mut self, _compilation: &Compilation) {}
3334

34-
async fn before_make(&mut self, _make_artifact: &mut MakeArtifact) {}
35-
async fn after_make(&mut self, _make_artifact: &MakeArtifact) {}
35+
async fn before_build_module_graph(&mut self, _make_artifact: &mut BuildModuleGraphArtifact) {}
36+
async fn after_build_module_graph(&mut self, _make_artifact: &BuildModuleGraphArtifact) {}
3637
}
3738

3839
pub fn new_cache(

crates/rspack_core/src/cache/persistent/mod.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use self::{
2323
use super::Cache;
2424
use crate::{
2525
Compilation, CompilerOptions, Logger,
26-
compilation::make::{MakeArtifact, MakeArtifactState},
26+
compilation::build_module_graph::{BuildModuleGraphArtifact, BuildModuleGraphArtifactState},
2727
};
2828

2929
#[derive(Debug, Clone, Hash)]
@@ -186,17 +186,20 @@ impl Cache for PersistentCache {
186186
}
187187
}
188188

189-
async fn before_make(&mut self, make_artifact: &mut MakeArtifact) {
189+
async fn before_build_module_graph(&mut self, make_artifact: &mut BuildModuleGraphArtifact) {
190190
// TODO When does not need to pass variables through make_artifact.state, use compilation.is_rebuild to check
191-
if matches!(make_artifact.state, MakeArtifactState::Uninitialized) {
191+
if matches!(
192+
make_artifact.state,
193+
BuildModuleGraphArtifactState::Uninitialized
194+
) {
192195
match self.make_occasion.recovery().await {
193196
Ok(artifact) => *make_artifact = artifact,
194197
Err(err) => self.warnings.push(err.to_string()),
195198
}
196199
}
197200
}
198201

199-
async fn after_make(&mut self, make_artifact: &MakeArtifact) {
202+
async fn after_build_module_graph(&mut self, make_artifact: &BuildModuleGraphArtifact) {
200203
self.make_occasion.save(make_artifact);
201204
}
202205
}

crates/rspack_core/src/cache/persistent/occasion/make/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use rustc_hash::FxHashSet;
1010
use super::super::{Storage, cacheable_context::CacheableContext};
1111
use crate::{
1212
FactorizeInfo, ModuleGraph,
13-
compilation::make::{MakeArtifact, MakeArtifactState},
13+
compilation::build_module_graph::{BuildModuleGraphArtifact, BuildModuleGraphArtifactState},
1414
utils::{FileCounter, ResourceId},
1515
};
1616

@@ -27,8 +27,8 @@ impl MakeOccasion {
2727
}
2828

2929
#[tracing::instrument(name = "Cache::Occasion::Make::save", skip_all)]
30-
pub fn save(&self, artifact: &MakeArtifact) {
31-
let MakeArtifact {
30+
pub fn save(&self, artifact: &BuildModuleGraphArtifact) {
31+
let BuildModuleGraphArtifact {
3232
// write all of field here to avoid forget to update occasion when add new fields
3333
// for module graph
3434
module_graph_partial,
@@ -69,7 +69,7 @@ impl MakeOccasion {
6969
}
7070

7171
#[tracing::instrument(name = "Cache::Occasion::Make::recovery", skip_all)]
72-
pub async fn recovery(&self) -> Result<MakeArtifact> {
72+
pub async fn recovery(&self) -> Result<BuildModuleGraphArtifact> {
7373
let (partial, module_to_lazy_make, entry_dependencies) =
7474
module_graph::recovery_module_graph(&self.storage, &self.context).await?;
7575

@@ -108,14 +108,14 @@ impl MakeOccasion {
108108
}
109109
}
110110

111-
Ok(MakeArtifact {
111+
Ok(BuildModuleGraphArtifact {
112112
// write all of field here to avoid forget to update occasion when add new fields
113113
// temporary data set to default
114114
affected_modules: Default::default(),
115115
affected_dependencies: Default::default(),
116116
issuer_update_modules: Default::default(),
117117

118-
state: MakeArtifactState::Initialized,
118+
state: BuildModuleGraphArtifactState::Initialized,
119119
module_graph_partial: partial,
120120
module_to_lazy_make,
121121

crates/rspack_core/src/cache/persistent/occasion/make/module_graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::{
1515
DependencyId, DependencyParents, ExportsInfoData, ModuleGraph, ModuleGraphConnection,
1616
ModuleGraphModule, ModuleGraphPartial, ModuleIdentifier, RayonConsumer,
1717
cache::persistent::cacheable_context::CacheableContext,
18-
compilation::make::{LazyDependencies, ModuleToLazyMake},
18+
compilation::build_module_graph::{LazyDependencies, ModuleToLazyMake},
1919
};
2020

2121
const SCOPE: &str = "occasion_make_module_graph";

crates/rspack_core/src/compilation/make/artifact.rs renamed to crates/rspack_core/src/compilation/build_module_graph/artifact.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_hash::FxHashSet as HashSet;
66

77
use crate::{
88
BuildDependency, DependencyId, FactorizeInfo, ModuleGraph, ModuleGraphPartial, ModuleIdentifier,
9-
compilation::make::ModuleToLazyMake,
9+
compilation::build_module_graph::ModuleToLazyMake,
1010
incremental_info::IncrementalInfo,
1111
utils::{FileCounter, ResourceId},
1212
};
@@ -17,21 +17,21 @@ use crate::{
1717
/// Make stage will update `MakeArtifact.state` to `Initialized`, and incremental rebuild will reuse
1818
/// the previous MakeArtifact, so persistent cache will never recovery again.
1919
#[derive(Debug, Default)]
20-
pub enum MakeArtifactState {
20+
pub enum BuildModuleGraphArtifactState {
2121
#[default]
2222
Uninitialized,
2323
Initialized,
2424
}
2525

2626
/// Make Artifact, including all side effects of the make stage.
2727
#[derive(Debug, Default)]
28-
pub struct MakeArtifact {
29-
// temporary data, used by subsequent steps of make, should be reset when rebuild.
30-
/// Make stage affected modules.
28+
pub struct BuildModuleGraphArtifact {
29+
// temporary data, used by subsequent steps of BuildModuleGraph, should be reset when rebuild.
30+
/// BuildModuleGraph stage affected modules.
3131
///
3232
/// This field will contain added modules, updated modules, removed modules.
3333
pub affected_modules: IncrementalInfo<ModuleIdentifier, BuildHasherDefault<IdentifierHasher>>,
34-
/// Make stage affected dependencies.
34+
/// BuildModuleGraph stage affected dependencies.
3535
///
3636
/// This field will contain added dependencies, updated dependencies, removed dependencies.
3737
pub affected_dependencies: IncrementalInfo<DependencyId>,
@@ -44,8 +44,8 @@ pub struct MakeArtifact {
4444
/// Field to mark whether artifact has been initialized.
4545
///
4646
/// Only Default::default() is Uninitialized, `update_module_graph` will set this field to Initialized
47-
/// Persistent cache will update MakeArtifact and set force_build_deps to this field when this is Uninitialized.
48-
pub state: MakeArtifactState,
47+
/// Persistent cache will update BuildModuleGraphArtifact and set force_build_deps to this field when this is Uninitialized.
48+
pub state: BuildModuleGraphArtifactState,
4949
/// Module graph data
5050
pub module_graph_partial: ModuleGraphPartial,
5151
pub module_to_lazy_make: ModuleToLazyMake,
@@ -67,7 +67,7 @@ pub struct MakeArtifact {
6767
pub build_dependencies: FileCounter,
6868
}
6969

70-
impl MakeArtifact {
70+
impl BuildModuleGraphArtifact {
7171
pub fn get_module_graph(&self) -> ModuleGraph<'_> {
7272
ModuleGraph::new([Some(&self.module_graph_partial), None], None)
7373
}

crates/rspack_core/src/compilation/make/graph_updater/cutout/fix_build_meta.rs renamed to crates/rspack_core/src/compilation/build_module_graph/graph_updater/cutout/fix_build_meta.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rspack_collections::{IdentifierMap, IdentifierSet};
22
use rspack_error::Diagnosable;
33

4-
use super::MakeArtifact;
4+
use super::BuildModuleGraphArtifact;
55
use crate::{BuildMeta, Module};
66

77
/// A toolkit for cutout to fix build meta
@@ -14,7 +14,11 @@ pub struct FixBuildMeta {
1414
}
1515

1616
impl FixBuildMeta {
17-
pub fn analyze_force_build_modules(&mut self, artifact: &MakeArtifact, ids: &IdentifierSet) {
17+
pub fn analyze_force_build_modules(
18+
&mut self,
19+
artifact: &BuildModuleGraphArtifact,
20+
ids: &IdentifierSet,
21+
) {
1822
let module_graph = artifact.get_module_graph();
1923
for module_identifier in ids {
2024
let module = module_graph
@@ -26,7 +30,7 @@ impl FixBuildMeta {
2630
}
2731
}
2832

29-
pub fn fix_artifact(self, artifact: &mut MakeArtifact) {
33+
pub fn fix_artifact(self, artifact: &mut BuildModuleGraphArtifact) {
3034
let mut module_graph = artifact.get_module_graph_mut();
3135
for (id, build_meta) in self.origin_module_build_meta {
3236
if let Some(module) = module_graph.module_by_identifier_mut(&id)

crates/rspack_core/src/compilation/make/graph_updater/cutout/fix_issuers.rs renamed to crates/rspack_core/src/compilation/build_module_graph/graph_updater/cutout/fix_issuers.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::collections::VecDeque;
33
use rspack_collections::{IdentifierMap, IdentifierSet};
44
use rustc_hash::FxHashSet as HashSet;
55

6-
use super::MakeArtifact;
6+
use super::BuildModuleGraphArtifact;
77
use crate::{DependencyId, ModuleGraph, ModuleIdentifier, ModuleIssuer};
88

99
/// Result of IssuerHelper.is_issuer.
@@ -116,7 +116,11 @@ impl FixIssuers {
116116
/// This function will
117117
/// 1. save the issuer of force_build_module to self.force_build_module_issuers.
118118
/// 2. add force_build_module and the child module whose issuer is this force_build_module to self.need_check_modules.
119-
pub fn analyze_force_build_modules(&mut self, artifact: &MakeArtifact, ids: &IdentifierSet) {
119+
pub fn analyze_force_build_modules(
120+
&mut self,
121+
artifact: &BuildModuleGraphArtifact,
122+
ids: &IdentifierSet,
123+
) {
120124
let module_graph = artifact.get_module_graph();
121125
for module_identifier in ids {
122126
let mgm = module_graph
@@ -157,7 +161,7 @@ impl FixIssuers {
157161
/// this function will add the dependency target module to self.need_check_modules
158162
pub fn analyze_force_build_dependencies(
159163
&mut self,
160-
artifact: &MakeArtifact,
164+
artifact: &BuildModuleGraphArtifact,
161165
ids: &HashSet<DependencyId>,
162166
) {
163167
let module_graph = artifact.get_module_graph();
@@ -201,7 +205,7 @@ impl FixIssuers {
201205
/// 4. return the module with invalid issuer and its parents.
202206
fn apply_force_build_module_issuer(
203207
self,
204-
artifact: &mut MakeArtifact,
208+
artifact: &mut BuildModuleGraphArtifact,
205209
) -> IdentifierMap<Vec<Option<ModuleIdentifier>>> {
206210
let Self {
207211
mut force_build_module_issuers,
@@ -249,7 +253,7 @@ impl FixIssuers {
249253
///
250254
/// After this step, the issuer of all module are valid and we can use IssuerHelper in next steps.
251255
fn try_set_first_incoming(
252-
artifact: &mut MakeArtifact,
256+
artifact: &mut BuildModuleGraphArtifact,
253257
need_update_issuer_modules: IdentifierMap<Vec<Option<ModuleIdentifier>>>,
254258
) -> IdentifierMap<Vec<Option<ModuleIdentifier>>> {
255259
let mut queue = VecDeque::with_capacity(need_update_issuer_modules.len());
@@ -345,7 +349,7 @@ impl FixIssuers {
345349
/// - any module set issuer success should check if the current module affects modules in `need_clean_cycle_modules`.
346350
/// 4. return need_clean_cycle_modules but remove cycle_paths info.
347351
fn set_available_issuer(
348-
artifact: &mut MakeArtifact,
352+
artifact: &mut BuildModuleGraphArtifact,
349353
helper: &mut IssuerHelper,
350354
need_check_available_modules: IdentifierMap<Vec<Option<ModuleIdentifier>>>,
351355
) -> IdentifierMap<IdentifierSet> {
@@ -405,7 +409,7 @@ impl FixIssuers {
405409
/// - if a module can be modified to be an available issuer, then starting from the current module,
406410
/// re-update the issuers of all checked modules.
407411
fn clean_cycle_module(
408-
artifact: &mut MakeArtifact,
412+
artifact: &mut BuildModuleGraphArtifact,
409413
helper: &mut IssuerHelper,
410414
clean_modules: IdentifierMap<IdentifierSet>,
411415
) -> IdentifierMap<Vec<Option<ModuleIdentifier>>> {
@@ -519,7 +523,7 @@ impl FixIssuers {
519523
}
520524

521525
/// fix artifact module graph issuers
522-
pub fn fix_artifact(self, artifact: &mut MakeArtifact) {
526+
pub fn fix_artifact(self, artifact: &mut BuildModuleGraphArtifact) {
523527
let mut need_update_issuer_modules = self.apply_force_build_module_issuer(artifact);
524528

525529
let mut helper = IssuerHelper::default();

crates/rspack_core/src/compilation/make/graph_updater/cutout/mod.rs renamed to crates/rspack_core/src/compilation/build_module_graph/graph_updater/cutout/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rspack_collections::IdentifierSet;
55
use rustc_hash::FxHashSet as HashSet;
66

77
use self::{fix_build_meta::FixBuildMeta, fix_issuers::FixIssuers};
8-
use super::{MakeArtifact, UpdateParam};
8+
use super::{BuildModuleGraphArtifact, UpdateParam};
99
use crate::{BuildDependency, Compilation, ResourceId};
1010

1111
/// Cutout module graph.
@@ -28,7 +28,7 @@ impl Cutout {
2828
pub fn cutout_artifact(
2929
&mut self,
3030
compilation: &Compilation,
31-
artifact: &mut MakeArtifact,
31+
artifact: &mut BuildModuleGraphArtifact,
3232
params: Vec<UpdateParam>,
3333
) -> HashSet<BuildDependency> {
3434
// the entry dependencies after update module graph
@@ -156,7 +156,7 @@ impl Cutout {
156156
}
157157

158158
/// Fix artifact, the last step to incrementally update MakeArtifact.
159-
pub fn fix_artifact(self, artifact: &mut MakeArtifact) {
159+
pub fn fix_artifact(self, artifact: &mut BuildModuleGraphArtifact) {
160160
let Self {
161161
fix_issuers,
162162
fix_build_meta,

0 commit comments

Comments
 (0)