From 4e446b2e60bffae10183bc228d1908699fb7c1c0 Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Fri, 28 Nov 2025 20:17:39 +0100 Subject: [PATCH] Read the MPS_KEY_ARENA_SIZE parameter from environment The initial arena size can be set with EMACS_IGC_ARENA_SIZE=. * src/igc.c (read_arena_size): New function. (make_arena): Use it. --- src/igc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/igc.c b/src/igc.c index 7967a502b10..7a3b6052bf3 100644 --- a/src/igc.c +++ b/src/igc.c @@ -5214,6 +5214,21 @@ read_gens (size_t *ngens, mps_gen_param_s parms[*ngens]) emacs_abort (); } +static bool +read_arena_size (size_t *size) +{ + const char *env = getenv ("EMACS_IGC_ARENA_SIZE"); + if (env == NULL) + return false; + char *end; + *size = strtoull (env, &end, 10); + bool ok = *end == '\0'; + if (!ok) + fprintf (stderr, "Failed to parse EMACS_IGC_ARENA_SIZE: %s\n", + env); + return ok; +} + static void make_arena (struct igc *gc) { @@ -5221,6 +5236,9 @@ make_arena (struct igc *gc) MPS_ARGS_BEGIN (args) { MPS_ARGS_ADD (args, MPS_KEY_PAUSE_TIME, 0.01); + size_t size; + if (read_arena_size (&size)) + MPS_ARGS_ADD (args, MPS_KEY_ARENA_SIZE, size); res = mps_arena_create_k (&gc->arena, mps_arena_class_vm (), args); } MPS_ARGS_END (args);