diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-03-18 07:51:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-18 12:51:21 +0100 |
commit | 4b6305f4f25fc76f974bbdcc9cdb139d5ab8f5f4 (patch) | |
tree | 881e33653a99f51a29b4174362c5d19967600950 /runtime/ops/os | |
parent | 9bfa8dc90c5d1cf78abd9ee704295bc0bb2b643c (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.rs | 14 |
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 |