aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c37
1 files changed, 1 insertions, 36 deletions
diff --git a/src/eval.c b/src/eval.c
index 20988392e5f..4611731a65e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -20,12 +20,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
20 20
21 21
22#include <config.h> 22#include <config.h>
23#include <setjmp.h>
23#include "lisp.h" 24#include "lisp.h"
24#include "blockinput.h" 25#include "blockinput.h"
25#include "commands.h" 26#include "commands.h"
26#include "keyboard.h" 27#include "keyboard.h"
27#include "dispextern.h" 28#include "dispextern.h"
28#include <setjmp.h>
29 29
30#if HAVE_X_WINDOWS 30#if HAVE_X_WINDOWS
31#include "xterm.h" 31#include "xterm.h"
@@ -49,41 +49,6 @@ struct backtrace
49 49
50struct backtrace *backtrace_list; 50struct backtrace *backtrace_list;
51 51
52/* This structure helps implement the `catch' and `throw' control
53 structure. A struct catchtag contains all the information needed
54 to restore the state of the interpreter after a non-local jump.
55
56 Handlers for error conditions (represented by `struct handler'
57 structures) just point to a catch tag to do the cleanup required
58 for their jumps.
59
60 catchtag structures are chained together in the C calling stack;
61 the `next' member points to the next outer catchtag.
62
63 A call like (throw TAG VAL) searches for a catchtag whose `tag'
64 member is TAG, and then unbinds to it. The `val' member is used to
65 hold VAL while the stack is unwound; `val' is returned as the value
66 of the catch form.
67
68 All the other members are concerned with restoring the interpreter
69 state. */
70
71struct catchtag
72{
73 Lisp_Object tag;
74 Lisp_Object val;
75 struct catchtag *next;
76 struct gcpro *gcpro;
77 jmp_buf jmp;
78 struct backtrace *backlist;
79 struct handler *handlerlist;
80 int lisp_eval_depth;
81 int pdlcount;
82 int poll_suppress_count;
83 int interrupt_input_blocked;
84 struct byte_stack *byte_stack;
85};
86
87struct catchtag *catchlist; 52struct catchtag *catchlist;
88 53
89#ifdef DEBUG_GCPRO 54#ifdef DEBUG_GCPRO