2
Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
4
This file is part of GNU Common Lisp, herein referred to as GCL
6
GCL is free software; you can redistribute it and/or modify it under
7
the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE as published by
8
the Free Software Foundation; either version 2, or (at your option)
11
GCL is distributed in the hope that it will be useful, but WITHOUT
12
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14
License for more details.
16
You should have received a copy of the GNU Library General Public License
17
along with GCL; see the file COPYING. If not, write to the Free Software
18
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
26
frame and non-local jump
32
unwind(frame_ptr fr, object tag)
39
&& frs_top->frs_class == FRS_CATCH
42
&& frs_top->frs_class != FRS_PROTECT
43
&& frs_top->frs_class != FRS_CATCHALL
48
if (frs_top<frs_org) {
50
FEerror("Cannot unwind frame", 0);
52
lex_env = frs_top->frs_lex;
53
ihs_top = frs_top->frs_ihs;
54
bds_unwind(frs_top->frs_bds_top);
55
in_signal_handler = frs_top->frs_in_signal_handler;
56
signals_allowed=sig_normal;
57
longjmp(frs_top->frs_jmpbuf, 0);
61
frame_ptr frs_sch (object frame_id)
65
for (top = frs_top; top >= frs_org; top--)
66
if (top->frs_val == frame_id && top->frs_class == FRS_CATCH)
71
frame_ptr frs_sch_catch(object frame_id)
75
for(top = frs_top; top >= frs_org ;top--)
76
if ((top->frs_val == frame_id && top->frs_class == FRS_CATCH)
77
|| top->frs_class == FRS_CATCHALL