From daab06b4581ed5162bac10f02c589a7a0558bc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 8 Mar 2023 00:20:54 -0400 Subject: [PATCH] perf: move setting up Deno namespace to snapshot time (#18067) No need to do it on startup every time. --- runtime/js/99_main.js | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index af24051be5..d90e186d9b 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -385,6 +385,20 @@ function promiseRejectMacrotaskCallback() { let hasBootstrapped = false; // Set up global properties shared by main and worker runtime. ObjectDefineProperties(globalThis, windowOrWorkerGlobalScope); +// FIXME(bartlomieju): temporarily add whole `Deno.core` to +// `Deno[Deno.internal]` namespace. It should be removed and only necessary +// methods should be left there. +ObjectAssign(internals, { + core, +}); +const internalSymbol = Symbol("Deno.internal"); +const finalDenoNs = { + internal: internalSymbol, + [internalSymbol]: internals, + resources: core.resources, + close: core.close, + ...denoNs, +}; function bootstrapMainRuntime(runtimeOptions) { if (hasBootstrapped) { @@ -452,8 +466,6 @@ function bootstrapMainRuntime(runtimeOptions) { setUserAgent(runtimeOptions.userAgent); setLanguage(runtimeOptions.locale); - const internalSymbol = Symbol("Deno.internal"); - // These have to initialized here and not in `90_deno_ns.js` because // the op function that needs to be passed will be invalidated by creating // a snapshot @@ -475,13 +487,6 @@ function bootstrapMainRuntime(runtimeOptions) { core, }); - const finalDenoNs = { - internal: internalSymbol, - [internalSymbol]: internals, - resources: core.resources, - close: core.close, - ...denoNs, - }; ObjectDefineProperties(finalDenoNs, { pid: util.readOnly(runtimeOptions.pid), ppid: util.readOnly(runtimeOptions.ppid), @@ -579,8 +584,6 @@ function bootstrapWorkerRuntime( globalThis.pollForMessages = pollForMessages; - const internalSymbol = Symbol("Deno.internal"); - // These have to initialized here and not in `90_deno_ns.js` because // the op function that needs to be passed will be invalidated by creating // a snapshot @@ -602,13 +605,6 @@ function bootstrapWorkerRuntime( core, }); - const finalDenoNs = { - internal: internalSymbol, - [internalSymbol]: internals, - resources: core.resources, - close: core.close, - ...denoNs, - }; if (runtimeOptions.unstableFlag) { ObjectAssign(finalDenoNs, denoNsUnstable); // These have to initialized here and not in `90_deno_ns.js` because