diff options
| author | Jim Blandy | 1992-09-22 05:18:34 +0000 |
|---|---|---|
| committer | Jim Blandy | 1992-09-22 05:18:34 +0000 |
| commit | 78ca380c45ea2b38a5f7011afbe58e360f11b9a1 (patch) | |
| tree | 2aec54a6a0dc175bc26c435f25f405cc3310b9d4 /src | |
| parent | 82da7701c884bda5329ca7115d151a5e8c69439c (diff) | |
| download | emacs-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.h | 24 |
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. */ | ||
| 675 | struct specbinding | 687 | struct specbinding |
| 676 | { | 688 | { |
| 677 | Lisp_Object symbol, old_value; | 689 | Lisp_Object symbol, old_value; |
| @@ -683,13 +695,17 @@ extern struct specbinding *specpdl; | |||
| 683 | extern struct specbinding *specpdl_ptr; | 695 | extern struct specbinding *specpdl_ptr; |
| 684 | extern int specpdl_size; | 696 | extern int specpdl_size; |
| 685 | 697 | ||
| 698 | /* Everything needed to describe an active condition case. */ | ||
| 686 | struct handler | 699 | struct 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 | ||