aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJim Blandy1992-09-22 05:18:34 +0000
committerJim Blandy1992-09-22 05:18:34 +0000
commit78ca380c45ea2b38a5f7011afbe58e360f11b9a1 (patch)
tree2aec54a6a0dc175bc26c435f25f405cc3310b9d4 /src
parent82da7701c884bda5329ca7115d151a5e8c69439c (diff)
downloademacs-78ca380c45ea2b38a5f7011afbe58e360f11b9a1.tar.gz
emacs-78ca380c45ea2b38a5f7011afbe58e360f11b9a1.zip
* 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.
Diffstat (limited to 'src')
-rw-r--r--src/lisp.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lisp.h b/src/lisp.h
index b8d22f60077..702e0d5b2f4 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -670,8 +670,20 @@ extern void defvar_int ();
670#define DEFVAR_PER_BUFFER(lname, vname, type, doc) \ 670#define DEFVAR_PER_BUFFER(lname, vname, type, doc) \
671 defvar_per_buffer (lname, vname, type, 0) 671 defvar_per_buffer (lname, vname, type, 0)
672 672
673/* Structure for recording Lisp call stack for backtrace purposes */ 673/* Structure for recording Lisp call stack for backtrace purposes. */
674 674
675/* The special binding stack holds the outer values of variables while
676 they are bound by a function application or a let form, stores the
677 code to be executed for Lisp unwind-protect forms, and stores the C
678 functions to be called for record_unwind_protect.
679
680 If func is non-zero, undoing this binding applies func to old_value;
681 This implements record_unwind_protect.
682 If func is zero and symbol is nil, undoing this binding evaluates
683 the list of forms in old_value; this implements Lisp's unwind-protect
684 form.
685 Otherwise, undoing this binding stores old_value as symbol's value; this
686 undoes the bindings made by a let form or function call. */
675struct specbinding 687struct specbinding
676 { 688 {
677 Lisp_Object symbol, old_value; 689 Lisp_Object symbol, old_value;
@@ -683,13 +695,17 @@ extern struct specbinding *specpdl;
683extern struct specbinding *specpdl_ptr; 695extern struct specbinding *specpdl_ptr;
684extern int specpdl_size; 696extern int specpdl_size;
685 697
698/* Everything needed to describe an active condition case. */
686struct handler 699struct handler
687 { 700 {
701 /* The handler clauses and variable from the condition-case form. */
688 Lisp_Object handler; 702 Lisp_Object handler;
689 Lisp_Object var; 703 Lisp_Object var;
690 int poll_suppress_count; /* No error should exit a piece of code 704
691 in which polling is suppressed. */ 705 /* Used to effect the longjump out to the handler. */
692 struct catchtag *tag; 706 struct catchtag *tag;
707
708 /* The next enclosing handler. */
693 struct handler *next; 709 struct handler *next;
694 }; 710 };
695 711