diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-03-08 07:43:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 12:43:26 +0100 |
commit | d24c6ea27f7dea57e3bc0cda342d6cbe59782f7d (patch) | |
tree | 469e992cb32b995613679f9aba2fdca6f56d5d3f /runtime/web_worker.rs | |
parent | 9eb987e46c4d51badc9a566c880798d925d35d54 (diff) |
refactor(runtime): conditionally register Extension with source files (#18068)
Since we are snapshotting extension source at build time, there's no
need to define list of sources for the extension at runtime.
This commit changes "deno_node" extension by removing "init_polyfill"
function in favor of "init_polyfill_ops_and_esm()" and "init_polyfill_ops()".
The former is used during snapshot and when "deno_runtime" is compiled
with "dont_create_runtime_snapshot" cargo feature flag. The latter is used
when running a worker from an existing snapshot.
This is a start of a bigger refactor to all extensions - thanks to this
change, we don't have to iterate over all defined source files for extension at
runtime, and because of that we don't have to create a filepath for each of the
source files. It's not a big deal, but we are iterating over 300 files on each start,
and concatenating 3 strings before creating a "PathBuf" for ~200 of them.
This is already visible on the startup flamegraphs and should be avoided.
Diffstat (limited to 'runtime/web_worker.rs')
-rw-r--r-- | runtime/web_worker.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index f07ecd27f..4417c13ef 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -433,7 +433,10 @@ impl WebWorker { options.unsafely_ignore_certificate_errors.clone(), ), deno_napi::init::<PermissionsContainer>(), - deno_node::init_polyfill(), + // TODO(bartlomieju): this should be conditional on `dont_create_runtime_snapshot` + // cargo feature and should use `init_polyfill_ops` or `init_polyfill_ops_and_esm` + // if the feature is enabled + deno_node::init_polyfill_ops(), deno_node::init::<PermissionsContainer>(options.npm_resolver), ops::os::init_for_worker(), ops::permissions::init(), |