summaryrefslogtreecommitdiff
path: root/cli/tsc
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 /cli/tsc
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 'cli/tsc')
-rw-r--r--cli/tsc/mod.rs11
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 })";