From 1497f8a0b826bc11e088a8f111ca116f11191a1a Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Wed, 9 Oct 2024 15:33:50 +0200 Subject: [PATCH] [spidermonkey] Added the ecmascript.spidermonkey.memory_limit option 128M by default. --- src/js/spidermonkey-shared.cpp | 4 +++- src/js/spidermonkey.cpp | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/js/spidermonkey-shared.cpp b/src/js/spidermonkey-shared.cpp index d3322c53a..96aec94a4 100644 --- a/src/js/spidermonkey-shared.cpp +++ b/src/js/spidermonkey-shared.cpp @@ -7,9 +7,11 @@ #include "elinks.h" +#include "config/options.h" #include "js/spidermonkey-shared.h" #include + /** A JSContext that can be used in JS_SetPrivate and JS_GetPrivate - * when no better one is available. This context has no global - * object, so scripts cannot be evaluated in it. @@ -35,7 +37,7 @@ spidermonkey_runtime_addref(void) return 0; } - main_ctx = JS_NewContext(128 * 1024 * 1024); + main_ctx = JS_NewContext(get_opt_long("ecmascript.spidermonkey.memory_limit", NULL)); if (!main_ctx) { JS_ShutDown(); diff --git a/src/js/spidermonkey.cpp b/src/js/spidermonkey.cpp index 53689c5d9..bd67cae70 100644 --- a/src/js/spidermonkey.cpp +++ b/src/js/spidermonkey.cpp @@ -703,9 +703,21 @@ spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter, return result; } +static union option_info spidermonkey_options[] = { + INIT_OPT_TREE("ecmascript", N_("Spidermonkey"), + "spidermonkey", OPT_ZERO, + N_("Options specific to Spidermonkey.")), + + INIT_OPT_LONG("ecmascript.spidermonkey", N_("Memory limit"), + "memory_limit", OPT_ZERO, 0, LONG_MAX, 128 * 1024 * 1024, + N_("Runtime memory limit in bytes.")), + + NULL_OPTION_INFO, +}; + struct module spidermonkey_module = struct_module( /* name: */ N_("SpiderMonkey"), - /* options: */ NULL, + /* options: */ spidermonkey_options, /* events: */ NULL, /* submodules: */ NULL, /* data: */ NULL,