Skip to content

Commit a53b51d

Browse files
joyeecheungsxa
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 3e6b4da commit a53b51d

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,
@@ -81,24 +82,6 @@ const { isPromise } = require('internal/util/types');
8182
* @typedef {import('url').URL} URL
8283
*/
8384

84-
/**
85-
* Lazy loads the module_map module and returns a new instance of ResolveCache.
86-
* @returns {import('./module_map.js').ResolveCache}
87-
*/
88-
function newResolveCache() {
89-
const { ResolveCache } = require('internal/modules/esm/module_map');
90-
return new ResolveCache();
91-
}
92-
93-
/**
94-
* Generate a load cache (to store the final result of a load-chain for a particular module).
95-
* @returns {import('./module_map.js').LoadCache}
96-
*/
97-
function newLoadCache() {
98-
const { LoadCache } = require('internal/modules/esm/module_map');
99-
return new LoadCache();
100-
}
101-
10285
const { translators } = require('internal/modules/esm/translators');
10386
const { defaultResolve } = require('internal/modules/esm/resolve');
10487
const { defaultLoadSync, throwUnknownModuleFormat } = require('internal/modules/esm/load');
@@ -157,12 +140,12 @@ class ModuleLoader {
157140
/**
158141
* Registry of resolved specifiers
159142
*/
160-
#resolveCache = newResolveCache();
143+
#resolveCache = new ResolveCache();
161144

162145
/**
163146
* Registry of loaded modules, akin to `require.cache`
164147
*/
165-
loadCache = newLoadCache();
148+
loadCache = new LoadCache();
166149

167150
/**
168151
* @see {AsyncLoaderHooks.isForAsyncLoaderHookWorker}
@@ -235,7 +218,6 @@ class ModuleLoader {
235218
* @returns {Promise<object>} The module object.
236219
*/
237220
async executeModuleJob(url, wrap, isEntryPoint = false) {
238-
const { ModuleJob } = require('internal/modules/esm/module_job');
239221
const module = await onImport.tracePromise(async () => {
240222
const job = new ModuleJob(this, url, undefined, wrap, kEvaluationPhase, false, false, kImportInImportedESM);
241223
this.loadCache.set(url, undefined, job);
@@ -354,7 +336,6 @@ class ModuleLoader {
354336
const wrap = compileSourceTextModule(url, source, this);
355337
const inspectBrk = (isMain && getOptionValue('--inspect-brk'));
356338

357-
const { ModuleJobSync } = require('internal/modules/esm/module_job');
358339
job = new ModuleJobSync(this, url, kEmptyObject, wrap, kEvaluationPhase, isMain, inspectBrk,
359340
kImportInRequiredESM);
360341
this.loadCache.set(url, kImplicitTypeAttribute, job);
@@ -584,7 +565,6 @@ class ModuleLoader {
584565
assert(moduleOrModulePromise instanceof ModuleWrap, `Expected ModuleWrap for loading ${url}`);
585566
}
586567

587-
const { ModuleJob, ModuleJobSync } = require('internal/modules/esm/module_job');
588568
// TODO(joyeecheung): use ModuleJobSync for kRequireInImportedCJS too.
589569
const ModuleJobCtor = (requestType === kImportInRequiredESM ? ModuleJobSync : ModuleJob);
590570
const isMain = (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)