summaryrefslogtreecommitdiff
path: root/runtime/ops/os
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-03-18 07:51:21 -0400
committerGitHub <noreply@github.com>2023-03-18 12:51:21 +0100
commit4b6305f4f25fc76f974bbdcc9cdb139d5ab8f5f4 (patch)
tree881e33653a99f51a29b4174362c5d19967600950 /runtime/ops/os
parent9bfa8dc90c5d1cf78abd9ee704295bc0bb2b643c (diff)
perf(core): preserve ops between snapshots (#18080)
This commit changes the build process in a way that preserves already registered ops in the snapshot. This allows us to skip creating hundreds of "v8::String" on each startup, but sadly there is still some op registration going on startup (however we're registering 49 ops instead of >200 ops). This situation could be further improved, by moving some of the ops from "runtime/" to a separate extension crates. --------- Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
Diffstat (limited to 'runtime/ops/os')
-rw-r--r--runtime/ops/os/mod.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/runtime/ops/os/mod.rs b/runtime/ops/os/mod.rs
index b34629395..70a126301 100644
--- a/runtime/ops/os/mod.rs
+++ b/runtime/ops/os/mod.rs
@@ -48,24 +48,24 @@ deno_core::extension!(
state = |state, options| {
state.put::<ExitCode>(options.exit_code);
},
+ customizer = |ext: &mut deno_core::ExtensionBuilder| {
+ ext.force_op_registration();
+ }
);
deno_core::extension!(
deno_os_worker,
ops_fn = deno_ops,
middleware = |op| match op.name {
- "op_exit" => noop_op::decl(),
- "op_set_exit_code" => noop_op::decl(),
+ "op_exit" | "op_set_exit_code" => op.disable(),
_ => op,
},
+ customizer = |ext: &mut deno_core::ExtensionBuilder| {
+ ext.force_op_registration();
+ }
);
#[op]
-fn noop_op() -> Result<(), AnyError> {
- Ok(())
-}
-
-#[op]
fn op_exec_path(state: &mut OpState) -> Result<String, AnyError> {
let current_exe = env::current_exe().unwrap();
state