diff options
author | Bradley Farias <bradley.meck@gmail.com> | 2017-11-20 10:49:54 -0600 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-11-28 02:52:43 +0100 |
commit | 2219859675743f158c46178464b2db042a6b3294 (patch) | |
tree | 04f8c6dc67186c3cee162cc3d7b9cac17ec7909a /lib/module.js | |
parent | b44efded8481877c1ec782112b9ae4c4fec37463 (diff) | |
download | android-node-v8-2219859675743f158c46178464b2db042a6b3294.tar.gz android-node-v8-2219859675743f158c46178464b2db042a6b3294.tar.bz2 android-node-v8-2219859675743f158c46178464b2db042a6b3294.zip |
module: be lazy when creating CJS facades
This should remove the penalty for loading CJS that is never imported.
PR-URL: https://github.com/nodejs/node/pull/17153
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/module.js')
-rw-r--r-- | lib/module.js | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/module.js b/lib/module.js index e1279b75bc..a2d772a381 100644 --- a/lib/module.js +++ b/lib/module.js @@ -575,15 +575,21 @@ Module.prototype.load = function(filename) { if (ESMLoader) { const url = getURLFromFilePath(filename); const urlString = `${url}`; + const exports = this.exports; if (ESMLoader.moduleMap.has(urlString) !== true) { - const ctx = createDynamicModule(['default'], url); - ctx.reflect.exports.default.set(this.exports); - ESMLoader.moduleMap.set(urlString, - new ModuleJob(ESMLoader, url, async () => ctx)); + ESMLoader.moduleMap.set( + urlString, + new ModuleJob(ESMLoader, url, async () => { + const ctx = createDynamicModule( + ['default'], url); + ctx.reflect.exports.default.set(exports); + return ctx; + }) + ); } else { const job = ESMLoader.moduleMap.get(urlString); if (job.reflect) - job.reflect.exports.default.set(this.exports); + job.reflect.exports.default.set(exports); } } }; |