From 92764c0decb370b0f8a78770314ceda7228d315f Mon Sep 17 00:00:00 2001 From: Mathias Lafeldt Date: Thu, 10 Nov 2022 12:46:26 +0100 Subject: feat(runtime): support creating workers with custom v8 snapshots (#16553) This PR makes it possible for applications to create workers from custom snapshots to improve runtime performance (without having to fork/copy `runtime/workers.rs`). --- runtime/worker.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'runtime/worker.rs') diff --git a/runtime/worker.rs b/runtime/worker.rs index de15c9f6f..dcc2727db 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -27,6 +27,7 @@ use deno_core::ModuleLoader; use deno_core::ModuleSpecifier; use deno_core::RuntimeOptions; use deno_core::SharedArrayBufferStore; +use deno_core::Snapshot; use deno_core::SourceMapGetter; use deno_node::RequireNpmResolver; use deno_tls::rustls::RootCertStore; @@ -74,6 +75,7 @@ pub struct MainWorker { pub struct WorkerOptions { pub bootstrap: BootstrapOptions, pub extensions: Vec, + pub startup_snapshot: Option, pub unsafely_ignore_certificate_errors: Option>, pub root_cert_store: Option, pub seed: Option, @@ -135,6 +137,7 @@ impl Default for WorkerOptions { npm_resolver: Default::default(), blob_store: Default::default(), extensions: Default::default(), + startup_snapshot: Default::default(), bootstrap: Default::default(), stdio: Default::default(), } @@ -242,7 +245,11 @@ impl MainWorker { let mut js_runtime = JsRuntime::new(RuntimeOptions { module_loader: Some(options.module_loader.clone()), - startup_snapshot: Some(js::deno_isolate_init()), + startup_snapshot: Some( + options + .startup_snapshot + .unwrap_or_else(js::deno_isolate_init), + ), source_map_getter: options.source_map_getter, get_error_class_fn: options.get_error_class_fn, shared_array_buffer_store: options.shared_array_buffer_store.clone(), @@ -562,6 +569,7 @@ mod tests { inspect: false, }, extensions: vec![], + startup_snapshot: None, unsafely_ignore_certificate_errors: None, root_cert_store: None, seed: None, -- cgit v1.2.3