Skip to content

Commit 1dc4b72

Browse files
stormslowlyCPunisherCopilot
authored
refactor: use compilation readonly ref in codegen optimization hook (#12743)
* refactor: use compilation readonly ref in code generation optimization hook * chore: debug bench ci * fix: 🐛 use offical codseed action * Debug ci * Remove debugger * Limit tokio and rayon worker threads * Revert "Limit tokio and rayon worker threads" This reverts commit 10fe6ac. * Update crates/rspack_plugin_progress/src/lib.rs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: CPunisher <1343316114@qq.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 2f0bc17 commit 1dc4b72

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

crates/rspack_core/src/compilation/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ define_hook!(CompilationAdditionalChunkRuntimeRequirements: Series(compilation:
113113
define_hook!(CompilationRuntimeRequirementInChunk: SeriesBail(compilation: &mut Compilation, chunk_ukey: &ChunkUkey, all_runtime_requirements: &RuntimeGlobals, runtime_requirements: &RuntimeGlobals, runtime_requirements_mut: &mut RuntimeGlobals));
114114
define_hook!(CompilationAdditionalTreeRuntimeRequirements: Series(compilation: &mut Compilation, chunk_ukey: &ChunkUkey, runtime_requirements: &mut RuntimeGlobals));
115115
define_hook!(CompilationRuntimeRequirementInTree: SeriesBail(compilation: &mut Compilation, chunk_ukey: &ChunkUkey, all_runtime_requirements: &RuntimeGlobals, runtime_requirements: &RuntimeGlobals, runtime_requirements_mut: &mut RuntimeGlobals));
116-
define_hook!(CompilationOptimizeCodeGeneration: Series(compilation: &mut Compilation));
116+
define_hook!(CompilationOptimizeCodeGeneration: Series(compilation: &Compilation, build_module_graph_artifact: &mut BuildModuleGraphArtifact, diagnostics: &mut Vec<Diagnostic>));
117117
define_hook!(CompilationAfterCodeGeneration: Series(compilation: &Compilation, diagnostics: &mut Vec<Diagnostic>));
118118
define_hook!(CompilationChunkHash: Series(compilation: &Compilation, chunk_ukey: &ChunkUkey, hasher: &mut RspackHash),tracing=false);
119119
define_hook!(CompilationContentHash: Series(compilation: &Compilation, chunk_ukey: &ChunkUkey, hashes: &mut HashMap<SourceType, RspackHash>));

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,25 @@ pub async fn optimize_code_generation_pass(
77
) -> Result<()> {
88
let logger = compilation.get_logger("rspack.Compilation");
99
let start = logger.time("optimize code generation");
10+
11+
let mut build_module_graph_artifact = compilation.build_module_graph_artifact.take();
12+
let mut diagnostics = vec![];
1013
plugin_driver
1114
.compilation_hooks
1215
.optimize_code_generation
13-
.call(compilation)
16+
.call(
17+
compilation,
18+
&mut build_module_graph_artifact,
19+
&mut diagnostics,
20+
)
1421
.await
1522
.map_err(|e| e.wrap_err("caused by plugins in Compilation.hooks.optimizeCodeGeneration"))?;
23+
24+
compilation
25+
.build_module_graph_artifact
26+
.replace(build_module_graph_artifact);
27+
compilation.extend_diagnostics(diagnostics);
28+
1629
logger.time_end(start);
1730
Ok(())
1831
}

crates/rspack_plugin_javascript/src/plugin/mangle_exports_plugin.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ use regex::Regex;
66
use rspack_core::{
77
BuildMetaExportsType, Compilation, CompilationOptimizeCodeGeneration, ExportInfo, ExportProvided,
88
ExportsInfo, ExportsInfoGetter, ModuleGraph, Plugin, PrefetchExportsInfoMode,
9-
PrefetchedExportsInfoWrapper, UsageState, UsedNameItem, incremental::IncrementalPasses,
9+
PrefetchedExportsInfoWrapper, UsageState, UsedNameItem,
10+
build_module_graph::BuildModuleGraphArtifact, incremental::IncrementalPasses,
1011
};
11-
use rspack_error::Result;
12+
use rspack_error::{Diagnostic, Result};
1213
use rspack_hook::{plugin, plugin_hook};
1314
use rspack_ids::id_helpers::assign_deterministic_ids;
1415
use rspack_util::atom::Atom;
@@ -59,17 +60,22 @@ struct ExportInfoCache {
5960
}
6061

6162
#[plugin_hook(CompilationOptimizeCodeGeneration for MangleExportsPlugin)]
62-
async fn optimize_code_generation(&self, compilation: &mut Compilation) -> Result<()> {
63+
async fn optimize_code_generation(
64+
&self,
65+
compilation: &Compilation,
66+
build_module_graph_artifact: &mut BuildModuleGraphArtifact,
67+
diagnostics: &mut Vec<Diagnostic>,
68+
) -> Result<()> {
6369
if let Some(diagnostic) = compilation.incremental.disable_passes(
6470
IncrementalPasses::MODULES_HASHES,
6571
"MangleExportsPlugin (optimization.mangleExports = true)",
6672
"it requires calculating the export names of all the modules, which is a global effect",
6773
) && let Some(diagnostic) = diagnostic
6874
{
69-
compilation.push_diagnostic(diagnostic);
75+
diagnostics.push(diagnostic);
7076
}
7177

72-
let mg = compilation.get_module_graph_mut();
78+
let mg = build_module_graph_artifact.get_module_graph_mut();
7379
let modules = mg.modules();
7480

7581
let mut exports_info_cache = FxHashMap::default();

crates/rspack_plugin_progress/src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,12 @@ async fn chunk_ids(
509509
}
510510

511511
#[plugin_hook(CompilationOptimizeCodeGeneration for ProgressPlugin)]
512-
async fn optimize_code_generation(&self, _compilation: &mut Compilation) -> Result<()> {
512+
async fn optimize_code_generation(
513+
&self,
514+
_compilation: &Compilation,
515+
_build_module_graph_artifact: &mut BuildModuleGraphArtifact,
516+
_diagnostics: &mut Vec<Diagnostic>,
517+
) -> Result<()> {
513518
self.sealing_hooks_report("code generation", 26).await
514519
}
515520

0 commit comments

Comments
 (0)