summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/bootstrap/loaders.js3
-rw-r--r--lib/internal/bootstrap/pre_execution.js5
-rw-r--r--lib/internal/modules/esm/create_dynamic_module.js3
-rw-r--r--lib/internal/modules/esm/translators.js2
-rw-r--r--lib/internal/process/esm_loader.js5
-rw-r--r--lib/internal/vm/source_text_module.js6
-rw-r--r--lib/vm.js2
7 files changed, 12 insertions, 14 deletions
diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js
index e4d1a09587..7a98e4c96c 100644
--- a/lib/internal/bootstrap/loaders.js
+++ b/lib/internal/bootstrap/loaders.js
@@ -135,9 +135,6 @@ let internalBinding;
};
}
-// Create this WeakMap in js-land because V8 has no C++ API for WeakMap.
-internalBinding('module_wrap').callbackMap = new WeakMap();
-
// Think of this as module.exports in this file even though it is not
// written in CommonJS style.
const loaderExports = {
diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js
index 93ede41419..6fb574dfca 100644
--- a/lib/internal/bootstrap/pre_execution.js
+++ b/lib/internal/bootstrap/pre_execution.js
@@ -1,6 +1,6 @@
'use strict';
-const { Object } = primordials;
+const { Object, SafeWeakMap } = primordials;
const { getOptionValue } = require('internal/options');
const { Buffer } = require('buffer');
@@ -342,6 +342,9 @@ function initializeCJSLoader() {
}
function initializeESMLoader() {
+ // Create this WeakMap in js-land because V8 has no C++ API for WeakMap.
+ internalBinding('module_wrap').callbackMap = new SafeWeakMap();
+
const experimentalModules = getOptionValue('--experimental-modules');
const experimentalVMModules = getOptionValue('--experimental-vm-modules');
if (experimentalModules || experimentalVMModules) {
diff --git a/lib/internal/modules/esm/create_dynamic_module.js b/lib/internal/modules/esm/create_dynamic_module.js
index 6b8fee4f4e..eea01bed31 100644
--- a/lib/internal/modules/esm/create_dynamic_module.js
+++ b/lib/internal/modules/esm/create_dynamic_module.js
@@ -2,7 +2,6 @@
const { ArrayPrototype } = primordials;
-const { ModuleWrap, callbackMap } = internalBinding('module_wrap');
const debug = require('internal/util/debuglog').debuglog('esm');
const createDynamicModule = (exports, url = '', evaluate) => {
@@ -21,7 +20,7 @@ import.meta.exports.${name} = {
import.meta.done();
`;
-
+ const { ModuleWrap, callbackMap } = internalBinding('module_wrap');
const m = new ModuleWrap(source, `${url}`);
m.link(() => 0);
m.instantiate();
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index 8494f5e307..72350fb2b2 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -7,7 +7,6 @@ const {
} = primordials;
const { NativeModule } = require('internal/bootstrap/loaders');
-const { ModuleWrap, callbackMap } = internalBinding('module_wrap');
const {
stripShebang,
stripBOM
@@ -45,6 +44,7 @@ async function importModuleDynamically(specifier, { url }) {
translators.set('module', async function moduleStrategy(url) {
const source = `${await readFileAsync(new URL(url))}`;
debug(`Translating StandardModule ${url}`);
+ const { ModuleWrap, callbackMap } = internalBinding('module_wrap');
const module = new ModuleWrap(stripShebang(source), url);
callbackMap.set(module, {
initializeImportMeta,
diff --git a/lib/internal/process/esm_loader.js b/lib/internal/process/esm_loader.js
index 6225ea81ab..0ad53545e8 100644
--- a/lib/internal/process/esm_loader.js
+++ b/lib/internal/process/esm_loader.js
@@ -1,9 +1,6 @@
'use strict';
const {
- callbackMap,
-} = internalBinding('module_wrap');
-const {
ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING,
} = require('internal/errors').codes;
@@ -14,6 +11,7 @@ const {
} = require('internal/vm/source_text_module');
exports.initializeImportMetaObject = function(wrap, meta) {
+ const { callbackMap } = internalBinding('module_wrap');
if (callbackMap.has(wrap)) {
const { initializeImportMeta } = callbackMap.get(wrap);
if (initializeImportMeta !== undefined) {
@@ -23,6 +21,7 @@ exports.initializeImportMetaObject = function(wrap, meta) {
};
exports.importModuleDynamicallyCallback = async function(wrap, specifier) {
+ const { callbackMap } = internalBinding('module_wrap');
if (callbackMap.has(wrap)) {
const { importModuleDynamically } = callbackMap.get(wrap);
if (importModuleDynamically !== undefined) {
diff --git a/lib/internal/vm/source_text_module.js b/lib/internal/vm/source_text_module.js
index 626fe541e1..881c298ce5 100644
--- a/lib/internal/vm/source_text_module.js
+++ b/lib/internal/vm/source_text_module.js
@@ -25,16 +25,16 @@ const {
validateString
} = require('internal/validators');
+const binding = internalBinding('module_wrap');
const {
ModuleWrap,
- callbackMap,
kUninstantiated,
kInstantiating,
kInstantiated,
kEvaluating,
kEvaluated,
kErrored,
-} = internalBinding('module_wrap');
+} = binding;
const STATUS_MAP = {
[kUninstantiated]: 'uninstantiated',
@@ -116,7 +116,7 @@ class SourceTextModule {
linkingStatusMap.set(this, 'unlinked');
wrapToModuleMap.set(wrap, this);
- callbackMap.set(wrap, {
+ binding.callbackMap.set(wrap, {
initializeImportMeta,
importModuleDynamically: importModuleDynamically ? async (...args) => {
const m = await importModuleDynamically(...args);
diff --git a/lib/vm.js b/lib/vm.js
index d06fc835fc..8e29762a29 100644
--- a/lib/vm.js
+++ b/lib/vm.js
@@ -29,7 +29,6 @@ const {
isContext: _isContext,
compileFunction: _compileFunction
} = internalBinding('contextify');
-const { callbackMap } = internalBinding('module_wrap');
const {
ERR_INVALID_ARG_TYPE,
ERR_VM_MODULE_NOT_MODULE,
@@ -100,6 +99,7 @@ class Script extends ContextifyScript {
}
const { wrapMap, linkingStatusMap } =
require('internal/vm/source_text_module');
+ const { callbackMap } = internalBinding('module_wrap');
callbackMap.set(this, { importModuleDynamically: async (...args) => {
const m = await importModuleDynamically(...args);
if (isModuleNamespaceObject(m)) {