summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/lsp/tsc.rs2
-rw-r--r--cli/tsc/mod.rs2
-rw-r--r--cli/worker.rs15
3 files changed, 18 insertions, 1 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index c9b24176a..48dcb7964 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -34,6 +34,7 @@ use crate::util::path::relative_specifier;
use crate::util::path::to_percent_decoded_str;
use crate::util::result::InfallibleResultExt;
use crate::util::v8::convert;
+use crate::worker::create_isolate_create_params;
use deno_core::convert::Smi;
use deno_core::convert::ToV8;
use deno_core::error::StdAnyError;
@@ -4760,6 +4761,7 @@ fn run_tsc_thread(
specifier_map,
request_rx,
)],
+ create_params: create_isolate_create_params(),
startup_snapshot: Some(tsc::compiler_snapshot()),
inspector: has_inspector_server,
..Default::default()
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs
index 452d5c165..8f8bed20a 100644
--- a/cli/tsc/mod.rs
+++ b/cli/tsc/mod.rs
@@ -9,6 +9,7 @@ use crate::npm::CliNpmResolver;
use crate::resolver::CjsTracker;
use crate::util::checksum;
use crate::util::path::mapped_specifier_for_tsc;
+use crate::worker::create_isolate_create_params;
use deno_ast::MediaType;
use deno_core::anyhow::anyhow;
@@ -1104,6 +1105,7 @@ pub fn exec(request: Request) -> Result<Response, AnyError> {
root_map,
remapped_specifiers,
)],
+ create_params: create_isolate_create_params(),
..Default::default()
});
diff --git a/cli/worker.rs b/cli/worker.rs
index 1afe37e34..c6cbf77f1 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -555,6 +555,7 @@ impl CliMainWorkerFactory {
permissions,
v8_code_cache: shared.code_cache.clone(),
};
+
let options = WorkerOptions {
bootstrap: BootstrapOptions {
deno_version: crate::version::DENO_VERSION_INFO.deno.to_string(),
@@ -585,7 +586,7 @@ impl CliMainWorkerFactory {
},
extensions: custom_extensions,
startup_snapshot: crate::js::deno_isolate_init(),
- create_params: None,
+ create_params: create_isolate_create_params(),
unsafely_ignore_certificate_errors: shared
.options
.unsafely_ignore_certificate_errors
@@ -786,6 +787,7 @@ fn create_web_worker_callback(
},
extensions: vec![],
startup_snapshot: crate::js::deno_isolate_init(),
+ create_params: create_isolate_create_params(),
unsafely_ignore_certificate_errors: shared
.options
.unsafely_ignore_certificate_errors
@@ -806,6 +808,17 @@ fn create_web_worker_callback(
})
}
+/// By default V8 uses 1.4Gb heap limit which is meant for browser tabs.
+/// Instead probe for the total memory on the system and use it instead
+/// as a default.
+pub fn create_isolate_create_params() -> Option<v8::CreateParams> {
+ let maybe_mem_info = deno_runtime::sys_info::mem_info();
+ maybe_mem_info.map(|mem_info| {
+ v8::CreateParams::default()
+ .heap_limits_from_system_memory(mem_info.total, 0)
+ })
+}
+
#[allow(clippy::print_stdout)]
#[allow(clippy::print_stderr)]
#[cfg(test)]