From 8fcac4bd9fec037f96cf0a35404b1078b6f76707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Wed, 28 May 2025 11:08:27 +0200 Subject: [PATCH] ecl-inl: add looping over stack frames --- src/h/ecl-inl.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/h/ecl-inl.h b/src/h/ecl-inl.h index 9376c9e34..c12bf0821 100644 --- a/src/h/ecl-inl.h +++ b/src/h/ecl-inl.h @@ -102,6 +102,24 @@ #define end_loop_across_stack() }} +/* + * Loops over a stack frame. + */ + +#define loop_across_frame_fifo(var, obj) { \ + cl_object *__ecl_ptr = ECL_STACK_FRAME_PTR(obj); \ + cl_object *__ecl_top = ECL_STACK_FRAME_TOP(obj); \ + while(__ecl_ptr++ < __ecl_top) { \ + cl_object var = *(__ecl_ptr-1); \ + +#define loop_across_frame_filo(var, obj) { \ + cl_object *__ecl_ptr = ECL_STACK_FRAME_PTR(obj); \ + cl_object *__ecl_top = ECL_STACK_FRAME_TOP(obj); \ + while(__ecl_ptr < __ecl_top--) { \ + cl_object var = *__ecl_top; + +#define end_loop_across_frame() }} + /* * Static constant definition. */