From 4b6305f4f25fc76f974bbdcc9cdb139d5ab8f5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sat, 18 Mar 2023 07:51:21 -0400 Subject: 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 --- runtime/ops/os/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'runtime/ops/os') 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,23 +48,23 @@ deno_core::extension!( state = |state, options| { state.put::(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 { let current_exe = env::current_exe().unwrap(); -- cgit v1.2.3