Mercurial > emacs
changeset 1197:4eee4dc734bb
* lisp.h (struct handler): Remove the poll_suppress_count member
of this structure; it is always equal to the poll_suppress_count
of its catchtag structure. The non-local exit code in eval.c is
difficult enough to understand as it is; needless duplication
doesn't help.
* lisp.h (struct specbinding, struct handler): More documentation.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 22 Sep 1992 05:18:34 +0000 |
parents | 65e2edefe748 |
children | 7c4519722020 |
files | src/lisp.h |
diffstat | 1 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lisp.h Tue Sep 22 05:17:48 1992 +0000 +++ b/src/lisp.h Tue Sep 22 05:18:34 1992 +0000 @@ -670,8 +670,20 @@ #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \ defvar_per_buffer (lname, vname, type, 0) -/* Structure for recording Lisp call stack for backtrace purposes */ +/* Structure for recording Lisp call stack for backtrace purposes. */ + +/* The special binding stack holds the outer values of variables while + they are bound by a function application or a let form, stores the + code to be executed for Lisp unwind-protect forms, and stores the C + functions to be called for record_unwind_protect. + If func is non-zero, undoing this binding applies func to old_value; + This implements record_unwind_protect. + If func is zero and symbol is nil, undoing this binding evaluates + the list of forms in old_value; this implements Lisp's unwind-protect + form. + Otherwise, undoing this binding stores old_value as symbol's value; this + undoes the bindings made by a let form or function call. */ struct specbinding { Lisp_Object symbol, old_value; @@ -683,13 +695,17 @@ extern struct specbinding *specpdl_ptr; extern int specpdl_size; +/* Everything needed to describe an active condition case. */ struct handler { + /* The handler clauses and variable from the condition-case form. */ Lisp_Object handler; Lisp_Object var; - int poll_suppress_count; /* No error should exit a piece of code - in which polling is suppressed. */ + + /* Used to effect the longjump out to the handler. */ struct catchtag *tag; + + /* The next enclosing handler. */ struct handler *next; };