summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-12-15 16:20:05 +0530
committerGitHub <noreply@github.com>2023-12-15 11:50:05 +0100
commit81a6504e670d32bdc5e0a8328c328fdf8e208913 (patch)
tree27a90846e42edd1863e45e9792375d7777f10667 /runtime
parent62e3f5060ef9cc6a31b3e496dd15548c0abd07e6 (diff)
refactor: setup child process pipe in Rust (#21579)
Avoid passing the fd into JS and back into Rust. Instead we setup the child's end of the pipe directly using a special Rust op.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/js/99_main.js3
-rw-r--r--runtime/worker.rs11
-rw-r--r--runtime/worker_bootstrap.rs3
3 files changed, 11 insertions, 6 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 5b4b164a2..0469b38bf 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -440,7 +440,6 @@ function bootstrapMainRuntime(runtimeOptions) {
3: inspectFlag,
5: hasNodeModulesDir,
6: maybeBinaryNpmCommandName,
- 7: nodeIpcFd,
} = runtimeOptions;
performance.setTimeOrigin(DateNow());
@@ -546,7 +545,7 @@ function bootstrapMainRuntime(runtimeOptions) {
ObjectDefineProperty(globalThis, "Deno", util.readOnly(finalDenoNs));
if (nodeBootstrap) {
- nodeBootstrap(hasNodeModulesDir, maybeBinaryNpmCommandName, nodeIpcFd);
+ nodeBootstrap(hasNodeModulesDir, maybeBinaryNpmCommandName);
}
}
diff --git a/runtime/worker.rs b/runtime/worker.rs
index 94b0d9606..549a6cdd6 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -487,7 +487,16 @@ impl MainWorker {
}
pub fn bootstrap(&mut self, options: BootstrapOptions) {
- self.js_runtime.op_state().borrow_mut().put(options.clone());
+ // Setup bootstrap options for ops.
+ {
+ let op_state = self.js_runtime.op_state();
+ let mut state = op_state.borrow_mut();
+ state.put(options.clone());
+ if let Some(node_ipc_fd) = options.node_ipc_fd {
+ state.put(deno_node::ChildPipeFd(node_ipc_fd));
+ }
+ }
+
let scope = &mut self.js_runtime.handle_scope();
let args = options.as_v8(scope);
let bootstrap_fn = self.bootstrap_fn_global.take().unwrap();
diff --git a/runtime/worker_bootstrap.rs b/runtime/worker_bootstrap.rs
index 8674190f3..97d66158b 100644
--- a/runtime/worker_bootstrap.rs
+++ b/runtime/worker_bootstrap.rs
@@ -117,8 +117,6 @@ struct BootstrapV8<'a>(
bool,
// maybe_binary_npm_command_name
Option<&'a str>,
- // node_ipc_fd
- i32,
);
impl BootstrapOptions {
@@ -138,7 +136,6 @@ impl BootstrapOptions {
self.enable_testing_features,
self.has_node_modules_dir,
self.maybe_binary_npm_command_name.as_deref(),
- self.node_ipc_fd.unwrap_or(-1),
);
bootstrap.serialize(ser).unwrap()