summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/02_init.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/02_init.js')
-rw-r--r--ext/node/polyfills/02_init.js67
1 files changed, 37 insertions, 30 deletions
diff --git a/ext/node/polyfills/02_init.js b/ext/node/polyfills/02_init.js
index 85f924493..752f518bf 100644
--- a/ext/node/polyfills/02_init.js
+++ b/ext/node/polyfills/02_init.js
@@ -16,38 +16,32 @@ function initialize(
runningOnMainThread,
workerId,
maybeWorkerMetadata,
+ warmup = false,
) {
- if (initialized) {
- throw Error("Node runtime already initialized");
- }
- initialized = true;
- if (usesLocalNodeModulesDir) {
- requireImpl.setUsesLocalNodeModulesDir();
- }
- const nativeModuleExports = requireImpl.nativeModuleExports;
- nodeGlobals.Buffer = nativeModuleExports["buffer"].Buffer;
- nodeGlobals.clearImmediate = nativeModuleExports["timers"].clearImmediate;
- nodeGlobals.clearInterval = nativeModuleExports["timers"].clearInterval;
- nodeGlobals.clearTimeout = nativeModuleExports["timers"].clearTimeout;
- nodeGlobals.console = nativeModuleExports["console"];
- nodeGlobals.global = globalThis;
- nodeGlobals.process = nativeModuleExports["process"];
- nodeGlobals.setImmediate = nativeModuleExports["timers"].setImmediate;
- nodeGlobals.setInterval = nativeModuleExports["timers"].setInterval;
- nodeGlobals.setTimeout = nativeModuleExports["timers"].setTimeout;
- nodeGlobals.performance = nativeModuleExports["perf_hooks"].performance;
+ if (!warmup) {
+ if (initialized) {
+ throw Error("Node runtime already initialized");
+ }
+ initialized = true;
+ if (usesLocalNodeModulesDir) {
+ requireImpl.setUsesLocalNodeModulesDir();
+ }
- // FIXME(bartlomieju): not nice to depend on `Deno` namespace here
- // but it's the only way to get `args` and `version` and this point.
- internals.__bootstrapNodeProcess(argv0, Deno.args, Deno.version);
- internals.__initWorkerThreads(
- runningOnMainThread,
- workerId,
- maybeWorkerMetadata,
- );
- internals.__setupChildProcessIpcChannel();
- // `Deno[Deno.internal].requireImpl` will be unreachable after this line.
- delete internals.requireImpl;
+ // FIXME(bartlomieju): not nice to depend on `Deno` namespace here
+ // but it's the only way to get `args` and `version` and this point.
+ internals.__bootstrapNodeProcess(argv0, Deno.args, Deno.version);
+ internals.__initWorkerThreads(
+ runningOnMainThread,
+ workerId,
+ maybeWorkerMetadata,
+ );
+ internals.__setupChildProcessIpcChannel();
+ // `Deno[Deno.internal].requireImpl` will be unreachable after this line.
+ delete internals.requireImpl;
+ } else {
+ // Warm up the process module
+ internals.__bootstrapNodeProcess(undefined, undefined, undefined, true);
+ }
}
function loadCjsModule(moduleName, isMain, inspectBrk) {
@@ -63,3 +57,16 @@ internals.node = {
initialize,
loadCjsModule,
};
+
+const nativeModuleExports = requireImpl.nativeModuleExports;
+nodeGlobals.Buffer = nativeModuleExports["buffer"].Buffer;
+nodeGlobals.clearImmediate = nativeModuleExports["timers"].clearImmediate;
+nodeGlobals.clearInterval = nativeModuleExports["timers"].clearInterval;
+nodeGlobals.clearTimeout = nativeModuleExports["timers"].clearTimeout;
+nodeGlobals.console = nativeModuleExports["console"];
+nodeGlobals.global = globalThis;
+nodeGlobals.process = nativeModuleExports["process"];
+nodeGlobals.setImmediate = nativeModuleExports["timers"].setImmediate;
+nodeGlobals.setInterval = nativeModuleExports["timers"].setInterval;
+nodeGlobals.setTimeout = nativeModuleExports["timers"].setTimeout;
+nodeGlobals.performance = nativeModuleExports["perf_hooks"].performance;