#ifndef SCM_DYNSTACK_H
#define SCM_DYNSTACK_H
-/* Copyright (C) 2012 Free Software Foundation, Inc.
+/* Copyright (C) 2012, 2013 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
\f
#include "libguile/__scm.h"
-#include "libguile/control.h"
\f
SCM_DYNSTACK_TYPE_FRAME,
SCM_DYNSTACK_TYPE_UNWINDER,
SCM_DYNSTACK_TYPE_REWINDER,
- SCM_DYNSTACK_TYPE_WITH_FLUIDS,
+ SCM_DYNSTACK_TYPE_WITH_FLUID,
SCM_DYNSTACK_TYPE_PROMPT,
SCM_DYNSTACK_TYPE_DYNWIND,
} scm_t_dynstack_item_type;
} scm_t_dynstack_winder_flags;
typedef enum {
- SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY = (1 << SCM_DYNSTACK_TAG_FLAGS_SHIFT)
+ SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY = (1 << SCM_DYNSTACK_TAG_FLAGS_SHIFT),
+ SCM_F_DYNSTACK_PROMPT_PUSH_NARGS = (2 << SCM_DYNSTACK_TAG_FLAGS_SHIFT)
} scm_t_dynstack_prompt_flags;
typedef void (*scm_t_guard) (void *);
SCM_INTERNAL void scm_dynstack_push_unwinder (scm_t_dynstack *,
scm_t_dynstack_winder_flags,
scm_t_guard, void *);
-SCM_INTERNAL void scm_dynstack_push_fluids (scm_t_dynstack *,
- size_t,
- SCM *fluids,
- SCM *values,
- SCM dynamic_state);
+SCM_INTERNAL void scm_dynstack_push_fluid (scm_t_dynstack *,
+ SCM fluid, SCM value,
+ SCM dynamic_state);
SCM_INTERNAL void scm_dynstack_push_prompt (scm_t_dynstack *,
scm_t_dynstack_prompt_flags,
SCM key,
- SCM *fp, SCM *sp, scm_t_uint8 *ip,
+ scm_t_ptrdiff fp_offset,
+ scm_t_ptrdiff sp_offset,
+ scm_t_uint32 *ip,
scm_i_jmp_buf *registers);
SCM_INTERNAL void scm_dynstack_push_dynwind (scm_t_dynstack *,
SCM enter, SCM leave);
scm_t_dynstack *);
SCM_INTERNAL void scm_dynstack_unwind_frame (scm_t_dynstack *);
-SCM_INTERNAL void scm_dynstack_unwind_fluids (scm_t_dynstack *dynstack,
- SCM dynamic_state);
+SCM_INTERNAL void scm_dynstack_unwind_fluid (scm_t_dynstack *dynstack,
+ SCM dynamic_state);
SCM_INTERNAL scm_t_bits* scm_dynstack_find_prompt (scm_t_dynstack *, SCM,
scm_t_dynstack_prompt_flags *,
- SCM **, SCM **, scm_t_uint8 **,
+ scm_t_ptrdiff *,
+ scm_t_ptrdiff *,
+ scm_t_uint32 **,
scm_i_jmp_buf **);
SCM_INTERNAL void scm_dynstack_wind_prompt (scm_t_dynstack *, scm_t_bits *,