summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Lafeldt <mathias.lafeldt@gmail.com>2023-06-05 11:22:32 +0200
committerGitHub <noreply@github.com>2023-06-05 09:22:32 +0000
commit77a950aac417ba5e9bf1a48b0ec8934291376a8c (patch)
tree38e1dfcea2d1c77dd95a67a7e793ad8c38e50c3b
parent21c2c01ebed902c70763bb9319c3ec48c4cb5284 (diff)
feat(runtime): support creating workers using custom v8 params (#19339)
In order to limit the memory usage of isolates via heap_limits.
-rw-r--r--cli/worker.rs1
-rw-r--r--runtime/worker.rs6
2 files changed, 7 insertions, 0 deletions
diff --git a/cli/worker.rs b/cli/worker.rs
index 6edf427ea..b8bb6e941 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -449,6 +449,7 @@ impl CliMainWorkerFactory {
},
extensions,
startup_snapshot: Some(crate::js::deno_isolate_init()),
+ create_params: None,
unsafely_ignore_certificate_errors: shared
.options
.unsafely_ignore_certificate_errors
diff --git a/runtime/worker.rs b/runtime/worker.rs
index 0e62decb4..10375818d 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -95,6 +95,10 @@ pub struct WorkerOptions {
/// V8 snapshot that should be loaded on startup.
pub startup_snapshot: Option<Snapshot>,
+
+ /// Optional isolate creation parameters, such as heap limits.
+ pub create_params: Option<v8::CreateParams>,
+
pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
pub root_cert_store_provider: Option<Arc<dyn RootCertStoreProvider>>,
pub seed: Option<u64>,
@@ -181,6 +185,7 @@ impl Default for WorkerOptions {
blob_store: Default::default(),
extensions: Default::default(),
startup_snapshot: Default::default(),
+ create_params: Default::default(),
bootstrap: Default::default(),
stdio: Default::default(),
}
@@ -321,6 +326,7 @@ impl MainWorker {
let mut js_runtime = JsRuntime::new(RuntimeOptions {
module_loader: Some(options.module_loader.clone()),
startup_snapshot: Some(startup_snapshot),
+ create_params: options.create_params,
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(),