diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 37 |
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 | ||
| 50 | struct backtrace *backtrace_list; | 50 | struct 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 | |||
| 71 | struct 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 | |||
| 87 | struct catchtag *catchlist; | 52 | struct catchtag *catchlist; |
| 88 | 53 | ||
| 89 | #ifdef DEBUG_GCPRO | 54 | #ifdef DEBUG_GCPRO |