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 --- cli/tsc/mod.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'cli/tsc') diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index 45589780f..48ab131fe 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -114,7 +114,13 @@ pub fn get_types_declaration_file_text(unstable: bool) -> String { } fn get_asset_texts_from_new_runtime() -> Result, AnyError> { - deno_core::extension!(deno_cli_tsc, ops_fn = deno_ops,); + deno_core::extension!( + deno_cli_tsc, + ops_fn = deno_ops, + customizer = |ext: &mut deno_core::ExtensionBuilder| { + ext.force_op_registration(); + }, + ); // the assets are stored within the typescript isolate, so take them out of there let mut runtime = JsRuntime::new(RuntimeOptions { @@ -846,6 +852,9 @@ pub fn exec(request: Request) -> Result { .unwrap(), )); }, + customizer = |ext: &mut deno_core::ExtensionBuilder| { + ext.force_op_registration(); + }, ); let startup_source = "globalThis.startup({ legacyFlag: false })"; -- cgit v1.2.3