summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/main.rs8
-rw-r--r--cli/standalone/mod.rs2
-rw-r--r--cli/util/v8.rs15
3 files changed, 20 insertions, 5 deletions
diff --git a/cli/main.rs b/cli/main.rs
index 03e7cf41e..75425cf10 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -281,7 +281,13 @@ pub fn main() {
Err(err) => unwrap_or_exit(Err(AnyError::from(err))),
};
- init_v8_flags(&flags.v8_flags, get_v8_flags_from_env());
+ let default_v8_flags = match flags.subcommand {
+ // Using same default as VSCode:
+ // https://github.com/microsoft/vscode/blob/48d4ba271686e8072fc6674137415bc80d936bc7/extensions/typescript-language-features/src/configuration/configuration.ts#L213-L214
+ DenoSubcommand::Lsp => vec!["--max-old-space-size=3072".to_string()],
+ _ => vec![],
+ };
+ init_v8_flags(&default_v8_flags, &flags.v8_flags, get_v8_flags_from_env());
util::logger::init(flags.log_level);
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index db2743be8..eb5cf5d82 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -430,7 +430,7 @@ pub async fn run(
},
);
- v8_set_flags(construct_v8_flags(&metadata.v8_flags, vec![]));
+ v8_set_flags(construct_v8_flags(&[], &metadata.v8_flags, vec![]));
let mut worker = worker_factory
.create_main_worker(main_module.clone(), permissions)
diff --git a/cli/util/v8.rs b/cli/util/v8.rs
index 6afaf285e..93a2ef83f 100644
--- a/cli/util/v8.rs
+++ b/cli/util/v8.rs
@@ -10,17 +10,26 @@ pub fn get_v8_flags_from_env() -> Vec<String> {
#[inline(always)]
pub fn construct_v8_flags(
+ default_v8_flags: &[String],
v8_flags: &[String],
env_v8_flags: Vec<String>,
) -> Vec<String> {
std::iter::once("UNUSED_BUT_NECESSARY_ARG0".to_owned())
+ .chain(default_v8_flags.iter().cloned())
.chain(env_v8_flags.into_iter())
.chain(v8_flags.iter().cloned())
.collect::<Vec<_>>()
}
-pub fn init_v8_flags(v8_flags: &[String], env_v8_flags: Vec<String>) {
- if v8_flags.is_empty() && env_v8_flags.is_empty() {
+pub fn init_v8_flags(
+ default_v8_flags: &[String],
+ v8_flags: &[String],
+ env_v8_flags: Vec<String>,
+) {
+ if default_v8_flags.is_empty()
+ && v8_flags.is_empty()
+ && env_v8_flags.is_empty()
+ {
return;
}
@@ -29,7 +38,7 @@ pub fn init_v8_flags(v8_flags: &[String], env_v8_flags: Vec<String>) {
.chain(v8_flags)
.any(|flag| flag == "-help" || flag == "--help");
// Keep in sync with `standalone.rs`.
- let v8_flags = construct_v8_flags(v8_flags, env_v8_flags);
+ let v8_flags = construct_v8_flags(default_v8_flags, v8_flags, env_v8_flags);
let unrecognized_v8_flags = deno_core::v8_set_flags(v8_flags)
.into_iter()
.skip(1)