Skip to content

Commit e1d65d9

Browse files
joyeecheungaduh95
authored andcommitted
module: load ESM helpers eagerly in the snapshot
Since the ESM loader is captured in the snapshot now, there's no need to lazy load the helpers. Load them eagerly to capture them into the snapshot. This also reduces the noise coming out of --print-bytecode since we no longer compile the helper functions at run time. Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> PR-URL: #63550 Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
1 parent c61f90d commit e1d65d9

2 files changed

Lines changed: 6 additions & 24 deletions

File tree

‎lib/internal/modules/esm/loader.js‎

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ const {
1414
hardenRegExp,
1515
}=primordials;
1616

17-
17+
const{ LoadCache, ResolveCache }=require('internal/modules/esm/module_map');
18+
const{ ModuleJob, ModuleJobSync }=require('internal/modules/esm/module_job');
1819
// This is needed to avoid cycles in esm/resolve <-> cjs/loader
1920
const{
2021
kIsExecuting,
@@ -85,24 +86,6 @@ const { isPromise } = require('internal/util/types');
8586
* @typedef {import('url').URL} URL
8687
*/
8788

88-
/**
89-
* Lazy loads the module_map module and returns a new instance of ResolveCache.
90-
* @returns {import('./module_map.js').ResolveCache}
91-
*/
92-
functionnewResolveCache(){
93-
const{ ResolveCache }=require('internal/modules/esm/module_map');
94-
returnnewResolveCache();
95-
}
96-
97-
/**
98-
* Generate a load cache (to store the final result of a load-chain for a particular module).
99-
* @returns {import('./module_map.js').LoadCache}
100-
*/
101-
functionnewLoadCache(){
102-
const{ LoadCache }=require('internal/modules/esm/module_map');
103-
returnnewLoadCache();
104-
}
105-
10689
const{ translators }=require('internal/modules/esm/translators');
10790
const{ defaultResolve }=require('internal/modules/esm/resolve');
10891
const{ defaultLoadSync, throwUnknownModuleFormat }=require('internal/modules/esm/load');
@@ -161,12 +144,12 @@ class ModuleLoader {
161144
/**
162145
* Registry of resolved specifiers
163146
*/
164-
#resolveCache =newResolveCache();
147+
#resolveCache =newResolveCache();
165148

166149
/**
167150
* Registry of loaded modules, akin to `require.cache`
168151
*/
169-
loadCache=newLoadCache();
152+
loadCache=newLoadCache();
170153

171154
/**
172155
* @see {AsyncLoaderHooks.isForAsyncLoaderHookWorker}
@@ -238,7 +221,6 @@ class ModuleLoader {
238221
* @returns {Promise<object>} The module object.
239222
*/
240223
asyncexecuteModuleJob(url,wrap,isEntryPoint=false){
241-
const{ ModuleJob }=require('internal/modules/esm/module_job');
242224
constmodule=awaitonImport.tracePromise(async()=>{
243225
constjob=newModuleJob(this,url,undefined,wrap,kEvaluationPhase,false,false,kImportInImportedESM);
244226
this.loadCache.set(url,undefined,job);
@@ -357,7 +339,6 @@ class ModuleLoader {
357339
constwrap=compileSourceTextModule(url,source,kUser);
358340
constinspectBrk=(isMain&&getOptionValue('--inspect-brk'));
359341

360-
const{ ModuleJobSync }=require('internal/modules/esm/module_job');
361342
job=newModuleJobSync(this,url,kEmptyObject,wrap,kEvaluationPhase,isMain,inspectBrk,
362343
kImportInRequiredESM);
363344
this.loadCache.set(url,kImplicitTypeAttribute,job);
@@ -587,7 +568,6 @@ class ModuleLoader {
587568
assert(moduleOrModulePromiseinstanceofModuleWrap,`Expected ModuleWrap for loading ${url}`);
588569
}
589570

590-
const{ ModuleJob, ModuleJobSync }=require('internal/modules/esm/module_job');
591571
// TODO(joyeecheung): use ModuleJobSync for kRequireInImportedCJS too.
592572
constModuleJobCtor=(requestType===kImportInRequiredESM ? ModuleJobSync : ModuleJob);
593573
constisMain=(parentURL===undefined);

‎test/parallel/test-bootstrap-modules.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ if (isMainThread) {
133133
'NativeModule internal/modules/esm/load',
134134
'NativeModule internal/modules/esm/resolve',
135135
'NativeModule internal/modules/esm/translators',
136+
'NativeModule internal/modules/esm/module_job',
137+
'NativeModule internal/modules/esm/module_map',
136138
'NativeModule url',
137139
].forEach(expected.beforePreExec.add.bind(expected.beforePreExec));
138140
}else{// Worker.

0 commit comments

Comments
 (0)