From 185135e876ea29511e72db090e91636dc0402344 Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Fri, 16 Aug 2024 09:05:06 +0200 Subject: [PATCH 3/4] Add commit_limit to igc_params * src/igc.h (struct igc_params): Add commit_limit field. * src/igc.c (make_arena): Use igc_params to configure commit_limit. * src/emacs.c (parse_igc_params, parse_igc_param): Parse commit_limit. --- src/emacs.c | 9 +++++++++ src/igc.c | 2 ++ src/igc.h | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/emacs.c b/src/emacs.c index b2d12b61967..777ca703079 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -790,6 +790,14 @@ parse_igc_param (const char *val, struct igc_params *params) if (strncmp (val, key, strlen (key)) == 0) return parse_igc_gen_params (val + strlen (key), params); + if ((sscanf (val, "commit_limit=%zu%n", ¶ms->commit_limit.bytes, &n) + == 1) + && val[n] == '\0') + { + params->commit_limit.dflt = false; + return; + } + fprintf (stderr, "Invalid igc_param: %s\n", val); exit (1); } @@ -800,6 +808,7 @@ parse_igc_params (int argc, char **argv) struct igc_params params = { .pause_time = { .dflt = true }, .gen_params = { .dflt = true }, + .commit_limit = { .dflt = true }, }; for (int skip = 0; skip != argc;) { diff --git a/src/igc.c b/src/igc.c index 77f897bfdca..89e767ad79f 100644 --- a/src/igc.c +++ b/src/igc.c @@ -4458,6 +4458,8 @@ make_arena (struct igc *gc, const struct igc_params *params) { if (!params->pause_time.dflt) MPS_ARGS_ADD (args, MPS_KEY_PAUSE_TIME, params->pause_time.seconds); + if (!params->commit_limit.dflt) + MPS_ARGS_ADD (args, MPS_KEY_COMMIT_LIMIT, params->commit_limit.bytes); res = mps_arena_create_k (&gc->arena, mps_arena_class_vm (), args); } MPS_ARGS_END (args); diff --git a/src/igc.h b/src/igc.h index 716069adceb..abe2452f625 100644 --- a/src/igc.h +++ b/src/igc.h @@ -79,6 +79,11 @@ #define EMACS_IGC_H size_t gen_count; struct igc_gen_param *gen_params; } gen_params; + struct + { + bool dflt; + size_t bytes; + } commit_limit; }; void igc_break (void); -- 2.39.2