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. */