summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Skvortsov <sasha.skvortsov109@gmail.com>2023-04-16 14:36:30 -0400
committerAlexander Skvortsov <sasha.skvortsov109@gmail.com>2023-04-16 14:36:30 -0400
commit804010c470da934961fc0b2c0ee94876aac3a386 (patch)
tree252ae9ec27b5b3b206184affccda732f7d46e20e
parent1a4095b0d929dcf5a0f5321bbd94814cfa329ce9 (diff)
downloadocaml-804010c470da934961fc0b2c0ee94876aac3a386.tar.gz
feat: refactor `extern_free_stack`
Split out `extern_init_stack` into a separate function, so that the code for initializing and resetting the extern_state stack is not duplicated. Signed-off-by: Alexander Skvortsov <sasha.skvortsov109@gmail.com>
-rw-r--r--runtime/extern.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/runtime/extern.c b/runtime/extern.c
index fe0e5a1cee..4301c3df13 100644
--- a/runtime/extern.c
+++ b/runtime/extern.c
@@ -120,6 +120,13 @@ struct caml_extern_state {
struct output_block * extern_output_block;
};
+static void extern_init_stack(struct caml_extern_state* s)
+{
+ /* (Re)initialize the globals for next time around */
+ s->extern_stack = s->extern_stack_init;
+ s->extern_stack_limit = s->extern_stack + EXTERN_STACK_INIT_SIZE;
+}
+
static struct caml_extern_state* prepare_extern_state (void)
{
Caml_check_caml_state();
@@ -134,9 +141,7 @@ static struct caml_extern_state* prepare_extern_state (void)
s->obj_counter = 0;
s->size_32 = 0;
s->size_64 = 0;
- s->extern_stack = s->extern_stack_init;
- s->extern_stack_limit =
- s->extern_stack + EXTERN_STACK_INIT_SIZE;
+ extern_init_stack(s);
Caml_state->extern_state = s;
return s;
@@ -183,17 +188,15 @@ CAMLnoreturn_end;
static void free_extern_output(struct caml_extern_state* s);
-/* Free the extern stack if needed */
static void extern_free_stack(struct caml_extern_state* s)
{
+ /* Free the extern stack if needed */
if (s->extern_stack != s->extern_stack_init) {
caml_stat_free(s->extern_stack);
- /* Reinitialize the globals for next time around */
- s->extern_stack = s->extern_stack_init;
- s->extern_stack_limit = s->extern_stack + EXTERN_STACK_INIT_SIZE;
}
-}
+ extern_init_stack(s);
+}
static struct extern_item * extern_resize_stack(struct caml_extern_state* s,
struct extern_item * sp)