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 /cli/tsc | |
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 'cli/tsc')
-rw-r--r-- | cli/tsc/mod.rs | 11 |
1 files changed, 10 insertions, 1 deletions
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<Vec<AssetText>, 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<Response, AnyError> { .unwrap(), )); }, + customizer = |ext: &mut deno_core::ExtensionBuilder| { + ext.force_op_registration(); + }, ); let startup_source = "globalThis.startup({ legacyFlag: false })"; |