micro-optimization in (web server)
[bpt/guile.git] / libguile / control.h
CommitLineData
9ede013f 1/* Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
b9c100d0
AW
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public License
5 * as published by the Free Software Foundation; either version 3 of
6 * the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16 * 02110-1301 USA
17 */
18
19#ifndef SCM_CONTROL_H
20#define SCM_CONTROL_H
21
22
9ede013f 23typedef struct
adaf86ec
AW
24{
25 scm_t_uint8 *ip;
26 SCM *sp;
27 SCM *fp;
2d026f04 28 scm_t_int64 cookie;
adaf86ec 29 scm_i_jmp_buf regs;
9ede013f
AW
30} scm_t_prompt_registers;
31
adaf86ec 32
9ede013f
AW
33SCM_INTERNAL scm_t_prompt_registers*
34scm_c_make_prompt_registers (SCM *fp, SCM *sp,
35 scm_t_uint8 *abort_ip,
36 scm_t_int64 vm_cookie);
adaf86ec 37
572eef50 38SCM_INTERNAL SCM scm_i_prompt_pop_abort_args_x (SCM vm);
b8af64db 39
d2964315
AW
40SCM_INTERNAL void scm_c_abort (SCM vm, SCM tag, size_t n, SCM *argv,
41 scm_t_int64 cookie) SCM_NORETURN;
2d026f04 42SCM_INTERNAL SCM scm_at_abort (SCM tag, SCM args) SCM_NORETURN;
adaf86ec
AW
43
44
747022e4 45SCM_INTERNAL void scm_init_control (void);
b9c100d0
AW
46
47
48#endif /* SCM_CONTROL_H */