diff options
author | Alexander Skvortsov <sasha.skvortsov109@gmail.com> | 2023-04-16 14:36:30 -0400 |
---|---|---|
committer | Alexander Skvortsov <sasha.skvortsov109@gmail.com> | 2023-04-16 14:36:30 -0400 |
commit | 804010c470da934961fc0b2c0ee94876aac3a386 (patch) | |
tree | 252ae9ec27b5b3b206184affccda732f7d46e20e | |
parent | 1a4095b0d929dcf5a0f5321bbd94814cfa329ce9 (diff) | |
download | ocaml-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.c | 19 |
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) |